680. MABe Challenge - Social Action Recognition in Mice | MABe-mouse-behavior-detection
本解决方案使用 https://www.kaggle.com/code/ravaghi/social-action-recognition-in-mice-xgboost 中的方法作为基线,并通过高级特征工程和稳健的后处理实现了具有竞争力的性能。下面,我总结了区分此方法与基线实现的关键技术改进。
特别感谢 @ravaghi 提供基线方案!
与基线方法相比,本解决方案实施了更积极的数据过滤:
排除的数据:
UNUSE_LAB = [
"CalMS21_supplemental",
"CalMS21_task1",
"CalMS21_task2",
"MABe22_keypoints",
"MABe22_movies"
]
基线方法仅排除:
train_df = train_df[~((train_df["lab_id"] == "AdaptableSnail") & (train_df["frames_per_second"] == 25))]
CalMS21 和 MABe22 补充/任务数据:
AdaptableSnail fps==25 过滤:
影响: 更干净的训练数据带来:
权衡: 训练数据更少,但质量更高。这是一个优先考虑数据质量而非数量的 deliberate 选择。
实施了15 个用于单鼠行为的专用特征生成器和14 个用于配对交互的生成器,每个生成器捕捉特定的行为方面:
单鼠特征:
配对交互特征:
# 示例:捕捉不同身体部位随时间的协调
sp_ear_left_tail_base = distance(ear_left[t], tail_base[t-10])
这揭示了简单瞬时特征所 missed 的时间协调性。
与仅调整预测阈值的基线方法不同,本解决方案使用 Optuna 同时优化三个参数:
threshold: 0.0-1.0 # 概率 cutoff (步长 0.01)
W: 0-60 frames # 间隙填充窗口
M: 0-30 frames # 最小 segment 长度
间隙填充 (W):
噪声去除 (M):
影响: 这通常通过产生与标注者行为模式匹配的时间连贯预测,将 F1 分数提高 2-5 分。
不同的研究实验室拥有:
实现:
for lab_id in lab_list:
train_subset = train[train.lab_id == lab_id]
# 一起处理来自该实验室的所有视频
# 训练特定于实验室的模型
好处:
def add_body_center_if_needed(ppvid):
if 'body_center' exists: return as-is
elif 'nose' and 'tail_base' exist:
body_center = (nose + tail_base) / 2
elif 'head' and 'tail_base' exist:
body_center = (head + tail_base) / 2
else: fill with NaN
每个特征生成器在计算前验证所需的身体部位:
class BaseGenerator:
def validate(self) -> bool:
# 检查所需的身体部位是否存在
# 如果不可用则优雅地跳过
影响: 无需崩溃或手动干预即可处理跨实验室的 20 多种不同身体部位配置。
def load_saved_trainer(model_path, section, action,
do_modeling=False, do_tuning=False):
# 如果可用则加载预训练模型
# 跳过已完成行为的训练/调整
好处:
def reduce_mem_usage(df):
# int64 → int32 → int16 → int8
# float64 → float32 → float16
# object → category
# 典型减少:50-75%
影响: 能够在 Kaggle 的内存限制内处理 2-3 倍的数据。
| 方面 | 基线 | 本解决方案 | 改进 |
|---|---|---|---|
| 特征数量 | ~50-80 | ~150-250 | 多 2-3 倍 |
| 后处理 | 仅阈值 | 阈值 + W + M | +2-5 F1 分数 |
| 缺失数据 | Try-catch 错误 | 主动验证 | 无崩溃 |
| 代码行数 | ~900 | ~2000 | 组织更好 |
| 内存使用 | 默认 dtypes | 优化 dtypes | 减少 50-75% |
https://www.kaggle.com/code/yono18/mabe-boosting-model-prediction-500-iter
完整的实现,包括所有特征生成器和完整的处理管道,均可在我的竞赛 notebook 中找到。
欢迎将这些技术 adapted 到您自己的解决方案中。
如果您有任何反馈或建议,请留言。
感谢阅读到最后!