665. CMI - Detect Behavior with Sensor Data | cmi-detect-behavior-with-sensor-data
祝贺所有获奖者!我也想感谢组织者准备了如此激动人心的比赛。
我从一开始就在这项比赛上投入了大量的时间和精力,所以真的很高兴最终获得了金牌。
我的方法中的关键因素是 (1) 构建多样的模型并进行集成,(2) 利用之前推断的测试样本进行后处理。创建多样模型的想法灵感来自我在 HMS 竞赛 中的金牌解决方案。由于 HMS 也处理时间序列传感器数据,本竞赛中的一些模型想法直接来自那段经验。
这个想法是由 HMS 竞赛中的一位队友提出的,在我的五个模型中取得了最佳性能。2DCNN 的输入图像如下。除 TOF 外的所有信号被堆叠成 16 像素,而 TOF 保持未堆叠。将宽度放大一倍(宽度 448 像素)进一步提高了分数。模型架构是 EfficientNetV2-B2 (仅 IMU 为 B1)。
这是我在 HMS 中个人使用的想法。2DCNN 的输入图像如下。TOF 部分的处理与 raw-2DCNN 相同。模型架构是 EfficientNetV2-B1。
公开 Notebook 模型的轻微修改版本。
与 iii) 相同,只是 GRU-Attention 模块被替换为 BERT。
基于 过去竞赛解决方案中使用的模型,但调整了更小的 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 |