帕金森步态冻结预测竞赛第二名解决方案
帕金森步态冻结预测竞赛第二名解决方案
作者: 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模型
- 特征工程
- 三个提供的加速度计数据
- 对每个加速度计进行特征工程:
- 标准化
- 序列创建方法
- 训练阶段:
- 序列长度: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:
- 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:
- 集成结果(不含model5):CV分数0.33706
tDCS FOG & DeFog 综合结果
- CV分数:0.548
- 公开分数:0.530
- 私有分数:0.450