返回列表

3rd place solution - GRU, UNET and LGB!

586. Child Mind Institute - Detect Sleep States | child-mind-institute-detect-sleep-states

开始: 2023-09-05 结束: 2023-12-05 健康管理与公共卫生 数据算法赛

第三名解决方案 - GRU、UNET和LGB!

祝贺Kaggle和主办方举办这次比赛,这是一次非常有趣且充满挑战的比赛。在开始之前,特别感谢@kyakovlev,能够与你合作并向你学习是一次非凡的经历。

我们的方法结构

1. 预处理
2. 训练(GRU + UNET + LGB)
3. 推理和后处理

方法结构图

1. 预处理

对于最终提交,我们的GRU + UNET模型仅使用7个特征。我们尝试添加更多特征,但本地验证中没有发现有效的特征。

1.1. 在将序列输入模型之前如何构建它们?

我们决定将序列划分为单日序列,并将粒度从5秒降低到30秒。因此,我们得到了长度为2880的序列,其中通常包含入睡和醒来事件。以下是模型的典型输入:

标准序列示例

1.2. 预处理的关键点和特征

  • 将anglez变为绝对值,这在本地验证中提升了+0.002。

  • 对于仅有的两个变量(anglez和enmo),我们尝试寻找有用的聚合特征(diff、mean、median、skew等),但只有标准差(anglez_abs_stdenmo_std)有效。

  • 检测噪声是我们解决方案的另一个关键点。我们发现在同一序列中相同小时、分钟和秒重复完全相同的值时,这基本上是噪声。图中红线表示我们检测到的噪声:
    噪声检测

  • 为了将时间信息融入模型,我们决定在小时-分钟级别添加2个频率编码变量(一个用于入睡,一个用于醒来)。

  • 一个好的增强技巧是在训练期间反转所有序列,这使我们能够获得更多序列,并将本地验证提升了0.01。

1.3. 比赛中期单模型的消融研究

整个比赛过程中,公开排行榜让我们非常困惑,我们甚至怀疑代码中存在错误。因此,在比赛进行到一半时,我们研究了每个变量在排行榜上的表现,结果如下:

消融研究结果

2. 训练

我们的最佳模型是GRU,单独在本地验证中得到了0.835的分数。

2.1. GRU和UNET -- 训练细节(我们采用相似的训练方式)

  • 增强:仅反转序列
  • 特征数量:7个(anglez_std, enmo_std, noise_day_before, noise_day_after, noise, hour_min_onset, hour_min_wakeup)
  • 目标:2个输出(一个用于入睡,一个用于醒来)
  • 目标转换:向前添加两步,向后添加一步(0,0,0,0,1,0,0,0 -> 0,0,1,1,1,1,0,0)
  • 损失函数:交叉熵

2.2. 排行榜变异性

比赛结束后,我们发现私有排行榜与本地验证的相关性比公开排行榜更高。公开排行榜存在不稳定性,这让我们非常困扰,因为我们真的以为代码中存在错误。
我们最佳的私有提交是这个集成模型:(GRU*0.68 + UNET * 0.2 + LGB*0.12)
CV: ~0.840 / 公开LB 0.784 / 私有LB 0.848

2.3. LGB部分

自从组队以来,我们一直试图让LGB具有竞争力。我们终于在比赛结束前一天开始让它对集成模型有所贡献。因此,我认为在这一部分我们本可以再花几天时间来进一步优化LGB模型。

无论如何,在我们最后一次提交中,可以看到它为私有排行榜贡献了+0.002的提升。
单个LGB模型达到的最高分数是:公开0.757 / 私有0.82

3. 推理和后处理

对于我们最终选择的最佳提交,我们集成了多个模型(8个GRU和2个UNET)。
推理运行时间约为1.5小时。

对于后处理,我们尝试了多种方法,但基本上我们所做的就是按照针对预测优化的特定距离保留峰值。

4. 结论

当然,我们可能会遗漏一些内容,所以欢迎随时提问,我会更新帖子。

这是一个可以用多种方式解决的问题,正如我们在不同解决方案中所看到的。我们要提到这是一场真正具有挑战性的比赛,与其他团队的持续竞争将我们推向了极限(一切都非常激烈)。除此之外,我们希望我们能够帮助实现主办方的使命并为其提供有用的帮助。

GitHub代码地址:https://github.com/FNoaGut/child-mind-institute-detect-sleep-states-3rd-place-solution

作者信息:
Fnoa(Kaggle Master)
团队成员:Fnoa 和 Konstantin Yakovlev(Kaggle Grandmaster)
比赛排名:第3名
同比赛其他方案