返回列表

10th place solution: U-Net with squeeze & excitation

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

开始: 2023-03-09 结束: 2023-06-08 临床决策支持 数据算法赛

第10名解决方案:带有挤压和激励的U-Net

作者: James Day (GRANDMASTER) | 发布日期: 2023-06-11 | 比赛排名: 第10名 | 票数: 20

恭喜获奖者!感谢比赛组织者提供了一个有趣的挑战!以下是我的解决方案。

模型架构

我使用了带有挤压和激励(squeeze-and-excitation)的1D卷积U-Net,包含5个编码器/解码器对。

挤压和激励似乎非常有益,大概是因为它允许模型在分类每个样本时考虑全局上下文。我以极长的上下文窗口(10240个样本)处理数据。

特征

  • 原始加速度值: AccV、AccML、AccAP
    • 我没有以任何方式对这些数据进行归一化。
  • 时间特征:
    df['NormalizedTime'] = df['Time'] / df['Time'].max()
    df['SinNormalizedTime'] = np.sin(df['NormalizedTime'] * np.pi)

我还尝试添加了使用小波变换计算的多种频域特征,但这并没有帮助。

训练数据增强

  • 随机低通滤波:
    • 频率截止范围为采样率的5% - 37.5%
    • 应用于一半的训练序列
  • 随机时间扭曲:
    • 使用线性插值将序列长度改变+/-10%(或其间任意值;缩放因子从均匀分布中采样)
    • 应用于一半的训练序列
  • 随机翻转:
    • 将AccML乘以-1来反转左右方向
    • 应用于一半的训练序列
  • 随机幅度扭曲:
    • 每个加速度特征值与其均值的差值乘以一个从高斯分布中随机采样的系数(均值为0,标准差为0.1)
    • 应用于一半的训练序列
  • 噪声时间特征:
    • 每个上下文窗口内的归一化时间按从高斯分布采样的值进行偏移(均值为0,标准差为0.05)
    • 在计算SinNormalizedTime之前应用(因此相同的噪声会影响两个特征)
    • 应用于所有训练序列

推理时数据增强

每个样本由每个模型分类16次。

  • 分别对AccML乘以-1和不乘以-1(反转左右方向)
  • 序列在重叠的上下文窗口中进行分类,步长等于窗口长度的1/8。类似于随机裁剪数据增强。

提交文件中保存的值是所有模型预测结果的简单平均值。

defog与tdcsfog的处理

我对两个数据集使用了相同的模型。我没有对采样率或特征值进行任何归一化处理。我甚至没有将特征转换为相同的单位。归一化似乎是有害的。

集成/随机种子优化

我使用了2个近乎相同的模型,它们使用相同的超参数从相同的交叉验证折中训练,但使用不同的随机种子进行权重初始化和打乱训练数据。它们被筛选为在本地交叉验证中mAP分数位于前20%,在LB分数中位于前50%。相比只使用2个随机模型,这可能将我的分数提高了约0.01-0.02。

同比赛其他方案