Kaggle 经典比赛 Jane Street Market Prediction(简街市场预测大赛) 高分方案解析

351 阅读2分钟
本篇文章为比赛第一名方案解析,该比赛涉及到时间序列预测-教育
介绍:参赛者将使用历史数据、数学工具和技术工具来创建一个尽可能接近确定性的模型。
网址:www.kaggle.com/competition…

在这个比赛中,我使用了监督式自动编码器 MLP 方法,我的队友使用 XGBoost。我们的最终提交是这两种模型的简单融合。在这里,我想详细解释我的方法。

监督式自动编码器方法最初在瓶颈编码器 + MLP + Keras Tuner 8601c5 中提出,其中在交叉验证(CV)分割之前单独训练一个监督式自动编码器。我意识到这种训练可能会引起标签泄漏,因为自动编码器在每次 CV 分割中都会看到验证集的一部分数据,并可以生成标签泄漏特征以过度拟合。因此,我的方法是在每个 CV 分割中,将监督式自动编码器与 MLP 一起训练在一个模型中。训练过程和解释在笔记本和以下说明中给出。

交叉验证(CV)策略和特征工程:

  • 5折31间隔清除分组时间序列分割
  • 由于特征方差不同,因此删除前85天的数据进行训练
  • 前向填充缺失值
  • 将所有响应目标(resp、resp_1、resp_2、resp_3、resp_4)转移到动作进行多标签分类
  • 使用所有响应目标的绝对值平均值作为训练样本权重,以便模型可以专注于捕获具有大绝对响应的样本
  • 在推理过程中,将所有预测动作的平均值作为最终概率

深度学习模型:

  • 使用自动编码器创建新的特征,将新特征与原始特征连接作为下游 MLP 模型的输入
  • 在每个交叉验证分割中一起训练自动编码器和 MLP,以防止数据泄露
  • 向自动编码器(监督学习)添加目标信息,以强制其生成更相关的特征,并为梯度反向传播创建捷径
  • 在编码器之前添加高斯噪声层以进行数据增强并防止过拟合
  • 使用 swish 激活函数代替 ReLU 以防止“死神经元”并平滑梯度
  • 批量归一化和 Dropout 用于 MLP
  • 使用3个不同的随机种子训练模型,并取平均值以减少预测方差
  • 仅使用在最后两个 CV 分割中训练的模型(具有不同的种子),因为它们已经看到了更多的数据
  • 仅监控 MLP 的 BCE 损失,而不是整体损失以进行早期停止
  • 使用 Hyperopt 寻找最佳超参数集