返回列表

3rd place solution

680. MABe Challenge - Social Action Recognition in Mice | MABe-mouse-behavior-detection

开始: 2025-09-18 结束: 2025-12-15 智慧养殖 数据算法赛
第三名解决方案 - LSTM 与 XGBoost 的融合

第三名解决方案

LSTM 与 XGBoost 的融合

作者: Youri Matiounine (GRANDMASTER)
竞赛排名: 第 3 名
发布时间: 2025-12-16

这是我的最终脚本链接:

https://www.kaggle.com/code/ymatioun/mabe-blend-ym

该脚本适用于训练和提交,基于"nn_mode"和"CFG.mode"中的设置。但训练是离线完成的,推理时使用预训练模型——以减少运行时间并简化流程。

我的解决方案是神经网络和 XGBoost 的融合。几个版本的 NN 和 XGB 使用略微不同的设置训练并融合在一起。

神经网络是带有几个密集层(dense layers)的 LSTM。输出是所有允许动作的"softmax"。不允许的动作会被掩码屏蔽(masked out)。“实验室代码”通过类别嵌入层(categorical embedding layer)处理并添加到输入中。

大部分精力放在了特征工程上。我最终得到了大约 60 个特征——主要是距离、角度、速度等。还有一些元数据特征。

输入数据是为所有实验室组合的,选择了大多数数据中存在的 5 个身体部位。这样模型就能够学习所有实验室中的数据模式。

训练使用小批量(batch size 为 16 或 32),使用"CosineDecayRestarts"调度器。

XGBoost 模型基于最好的公共 notebook,进行了许多更改。以下是一些更改:

  • 添加了新特征
  • 移除了低重要性的特征
  • 基于 F1 指标的早停(early stopping)
  • 在使用前平滑预测概率
  • 优化模型超参数

后处理:融合的预测概率在超过阈值时转化为二元预测。阈值因实验室和动作而异;它是通过网格搜索(grid search)在折外预测(out-of-fold predictions)上优化的。当同一帧预测了多个动作时,保留概率与阈值比率最高的那个。

利用数据特性:我研究过这一点,但没有从中获得太多好处。但存在一些潜在可利用的数据特性:

  • 对于某些实验室"AdaptableSnail"的视频,动作被错误标记,组织者没有修复此问题——这在 这里 讨论过
  • 对于实验室"BoisterousParrot",大多数动作的长度是 15 帧的倍数
  • 对于实验室"CautiousGiraffe",许多动作的长度为 9 帧,鼠标 1 和鼠标 2 交替攻击
我怀疑这些(以及可能的其他)数据特性可能会导致利用它们的“魔法”解决方案,就像过去在许多其他竞赛中发生的那样——看看这里是否发生了这种情况(我在查看其他解决方案之前写了这篇文章,所以还没有这个问题的答案)。

同比赛其他方案