返回列表

1st Place Solution

551. AMP®-Parkinsons Disease Progression Prediction | amp-parkinsons-disease-progression-prediction

开始: 2023-02-16 结束: 2023-05-18 药物研发 数据算法赛
第1名解决方案 - AMP帕金森病进展预测竞赛
标题:第1名解决方案
作者:dott (GRANDMASTER)
协作人:Konstantin Yakovlev (kyakovlev)
发布日期:2023-05-22
投票数:98

第1名解决方案

首先,我们要感谢Kaggle和AMP PD举办这场比赛,并提供了一个内容丰富、足够复杂的数据集,让我们可以深入其中数月之久。能够从事能够为医学领域带来价值或促进科学研究的问题,始终是一种额外的动力。此外,我们还要特别感谢 @kyakovlev 所完成的出色工作,我认为我们组成了一个强大的团队,而比赛结果也印证了这一点。

我们在 这里 发布了获胜notebook的完整代码。

简要总结

我们的最终方案是两个模型的简单平均:LGB和NN。两个模型都使用了相同的特征(NN额外进行了缩放/二值化处理):

  • 就诊月份
  • 预测 horizon
  • 目标预测月份
  • 就诊期间是否采血的指示标志
  • 补充数据集指示标志
  • 患者就诊是否发生在第6、18和48个月的指示标志
  • 既往“非年度”就诊次数(第6或18个月)
  • 目标索引(我们将数据集进行透视,以得到单个目标列)

获胜方案完全忽略了血液检测的结果。我们曾努力尝试从这部分关键数据中寻找任何信号,但遗憾地得出结论:我们的任何方法或模型都无法从血液检测特征中获得显著收益,以将其与随机波动区分开来。最终模型仅使用临床数据集和补充数据集的并集进行训练。

LGB

在整个比赛期间,LGB一直是我们需要超越的模型,只有使用比赛指标作为损失函数训练的NN才能在CV上达到具有竞争力的表现。起初,我们尝试运行具有不同超参数和自定义目标函数的回归LGB模型,但没有任何结果优于l1回归,而l1回归并不能优化所需的SMAPE+1指标。我们还注意到,在CV上,每当回归输出结果四舍五入为整数时,每个模型的表现总是更好。随后我们转向了另一种方法。

我们的LGB模型是一个包含87个目标类别(0到最大目标值)的分类模型,采用logloss目标函数。为了生成预测,我们应用了以下后处理:给定目标类别的预测分布,选择一个能使SMAPE+1最小化的值。考虑到最优预测值始终为整数这一观察结果,该任务简化为在87个可能值中进行简单搜索。这种方法同样适用于原始的SMAPE指标,因为它能够自然地处理存在多个局部最小值的情况。

我们运行了一个优化程序,使用上述后处理来调整LGB超参数,以在CV上最小化SMAPE+1。

NN

该神经网络采用简单的多层前馈架构,使用回归目标,并以比赛指标SMAPE+1作为损失函数。我们固定了epoch数量和调度器,然后调整学习率和隐藏层大小。唯一需要注意的是在最后添加一个泄漏ReLU激活函数,以防止NN陷入负值预测的困境。当然,还有其他方法可以解决这个问题。

交叉验证

由于训练样本量较小,我们尝试了多种交叉验证方案,所有方案均按患者ID进行分层。一旦使用足够多的折数,各方案之间的相关性相当高,甚至优于与公开排行榜的相关性。我们最终采用的方案是留一(患者)出,换句话说,即为每个患者设置一个分组的k折交叉验证。我们之所以使用它,是因为它不依赖于随机数。该交叉验证与私有排行榜的相关性足够好,我们选择的提交结果最终成为我们在私有排行榜上的最佳提交。

哪些方法有效

最具影响力的特征是患者是否在第6个月就诊的指示标志。它与UPDRS目标(尤其是第2和第3部分)以及用药频率高度相关。由于我们只能观察到数据相关性,无法判断其根本原因。在比赛期间,我们的假设是:首次检查时症状更严重(UPDRS评分第2和第3部分)的患者更有可能在6个月后收到就诊邀请,也更有可能被开具药物处方。但对于模型训练而言,重要的是在第6个月就诊的患者平均UPDRS评分更高。第18个月的就诊情况同样如此,但这两个特征是相关的。我个人想知道,模型中这些变量的存在与否是否是导致私有排行榜在第20名左右出现悬崖效应的原因。

另一个相关的有趣效应出现在 visit_month = 0 时的预测中。如果你查看模型对未来0、12和24个月的预测,会发现它们始终低于6个月后的预测。从数学角度来看,这是非常合理的——如果患者将在第6个月出现,其平均UPDRS评分会更高;反之,预测将被忽略。当然,这种模型行为在临床视角下是不合理的。

关注训练集和测试集之间的差异也非常重要,例如,这里 就很好地总结了这一点。例如,这很好地解释了为什么添加一个表示第30个月就诊的特征可以改善CV,但却会损害排行榜上的表现。

哪些方法无效

血液检测数据。我们尝试了许多方法将蛋白质和/或肽数据添加到模型中,但均未改善CV表现。我们将其简化为一组逻辑回归模型,这些模型基于第0个月的血液检测结果来预测第6个月的就诊情况。我们根据逻辑回归概率,对更可能或较不可能在第6个月就诊的患者的模型预测结果进行了软性上下缩放。在直接对公共排行榜调整几个“魔法”系数后,该方法在公共排行榜上有效。这使我们一路提升至公共排行榜第二名,但这显然是一种过拟合。我们选择了一个“温和”版本的该方案作为最终提交。它在私有排行榜上的得分低于另一个提交,但有趣的是,差距并不像预期那样大(60.0 对比 60.3)。

感谢所有参与比赛的人,那些在论坛上持续进行有趣讨论的人,以及提出改进建议的人!也祝贺所有获奖者!

同比赛其他方案