返回列表

40th Place Solution - Improving prediction with FFT-based data cleaning

586. Child Mind Institute - Detect Sleep States | child-mind-institute-detect-sleep-states

开始: 2023-09-05 结束: 2023-12-05 健康管理与公共卫生 数据算法赛

第40名解决方案 - 通过基于FFT的数据清洗提升预测效果

作者: kunai (Kaggle Expert)
排名: 第40名
发布时间: 2023-12-06
得票数: 17票

首先,我要感谢@tubotubo分享的高质量代码。接下来我将分享我的解决方案。这是我第一次发布解决方案,如果有什么失礼的地方,我深表歉意。虽然内容较为简陋,但我希望能对大家有所帮助。

1. 数据预处理

  • 空值移除: 删除数据集中时间戳为空的行,以防止分析误解并减少模型训练中的不确定性。
  • 事件计数一致性检查: 过滤掉事件开始('onset')和结束('wakeup')处不匹配的数据,提高数据完整性和分析可靠性。

2. 特征工程

使用FFT清洗特征:参考cmi-sleep-detection-fast-fourier-transformation,对enmo和anglez使用不同的阈值(98.75, 99.0, 99.5, 99.75, 99.9)进行数据清洗。这生成了基于FFT的特征(例如fft_9875)。

3. 模型

交叉验证采用5折GroupKFold。我基于@tubotubo的代码构建了七个不同的模型,每个模型使用不同的特征集和网络架构(LSTM, GRU, UNet, Transformer等)。

模型 CV 公开榜(5折) 私有榜(5折)
FeatureExtractor(LSTM(dim=64)+GRU(dim=64)) + UNet + UNet1DDecoder (无fft特征) 0.74373 0.746 0.791
FeatureExtractor(LSTM(dim=64)+GRU(dim=64)) + UNet + UNet1DDecoder (fft_9900, fft_9950, fft_9975, fft_9990) 0.75250 0.727 0.791
FeatureExtractor(LSTM(dim=64)+GRU(dim=64)) + UNet + UNet1DDecoder (fft_9875) 0.76012 0.747 0.795
FeatureExtractor(TransformerFeatureExtractor(dim=64)) + UNet + UNet1DDecoder (fft_9875) 0.74572
FeatureExtractor(LSTM(dim=128)+GRU(dim=128)) + UNet + UNet1DDecoder (fft_9875) 0.76400 0.739 0.801
FeatureExtractor(LSTM(dim=128)+GRU(dim=128)) + UNet + UNet1DDecoder (fft_9900) 0.76208 0.735 0.795
FeatureExtractor(CNNSpectrogram(dim=128)) + UNet + UNet1DDecoder (fft_9875) 0.74933

使用FFT清洗特征对CV分数有很大提升,但在私有榜上效果似乎并不明显。通过将特征提取的维度从64增加到128,CV和私有榜分数都得到了显著提升。

4. 模型集成

两步集成方法:第一步,使用三种不同方法(Optuna、Nelder-Mead和Hill Climbing)集成七个模型的预测结果。第二步,使用Optuna对这三种集成结果进行再次集成以获得最终结果。这种方法在交叉验证和私有榜上都取得了良好效果。第一阶段的私有榜分数为0.802,第二阶段也是0.802,第二阶段略好一些,但可能没有必要做到这一步。

第一阶段

集成方法 CV 公开榜(5折) 私有榜(5折)
optuna 0.79038 0.746 0.802
nelder-mead 0.78951
optuna 0.78801

第二阶段

集成方法 CV 公开榜(5折) 私有榜(5折)
optuna 0.79049 0.746 0.802

5. 未奏效的方法

  • 应用Focal Loss: 使用Focal Loss时交叉验证分数有所提升,但提交时出现错误。
  • 应用非对称高斯与指数衰减分布: 我对标签应用了非对称高斯和指数衰减分布,但这些方法并未提升性能。
  • 额外特征工程: 我尝试了移动平均、标准差、差分信号、累积和、自相关等额外特征,但这些也都没有提升性能。
  • 使用DeBERTa-v3-small: 我尝试使用DeBERTa-v3-small进行特征提取,但学习效果不佳,未达到预期结果。

最后,感谢主办方组织这次比赛。这是一场非常有挑战性的比赛,我学到了很多。

此外,这是我第二次获得银牌。我会继续努力,争取成为Kaggle大师。感谢大家让我学到这么多知识,我会继续全力以赴。

同比赛其他方案