返回列表

48th Place Solution (Silver Medal)

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

开始: 2025-06-26 结束: 2025-09-24 物理与天文 数据算法赛
第 48 名解决方案(银牌)

第 48 名解决方案(银牌)

使用 CNN followed by ResNet 预测光谱,并使用线性回归预测 sigma

作者: Ibrahim Habib
发布日期: 2025 年 9 月 27 日

首先,我要感谢本次大赛的所有组织者所付出的工作和努力。
我还要感谢所有分享想法和代码的参与者,尤其是去年比赛的金牌得主。

第 48 名解决方案

数据校准

我这里没有做什么特别的。我遵循了标准校准 notebook,并将 AIRS 的分箱值改为 4,FGS 的分箱值改为 48。

凌日检测

这里的技术复制自 去年的第一名解决方案。曲线被平滑处理,然后利用最小和最大导数值的点,估算出凌日下降和上升的时间。这些只是初始估计,稍后会进行细化。

为了获得凌日下降开始和结束的确切时间,我们截取信号,仅包含从信号开始到初始估计 + 常数值的值。然后我们找到 4 个值,abt1t2,使得信号与以下函数之间的 RMSE 最小化。

Formula

其中 t1 < t2a > b。所需的值是 t1t2。这些分别是凌日下降阶段开始和结束的确切时间。凌日上升开始和结束的确切时间类似计算,分别称为 t3t4

特征提取

这部分深受去年的 第 6 名解决方案Vitaly Kudelya 的 Notebook 的启发。对于每个波长,提取了 7 个凌日深度值。值的提取方式如下。

首先,对于每个行星,将波长分成单独的组,相邻波长进入同一组。同一组中的波长一起平均(跨波长),为每组创建一条白曲线。

然后,以前面讨论的方式检测凌日相位。

接下来,我们计算值 s,以最小化 np.concatenate([signal[:t1], signal[t2:t3] * (s + 1.0), signal[t4:]]) 的 MAE。更非正式地说,我们找到这样一个值,当乘以凌日期间部分时,它几乎等于凌日外期间部分,然后我们从该数字中减去 1。这些值非常接近目标值;因此,它们是模型的绝佳特征。

最后,我们将该 s 值赋予组中的每个波长。

这进行了 7 次,每次使用不同数量的组。使用的值为 1、2、4、8、16、32 和 64。

现在我们在 283 个波长中的每一个上都有 7 个值。

光谱预测

我们拥有形状为 (num_planets, 7, num_wavelengths) 的特征。我们还提取每个行星的 Rs 和 i 值,制作形状为 (num_planets, 2) 的张量。两个张量都传递给神经网络。

由于可以从相邻波长中提取重要信息,特征张量通过三个 1D-CNN 层,卷积核大小递增,中间有 ReLU。最后一个 CNN 的 out_channels 值为 1。其输出被 squeeze 形成形状为 (batch_size, num_wavelengths) 的张量。

CNN 输出在第二个轴上与恒星信息(Rs 和 i)连接。数据然后传入三个 ResNet 块。最终输出形状为 (batch_size, num_wavelengths)。

模型使用 Adam 优化器和 MSE 损失训练 300 个 epoch。

最终输出是预测的光谱。

Sigma 预测

预测 sigma 值证明具有挑战性,不同的方法显著影响了公共 LB 分数(过于自信的方法在 LB 上得分为 0.0)。两种解决方案显示出了很好的结果。

第一种是计算每个行星预测光谱的标准差。然后,将这些值缩放到新的均值。另一种是计算每个行星白曲线的方差,也将其缩放到新的均值。

对这两个特征和预测光谱的均值执行线性回归显示出巨大的改进。

代码

你可以 在此 访问获奖 notebook。还有一个包含获奖提交中使用的代码和其他实验的项目仓库。它还包含有关代码以及如何在 Kaggle 提交中使用它的更多信息。你可以 在此 访问它。

参考文献与致谢

有太多人的工作帮助我构建了我的方案。为了保持这个 write-up 简短,我将参考文献部分写在了该项目的 GitHub 仓库中。你可以 在此 找到参考文献部分。

同比赛其他方案