626. NeurIPS - Ariel Data Challenge 2024 | ariel-data-challenge-2024
非常感谢组织者举办这场真正鼓舞人心的竞赛!我们祝愿 Ariel 任务及其团队一切顺利!
我们的解决方案分为四个主要阶段:
相应代码可在此 Notebook 中找到:https://www.kaggle.com/code/skril31/adc-2024-space-coders
每个阶段将在下面详细描述。在测试集上的总计算时间约为 1.5 小时,使用 4 个 CPU 进程。
校准和空间求和
这一步主要反映了组织者提出的校准过程(校准 Notebook),并进行了一些旨在提高信噪比 (SNR) 的修改:
加权和死像素缓解
对数据进行加权,以便在光谱轴平均期间优先考虑具有较高 SNR 的波长。对于每个波长,权重计算为出凌 (out-of-transit) 信号均值与其方差的比率。
此外,为了减轻死像素对凌日深度重建的影响,当存在死像素时,我们对 AIRS 波长的权重应用惩罚因子。惩罚因子根据死像素的位置而变化,对更可能影响凌日深度的中心像素应用更大的惩罚。
我们曾尝试对热像素也应用惩罚因子,但这降低了性能。
此阶段侧重于从预处理数据中估计每个波长的 (Rp/Rs)² 比率。
去趋势和凌日深度估计
凌日深度的计算基于时间信号的多项式拟合(最高 5 度),排除入凌 (ingress) 和出凌 (egress) 过渡,并对凌日部分应用乘法移位。
我们使用 scipy.optimize.curve_fit 以及以下模型函数,并在过渡区域使用较高的不确定性 sigma:
def fit_fn(ts, transit_depth, *trending_coeffs):
return Polynomial(trending_coeffs)(ts)* (1. - transit_mask * transit_depth)
波长平均
为了减少噪声,优化应用于 AIRS neighboring 波长 [k - N, k + N] 上加权信号的平均值(包括 282 个目标之外的额外波长)。作为噪声减少与因光谱平均导致的精度损失之间的妥协,我们对于前 200 个波长选择 N = 8,对于 SNR 非常低且光谱动态显然较低的最后一个波长选择 N = 20。
入凌和出凌过渡的确定
通过与高斯函数的前两个导数进行卷积来检测过渡:
光谱提取的改进
度数选择:
我们依次评估 2、4 和 5 度,选择具有最佳 RMS 误差的度数,并用度数的平方进行惩罚。对过渡外的每个段应用 savgol 滤波器以确保代表性的 RMS 差异。
这种度数选择降低了在凌日区域过拟合噪声的风险,否则会降低凌日深度估计。
此外,将最大度数限制为首次整体信号评估所选的度数被证明是有用的。
全局去趋势和窄波长范围估计:
最后几天让我们在排行榜 (LB) 上超过 0.700 的精度和分数提升,在于首先在更宽的波长范围(每侧最多 100 个)上评估更可靠的去趋势多项式,并在后续优化中保留该多项式,仅针对初始范围使用 3 个参数:偏移量、幅度因子和研究的凌日深度。
对于星体 0 和 1(CH4 峰值)周围的波长 183,也考虑了更窄的 N = 5 范围,而不是 N = 8。
此阶段涉及经验启发式和基于规则的调整。
光谱动态考虑
使我们能够达到 LB 0.65 的主要特征是根据光谱的动态分离光谱的后处理和 sigma 估计。
我们最初基于 (Rp/Rs)² 比率的范围来确定动态。然后我们切换到与训练集标签的最佳相关性评估。在最终提交中,我们包含了具有随机化学成分的额外 Taurex 生成样本(私人 LB +0.005)。
为了提高分数,我们进行的另一个修改是稍微将平均线向原始光谱方向扭曲(与相关性程度成正比)。
偏移校正
随后我们通过在平均 Rp/Rs 比率的基础上稍微增加光谱值,达到了 LB 0.68。我们最初假设这是为了抵消临边昏暗 (limb darkening) 的影响,但这最有可能是为了抵消过渡开始和结束的代表性不足(检测步骤未能捕捉到行星开始进入或离开星体边缘时的早期斜率变化)。
[编辑:这确实可能与 @cnumber 在 此处 展示的前景添加有关]
光谱适应
应用 savgol 滤波器和偏移校正后,执行额外的调整:
Sigma 估计
Sigma 随波长变化。它是经验构建的,考虑更深的凌日和远离均值的值具有更高的 sigma。根据识别的光谱动态(低/高)使用两组不同的参数。
一旦完成每颗行星的处理,就应用主成分分析 (PCA) 来细化光谱,去除残留噪声和伪影。此步骤按星体应用,保留前 5 个分量进行重新投影,将训练集上的 RMSE 从 4.3e-5 降低到 3.3e-5,并将 LB 分数提高 0.015。