返回列表

2nd place solution

555. Parkinsons Freezing of Gait Prediction | tlvmc-parkinsons-freezing-gait-prediction

开始: 2023-03-09 结束: 2023-06-08 临床决策支持 数据算法赛
帕金森步态冻结预测竞赛第二名解决方案

帕金森步态冻结预测竞赛第二名解决方案

作者: Takoi (Kaggle Grandmaster)
发布时间: 2023年6月9日
竞赛排名: 第2名
团队成员: Takoi, hakubishin3, charmq

首先,感谢主办方组织这场精彩的竞赛,也祝贺所有获奖者!

解决方案概览

  • 我们为tDCS FOG和DeFog分别设计了独立的模型
  • 两个模型均使用GRU神经网络进行训练
  • 每个ID的数据被分割成指定长度的序列。训练时使用较短序列(如tdcsfog用1000,defog用5000),推理时使用较长序列(如tdcsfog用5000,defog用30000),这是本次竞赛中最关键的因素
  • 对于DeFog模型,我们使用'notype'数据配合伪标签进行训练,显著提升了分数;通过利用Event列,可以创建鲁棒的伪标签
  • 虽然CV分数和公开分数通常相关,但随着公开分数提高,它们变得不相关。此外,CV分数变化较大且偶尔异常高。因此我们使用公开分数进行模型选择,而用CV指导序列长度的选择

tDCS FOG模型

  • 特征工程
    • 三个提供的加速度计数据
    • 对每个加速度计进行特征工程:
      • 前向和后向加速度的差分
      • 加速度的累积和
  • 标准化
    • 使用RobustScaler
    • 每个ID单独标准化
  • 序列创建方法
    • 训练阶段:
      • 序列长度:1000
      • 从起始位置每500步创建一个序列
    • 推理阶段:
      • 序列长度:3000或5000(数据小于5000用3000,否则用5000)
      • 从起始位置每1500或2500步创建一个序列
      • 预测时使用序列的750/1250到2250/3750部分
      • 起始段使用0到2250/3750,结束段使用750/1250到序列末尾
  • 模型架构
    • 每个目标变量集成4个模型
    • 通用设置:
      • 模型:GRU
      • 交叉验证:StratifiedGroupKFold(按Subject分组)
      • 损失函数:BCEWithLogitsLoss
      • 优化器:AdamW
      • 学习率调度:get_linear_schedule_with_warmup(比cosine调度效果更好)
    • Model1:
      • 三个目标使用相等的损失权重
      • CV分数:0.493(序列长度3000/5000)
      • 集成权重:0.2
    • Model2:
      • 一个目标权重0.6,其余两个各0.4
        • StartHesitation:0.6, Turn&Walking:0.4
        • Turn:0.6, StartHesitation&Walking:0.4
        • Walking:0.6, StartHesitation&Turn:0.4
      • 在权重0.6的目标最佳表现的epoch保存模型
      • 仅使用权重0.6的预测结果
      • CV分数:0.520
      • 集成权重:0.4
    • Model3 & Model4:
      • 两个目标权重0.8,剩余一个0.2
        • StartHesitation & Turn:0.8, Walking:0.2
        • StartHesitation & Walking:0.8, Turn:0.2
        • Turn & Walking:0.8, StartHesitation:0.2
      • 在权重0.8的两个目标综合最佳表现的epoch保存模型
      • 仅使用权重0.8的预测结果
      • CV分数:0.536
      • 集成权重:0.4
    • 集成结果:CV分数0.537

DeFog模型

  • 特征工程
    • 三个提供的加速度计数据
    • 对每个加速度计计算前后差分
  • 标准化
    • 使用StandardScaler
    • 每个ID单独标准化
  • 序列创建方法
    • 训练阶段:
      • 序列长度:5000
      • 从起始位置每2500步创建一个序列
    • 推理阶段:
      • 序列长度:15000或30000(数据小于200000用15000,否则用30000)
      • 从起始位置每7500或15000步创建一个序列
      • 预测时使用序列的3750/7500到11250/22500部分
      • 起始段使用0到11250/22500,结束段使用3750/7500到序列末尾
  • 模型架构
    • 集成5个模型
    • 通用设置:
      • 模型:GRU
      • 交叉验证:StratifiedGroupKFold(按Subject分组)
      • 优化器:AdamW
      • 损失函数:BCEWithLogitsLoss
      • 学习率调度:get_linear_schedule_with_warmup
      • 仅当'Valid'和'Task'均为True时计算损失
    • model1:
      • CV分数:0.279
      • 集成权重:0.35
    • model2:
      • 使用第一轮伪标签
        • 使用硬标签:仅当'Event'=1时标签为1,否则为0
        • 基于三个目标预测中的最高值确定标签
        • 使用model1的15000长度序列推理结果
      • 伪标签显著提升了公开和私有分数
      • CV分数:0.306
      • 集成权重:0.25
    • model3:
      • 使用第二轮伪标签
      • CV分数:0.313
      • 集成权重:0.25
    • model4:
      • 增加GRU隐藏层大小
      • 使用第一轮伪标签
      • CV分数:0.3393
      • 集成权重:0.10
    • model5:
      • 使用全部数据训练
      • 使用伪标签
      • 集成权重:0.05
    • 集成结果(不含model5):CV分数0.33706

tDCS FOG & DeFog 综合结果

  • CV分数:0.548
  • 公开分数:0.530
  • 私有分数:0.450
同比赛其他方案