返回列表

20th place solution

545. IceCube - Neutrinos in Deep Ice | icecube-neutrinos-in-deep-ice

开始: 2023-01-19 结束: 2023-04-19 物理与天文 数据算法赛
ICE TEAM 第20名解决方案

ICE TEAM 第20名解决方案

团队成员:junseonglee11 (@junseonglee11) 和 Ayaan Jang(@ayaanjang)。我们集成了6个LSTM模型(2个不同版本)。修改了Robin Smith和Robert Hatch的Notebook。

我们的Notebook:

参考项目

数据预处理

我们的代码: https://www.kaggle.com/code/junseonglee11/icecube-data-to-tfrecord-v2-1

  1. 参考部分:预处理数据生成96个时间序列数据,每个包含6个特征:

    • 传感器信号测量时间
    • 传感器信号强度
    • 传感器信号质量
    • 接收传感器的X、Y、Z坐标(3个特征)
  2. 对6个特征进行特征工程以提升RNN(残差神经网络)预测精度(在90个数据文件而非完整数据集上训练,然后实验特征转换):

    • 使用原始特征:LB 1.015
    • 添加时间差:LB 1.0128
    • 用时间间隔(下一测量时间与当前测量时间之差)替代传感器信号测量时间:
      当前与下一时间点间传感器位置差的意义取决于时间间隔(例如1秒内移动10米与10秒内移动1米速度差10倍)。但传感器信号的绝对测量时间无法反映这一点,因此确定时间间隔比测量时间更适合作为输入。
    • 添加坐标差:LB 1.0115
      添加三个特征:下一与当前传感器位置在X、Y、Z坐标上的差值: 与时间间隔特征类似,确定时间点间坐标值差能更好反映中性粒子的方向信息。但当用坐标差值替代传感器xyz坐标时,精度下降,因为非相邻时间点间传感器坐标差值包含重要信息。
  3. 将所有上述输入转换为TensorFlow TFRecord格式以最小化CPU内存使用并加速训练。

模型训练与推理

我们的代码(模型): https://www.kaggle.com/code/junseonglee11/20th-tensorflow-tfrecord-tpu-lstm-line-fit-train

模型架构图
  • 模型概述: 双向LSTM(长短期记忆)7层 + 批标准化 + 线性拟合特征拼接 + 全连接层
  • 激活函数: GELU(高斯误差线性单元)激活层
  • 损失函数: 稀疏分类交叉熵损失
  • 训练指标: 准确率
  • 优化器: RAdam(修正Adam)优化器
  • 集成(模型2个版本):
  • 在10折数据集的第0折上训练模型
    • 训练:594数据集,验证:66数据集:使用仅1个验证集训练模型
    • 训练:659数据集,验证:1数据集:从每个版本模型中选出Mean Angular Error最低的4个模型(共8个模型)
    • 通过交叉验证确定最优集成权重

数据后处理

我们的代码(数据后处理): https://www.kaggle.com/code/ayaanjang/20th-tensorflow-lstm-model-inference-merged

原始代码: 以下代码中功率值未平方。通过对每个类别的预测概率和该类代表粒子方向的加权平均,计算中子的方位角和天顶角方向。

修改后代码: 在模型预测值中添加功率值的平方。仅基于各类别方向和模型预测概率推导结果并不理想。尝试使用指数、对数函数、激活函数等修改预测概率以提升后处理阶段效果。

改进: 当模型预测类别概率被1.35次方后,Mean Angular Error降低约0.002。这为预测结果中概率较高的类别赋予了适当额外权重。

同比赛其他方案