返回列表

15th place solution

665. CMI - Detect Behavior with Sensor Data | cmi-detect-behavior-with-sensor-data

开始: 2025-05-30 结束: 2025-09-02 健康管理与公共卫生 数据算法赛
第 15 名解决方案
标题:第 15 名解决方案
作者:D.Imanishi (Grandmaster)
发布时间:2025-09-03

祝贺所有获奖者!我也想感谢组织者准备了如此激动人心的比赛。
我从一开始就在这项比赛上投入了大量的时间和精力,所以真的很高兴最终获得了金牌。

总体总结

我的方法中的关键因素是 (1) 构建多样的模型并进行集成,(2) 利用之前推断的测试样本进行后处理。创建多样模型的想法灵感来自我在 HMS 竞赛 中的金牌解决方案。由于 HMS 也处理时间序列传感器数据,本竞赛中的一些模型想法直接来自那段经验。

模型

所有模型的通用设置

  • 分别为 仅 IMUIMU + TOF + THM (全部) 训练了单独的模型。
  • 训练了五个不同的模型 (i–v),并通过加权平均进行集成。
  • 使用了公开分享的 IMU 特征集。
  • 18 类输出。
  • 采用标准的 交叉熵损失 (Cross-Entropy loss)
  • 增强方法因模型略有不同,但 mixup 始终有效 (plot-2DCNN 除外)。
  • 对于超过 224 的序列,使用最后 224 个时间步;对于较短的序列,应用填充 (padding)。
  • 预处理:应用 均值 - 标准差归一化 (mean-std normalization) (plot-2DCNN 除外,它使用固定值 clipping)。
  • 分层组 K 折交叉验证 (StratifiedGroupKFold, 5 折)

i) raw-2DCNN

这个想法是由 HMS 竞赛中的一位队友提出的,在我的五个模型中取得了最佳性能。2DCNN 的输入图像如下。除 TOF 外的所有信号被堆叠成 16 像素,而 TOF 保持未堆叠。将宽度放大一倍(宽度 448 像素)进一步提高了分数。模型架构是 EfficientNetV2-B2 (仅 IMU 为 B1)。

raw-2DCNN 输入图像

ii) plot-2DCNN

这是我在 HMS 中个人使用的想法。2DCNN 的输入图像如下。TOF 部分的处理与 raw-2DCNN 相同。模型架构是 EfficientNetV2-B1。

plot-2DCNN 输入图像

iii) 1DCNN-GRU-Attention

公开 Notebook 模型的轻微修改版本。

iv) 1DCNN-BERT

与 iii) 相同,只是 GRU-Attention 模块被替换为 BERT。

v) 1DCNN & Transformer 混合

基于 过去竞赛解决方案中使用的模型,但调整了更小的 dim, ksize 和更少的层数。

后处理

在比赛截止日期前两天,我发现了这项技术并实现了显著的分数提升 (~+0.010)。基本想法与 这个讨论帖 中讨论的类似。
我将提交代码中的 prediction() 函数修改为类方法,将之前推断样本的预测存储在 self.history 变量中。这允许模型访问过去的预测。对于每个主体 ID,我统计每类的预测次数,然后惩罚属于高计数类的预测。

交叉验证 & 榜单分数

模型 仅 IMU 交叉验证 全部交叉验证 公开榜 私有榜
raw-2DCNN 0.7972 0.8773 - -
plot-2DCNN 0.7695 0.8632 - -
1DCNN-GRU-Attention 0.7999 0.8437 - -
1DCNN-BERT 0.7834 0.8385 - -
1DCNN & Transformer 混合 0.7883 0.8282 - -
5 模型集成 0.8211 0.8945 0.868 0.846
集成 + 后处理 - 0.9044 0.884 0.858
同比赛其他方案