返回列表

10th solution, good input image can generate a good single model (Opensource single model with LB233 PB287)

600. HMS - Harmful Brain Activity Classification | hms-harmful-brain-activity-classification

开始: 2024-01-09 结束: 2024-04-08 临床决策支持 数据算法赛

第十名解决方案:好的输入图像可以生成好的单一模型(开源单一模型,LB233 PB287)

作者: gezi | 排名: 第10名 | 发布日期: 2024-04-09

以下是快速分享,后续可能会修改。

1. 将更多信息作为图像输入可以获得更好的单一模型,LB 为 0.23,PB 为 0.29。

关键技巧

  • 使用 19 个原始输入(不同特征)的 'banana' 数据,而不是 4 个(LL、LP、RL、RP),感谢 Chris 的精彩分享。
  • 将中间 10 秒的部分添加到图像中(思路来源于 https://www.kaggle.com/code/rafaelzimmermann1/no-ensemble-new-spectrograms-label-refine)。
  • 将原始 EEG 数据作为图像的一部分加入。
  • 使用 Adan 优化器。
  • 使用 efficientvit_b2 和 mixnet_xl 作为 timm 主干网络。efficientvit 明显优于 efficientnet,CV 从 0.237 提升到 0.23。
  • 使用 torchaudio 进行 STFT 和梅尔提取,但我最好的单一模型仍然使用 scipy.spectrogram,效果更好,原因不明。
  • 对每个 EEG ID 使用精确的 EEG 偏移进行训练(优先随机 EEG 子 ID 与高票数)。
  • 对所有 EEG 子 ID 进行评估,并对每个 EEG_ID 进行归一化(每个 EEG_ID 总权重为 1)。
    我的 EEG 子 ID 处理策略比 Chris 的更复杂,但现在确认该策略效果更差,您可以参考 https://www.kaggle.com/competitions/hms-harmful-brain-activity-classification/discussion/492631
  • 使用投票数 ≥10 的数据进行训练,权重为 60。
    阶段 1 训练即可,阶段 2 仅使用投票数 ≥10 的数据似乎能略微提升 LB 和 PB,因为它降低了癫痫预测率,但没有足够时间验证(可能损伤 CV),且未用于最终集成。
    由于投票数 ≥10 和 <10 的数据分布不同,我为这两类数据集分别使用了不同的线性头,这一做法在 CV、LB 和 PB 上都有小幅提升。例如,单个 efficientvit_b1 模型的 PB 从 0.2967 提升至 0.29525。
  • 最终使用 20 个模型进行集成,实际上我的模型多样性不高,集成仅将最佳单一模型的 PB 从 2896 提升至 2866。我加入了一个仅使用 Kaggle 谱图的弱模型。
    有趣的是,与简单平均相比,使用 Optuna 生成模型权重只能略微提升 CV(如从 0.206 到 0.2058),但在 LB 和 PB 上加权结果更好。
  • 推理笔记本:5 折 + 1 完整数据的单一模型,LB 0.2337,PB 0.287。
    查看 Notebook
附件图片
同比赛其他方案