返回列表

7th place solution

407. Mechanisms of Action (MoA) Prediction | lish-moa

开始: 2020-09-03 结束: 2020-11-30 药物研发 数据算法赛
第7名解决方案

第7名解决方案

作者: Matt Motoki (Cakey 团队) | 排名: 第7名

感谢 LISH 竞赛组织者、Kaggle 团队以及所有分享 Notebook 并参与讨论的人。

太长不看版 (TL;DR): 我们最终的提交结果是基于 MLP、TabNet 和 ResNet 模型的简单加权平均。

降维处理

我们决定在完整的测试集上进行降维。这意味着当私有测试集可用时,我们必须重新训练模型,因此我们无法进行仅推理的提交。根据模型的不同,我们混合使用了 PCA、SVD 和 ICA。

针对每个目标的早停

我们所有的模型都针对每个目标使用了早停。其思路是分别记录每个目标的最佳 epoch。例如,下图显示了部分目标的对数损失。

目标损失图

如果我们对所有目标都使用同一个 epoch 的权重,我们就会导致某些目标过拟合,而另一些目标欠拟合。

验证策略

我们尝试了很多交叉验证 (CV) 的变体,但最终我们选择了 MultilabelStratifiedKFold,并且没有使用 train_drug.csv。我们的 CV 与公开榜单 的对齐仍然不太稳定,很明显存在一个临界点,超过该点后 CV 的进一步提升反而会导致 LB 分数下降。@Chris Deotte 巧妙的 CV 方案 很有前景,但这并没有完全解决我们的问题。使用该智能 CV 方案得到的 LB 分数比使用 MultilabelStratifiedKFold 稍差一些,这与其他团队注意到的情况相似。

最终融合

我们的最终提交是 0.5*mlp + 0.3*tabnet + 0.2*resnet 的简单加权平均。我们没有使用公开 LB 来调整这些权重,这可能有助于防止过拟合。

模型 公开榜 私有榜 运行时间
Blend (融合) 0.01817 0.01603 5883.6s
MLP 0.01825 0.01613 816.6s
TabNet 0.01828 0.01614 1619.9s
ResNet 0.01859 0.01628 2562.4s

MLP

我们的 MLP 与公开 Notebook 中的非常相似。我们发现 PReLU 激活函数的效果优于 ReLU 或 LeakyReLU。

TabNet

我们使用了 @Optimo 出色的 TabNet Multitask Classifier 中的代码。我们只使用了该库的模型代码,而没有使用辅助函数,以便在学习率调度器、损失函数等方面拥有更大的灵活性。

ResNet

我们的模型基于 @Demetry Pascal 巧妙的 2heads+deep resnets+pipeline+smoothing+transfer notebook,并将其移植到了 PyTorch。

同比赛其他方案