505. American Express - Default Prediction | amex-default-prediction
感谢 AMEX 举办这次比赛!
我想简单介绍一下我在这次比赛中做的工作。
在本次比赛中,我使用了基于神经网络(NN)的模型和基于 LightGBM (LGBM) 的模型。
由于某些特征的分布非常分散,我认为对 NN 模型的几个特征进行对数变换可能是有意义的。我对相当一部分特征进行了对数变换。在查看每个特征的直方图后,我凭直觉决定是否进行变换。
我注意到有 2 个特征在私有数据中的表现很奇怪,所以我从所有 NN 模型中移除了它们。
这些特征是 D_59 和 D_86。D_59 在私有测试数据中的分布甚至与公共测试数据分布不同。
对于这两种模型类型,我通过在每个单一特征上训练一个简单的 LSTM(13x1 输入维度)来构建新特征。这些模型仍然预测原始目标。
这产生了 189 个不同的模型,它们仅根据单个特征的序列生成概率。
对于基于 LGBM 的模型,我使用了 @ragnar123 的优秀 notebook 作为起点。我添加了之前从 LSTM 模型生成的特征,并微调了一些超参数。我还使用所有数据进行了一次训练。
对于 NN,我首先在所有数据上预训练了一个 Transformer 模型,该模型用于填补随机缺失值。然后,我将这个预训练模型嵌入到一个 NN 中,该 NN 还使用了其他几个特征(例如序列的最后一个元素)并进行了训练。这大大提高了 NN 的性能。我还将 Mini-LSTM 模型的特征传递到了 NN 中。
我还在伪标签测试数据(由所有其他先前的模型标记)上训练了之前的 NN,这使得该 NN 在公共 LB 上的得分达到了 0.799。然而,这很难验证,因为伪标签造成了严重的泄漏。因此,我仅在公共 LB 数据上验证了该模型。这有助于进一步提高我的分数。
最后,我将 NN 和 LGBM 以大约 30/70(NN/LGBM)的权重进行了集成。
我还在集成中包含了这个 公共提交。
或者至少是没什么帮助的东西。
我尝试使用预训练的自编码器、ELECTRA 风格的预训练、Tabnet、CNN、LSTM、XGB、其他损失函数(pearson, mse)以及一些小东西……
我在其中一些上尝试了很多方法,但真的没什么帮助。实际上,我在 NN 中使用了由 ELECTRA 风格预训练 Transformer 模型生成的嵌入,但我认为这仅带来了微小的改进。
总之,基本上就是这些。我确信这所有的 100-200 小时的工作,我觉得还有很多改进的空间(例如,我没有为 LGBM 测试足够的特征,因为最终版本中我只使用了大约 25 个单一模型,所以还可以训练更多模型)。我在这次比赛中花了很多精力在 NN 上,但很多东西就是不起作用。