返回列表

7th Place Solution

670. NeurIPS - Ariel Data Challenge 2025 | ariel-data-challenge-2025

开始: 2025-06-26 结束: 2025-09-24 物理与天文 数据算法赛

第 7 名解决方案

副标题:物理 + 神经网络 + Boosting + 伪标签

作者:@horikitasaku@takaito

发布时间:2025-09-25

竞赛排名:第 7 名

引言

我们(@horikitasaku@takaito)想对主办方举办如此出色的比赛表达诚挚的感谢。
特别感谢工作人员,如 Sohier Dane @sohier 所有的辛勤工作和支持。

这确实是一场设计精良的比赛,清晰地反映了组织团队的专业性和科学严谨性(例如 @gordonyip 及其同事)。物理学家一直是我最尊重的群体。

我们的方法可以总结为以下几个阶段:

  • 步骤 0:预处理
  • 步骤 1:信号、凌日及特征提取;计算基础 wl_preds (Horikita)
  • 步骤 2:使用神经网络进行差异修正及基础 sigma 预测 (takaito)
  • 步骤 3:使用梯度提升模型进行 Sigma 尺度调整 (Horikita)
  • 步骤 4:伪标签 (takaito)

步骤 0:预处理

这里我们基本上完全遵循了 Pascal 的 notebook,并处理了 obs0obs1

步骤 1:信号、凌日、特征 – 计算基础 wl_preds (CV: ~0.42, LB: -0.45)

步骤 1.1:相位检测器 (Phase Detector)

凌日检测的核心思想是利用信号梯度的极值
我假设凌日边界会出现在导数曲线的特征位置上。整体流程如下:

  • 平滑:平滑信号及其梯度以去除高频噪声。

  • 异常值移除:裁剪超出 5σ 的梯度值,将边缘设为零,然后应用额外的高斯平滑。

  • 阈值扫描

    • 负阈值 (neg_thr) → t1, t2 (入凌)
    • 正阈值 (pos_thr) → t3, t4 (出凌)
  • 局部采样:在 (t1, t2) 和 (t3, t4) 周围采样,并比较基线与凌日片段。如果入凌/出凌深度太浅,则将边界向序列的开始或结束移动。

  • 后处理:修复异常样本。在初始版本中未实现此步骤,但在数据集更新后我观察到了 Phase Detector 的 bug。经过分析,我发现许多异常信号,因此添加了此步骤。
    p1

Phase Detector Visualization

步骤 1.2:基于物理的建模和特征提取

这里我参考了 Ariel 2024 的两个顶级解决方案

不幸的是,这部分对 sigma 预测几乎没用。
在我的单独实验中,使用这些 sigma 通常会使最终分数降低约 0.1,低于理论上限分数

所以真正的价值在于生成基础 wl_preds源自物理过程的特征。我们采用了两种主要模式:

  • 模式 1(主要):基于 xomox 的流程,做了一些修改:

    • 限制基线多项式的阶数为 2–3(更高阶导致某些信号不稳定)。降低基线多项式的阶数为我带来了约 0.01 的提升。
    • 调整了分箱和采样设置。
    • 引入了更复杂的高斯过程 (GP)。在我们的案例中,核设计结合了多个组件——具有不同长度尺度的 RBF 项、捕捉重复结构的周期核、用于局部平滑的 Matérn 核、与波长特征关联的线性核,以及用于鲁棒性的白噪声核。非常有趣的是,虽然 GP 本身对提高 sigma 预测没有直接效果,但它在稳定所有下游任务方面发挥了意想不到的重要作用,包括我独立测试的线性修正和 takaito 开发的神经网络模型。
      结果,我们获得了稳定的 wl_preds、重构信号、理想凌日模型和物理衍生特征。
      GP Model
  • 模式 2(次要):实现了 cnumber 的方法,只做了一些 minor changes。这提供了一组独立的 wl_preds 和额外特征。

步骤 2:使用神经网络进行差异修正和基础 sigma 预测 (CV: ~0.56x, LB: ~0.55x)

受 ADC2024 有效方法的启发,我们没有直接预测 wl,而是训练深度学习模型来预测步骤 1 中粗略计算的 wl_preds 与真实值 wl_true 之间的差异 wl_diff。换句话说,神经网络执行残差修正

基本信息

模型输入/输出

  • 使用步骤 1 中的 wl_preds 作为基础预测。
  • 目标变量是 wl_diff (= wl_true - wl_preds)
  • 输入特征包括信号、凌日、掩码、位置和各种提取的特征。

模型架构

  • 多层感知机 (MLP)
  • BiGRU + CNN + MLP
  • BiLSTM + CNN + MLP
  • BiLSTM + CNN + BiLSTM

关键技术

  • 使用分位数回归,以便模型也能预测 sigma。
  • 应用对抗权重扰动 (AWP)
  • 通过沿时间轴翻转信号和凌日序列进行数据增强。
  • 添加噪声以进行进一步增强。

无效的方法

  • 更复杂的模型架构没有带来改进。

步骤 3:使用梯度提升进行 Sigma 尺度调整 (LB +~0.01)

直观上,步骤 2 已经提供了每个波长的 σ (step2_sigma),但在样本级别仍存在系统性偏移。
为了解决这个问题,我们将偏移总结为一个单一的标量比例因子 a,分别针对 FGS (wl0) 和 AIRS (所有其他波段) 学习。想法很简单:

  • 仅修正整体尺度
  • 保持波长间的相对形状不变

具体操作:

  1. 边界搜索:使用 minimize_scalar(method='bounded') 寻找最优的 a
  2. 离散化:将 a 四舍五入到 0.01 增量,以防止过拟合评估指标中的随机噪声。

最后,我们训练了一个梯度提升模型来学习这个 a 并应用它进行缩放,从而稳定了 sigma 预测。

sigma_scaled[:, 0] = (
    np.array(mean_a_preds_fgs)
    * step2_sigma[:, 0]
).clip(CFG.MIN_SIGMA)

# AIRS
sigma_scaled[:, 1:] = (
    (a_preds_airs).reshape(-1, 1)
    * step2_sigma[:, 1:]
).clip(CFG.MIN_SIGMA)

步骤 4:伪标签 (LB: ~+0.004)

为了提高排行榜分数,我们使用测试数据及其预测值重新训练了模型。
为避免过拟合,我们仅使用 wl_diff 的预测值,使用预测的 sigma 值。

(步骤 2 涉及检查大量学习曲线,我们观察到即使 MSE 过拟合训练数据,验证性能也很少恶化。这让我们有信心在这里应用伪标签。)

以下是我们观察到的趋势:

  • MSE 趋势:几乎没有折数显示出明显的过拟合。
  • 比赛指标趋势:更容易过拟合。
    MSE Transition
    Competition Metric Transition
同比赛其他方案