680. MABe Challenge - Social Action Recognition in Mice | MABe-mouse-behavior-detection
我们感谢 MABe 挑战赛的组织者举办了一场引人入胜的比赛,并在早期阶段提供了详细、及时的澄清。
我们使用了几个探索性笔记本来理解数据集的结构、局限性和隐含假设。这些分析为关键的建模选择提供了依据,包括任务 formulation、负样本采样、校准策略和后处理。
复现解决方案所需的完整源代码可在以下仓库找到:
GitHub 仓库 https://github.com/T0chka/mabe_12th_place_solution数据准备为每个 video_id 和 whitelist 中的每个 (agent_id, target_id) 对的所有帧与轨迹的组合(train/test csv 文件中的 behaviors_labeled 列)。标注了给定行为的帧被视为该动作的正例;未标记的帧被视为背景。
所有模型重用由三组组成的公共特征表示:
不变量和单鼠标描述符按 agent 体长归一化。
对于部分模型,基础特征集增加了为 tuned subset of base variables 计算的窗口时间特征。具体而言,管道附加了三个滞后窗口的滚动均值摘要,提供历史感知协变量。
最终集成包括 5 个模型家族:XGBoost, LightGBM, Catboost, PyBoost, 和 TABM。
基于 Boosting 的模型针对每个实验室和每个动作单独训练。在 LightGBM 中,正帧的权重与相应动作运行长度成反比,防止长连续事件主导损失。由于原始 boosting margins 在动作和实验室之间不可直接比较,我们应用了两步 Platt 校准及先验校正,从 out-of-fold (OOF) 预测中学习。
TABM 模型针对每个实验室使用 one-vs-rest 公式训练,每个动作有独立的 sigmoid heads。
集成使用在 OOF 上拟合的权重,单模型得分为:
| 模型 | Public Score | Private Score |
|---|---|---|
| XGBoost | 0.521 | 0.489 |
| Catboost | 0.517 | 0.491 |
| PyBoost | 0.512 | 0.488 |
| TABM | 0.506 | 0.487 |
| LightGBM | 0.492 | 0.477 |
对于基于 boosting 的模型,未标记帧针对给定动作分为两组:
折叠的最终训练集由所有正例加上从上述两个池中按视频采样的负例组成。
对于 TabM,未标记帧按 (video, agent, target) 三元组下采样。由于模型是在多类设置下训练的,因此未应用这种负例类型区分。
折叠是在视频级别构建的。每个模型应用 5 折交叉验证,并为整个训练集生成完整的 out-of-fold (OOF) 预测。这导致了良好的 CV-LB 相关性。所有 5 个模型家族在推理时集成其特定折叠的模型。
帧级预测被过滤到 whitelist,仅保留有效的 (video, agent, target, action) 组合。然后使用滚动窗口应用平滑,窗口大小对应于训练数据中观察到的中位动作持续时间。动作特定阈值在 OOF 上拟合,并在平滑后应用;每帧选择一个动作使用 argmax。具有相同选择动作的连续帧随后合并为区间,形成最终提交。