返回列表

10th place solution (and a potential 5th)

622. Playground Series - Season 4, Episode 8 | playground-series-s4e8

开始: 2024-08-01 结束: 2024-08-31 临床决策支持 数据算法赛
第 10 名解决方案(以及潜在的第 5 名)

第 10 名解决方案(以及潜在的第 5 名)

作者: Mahdi Ravaghi (MASTER)
发布时间: 2024 年 9 月 1 日
竞赛排名: 第 10 名

首先,祝贺 @optimistix@neupane9sujal 和 AutoML Grandmasters 在本次比赛中取得的优异成绩。特别要向 @optimistix 致敬,他在大部分比赛时间里都稳居排行榜首位,并在 Playground 系列赛中首次夺得第一名。实至名归,@optimistix!我迫不及待地想阅读你的获胜解决方案。

(首个) 最终解决方案

我在周五提交了我的(首个)最终解决方案。这是一个由 9 个得分最高的个体模型组成的集成模型。虽然这个解决方案的公共排行榜(Public LB)分数较低,但我对此感到满意,主要是因为当时我没有想到如何进一步改进它。我只是期盼着最后时刻能发生巨大的变动!

下表展示了该集成中的模型及其 5 折交叉验证(5-Fold CV)和公共排行榜分数。

模型 5 折交叉验证 公共排行榜
AutoGluon 0.98492 0.98523
XGBoost (dart) 0.98490 0.98499
XGBoost 0.98488 0.98503
LightGBM (dart) 0.98482 0.98507
LightGBM 0.98480 0.98501
HistGB 0.98474 0.98496
XGBoost (rf) 0.98465 0.98473
CatBoost 0.98454 0.98487
Neural Network 0.98434 0.98469
集成 0.98501 0.98521

最后一次实验

昨天,就在比赛结束前几小时,我决定进行最后一次实验。我收集了整个比赛过程中所有实验的袋外预测(OOF predictions),并将它们集成在一起。我最终得到了 32 个模型,包括最初的 9 个。这将我的交叉验证分数提高到了 0.985050,公共排行榜分数提高到了 0.98528。

我发现有些模型在每个折叠中的分数都相同,尽管它们的 OOF 预测并不完全一样。在移除这些模型后,我的交叉验证分数提高到了 0.985053,公共排行榜分数提高到了 0.98531。因此,我决定选择这个模型和周五的原始提交作为我的最终两个提交。

今天,我发现我的 32 模型集成(其中可能包含一些重复或非常相似的模型)在私有排行榜(Private LB)上得分最高,本可以让我获得第 5 名。集成非常相似或重复的模型违背了我的直觉,这就是为什么我在最初的集成中没有包含多个相同类型的模型。由于(可能的)重复模型,我可能永远不会选择这个集合作为我的最终提交,将来也不会。我认为这只是纯粹的运气,使得这个集成在私有排行榜上获得了比其他集成更高的分数。

第 10 名解决方案

总之,在我的第 10 名解决方案中,我使用了 28 个模型,并使用逻辑回归(logistic regression)对它们进行集成。逻辑回归的输入在训练前被转换为 logits。我尝试了各种输入函数,但 logits 提供了最好的交叉验证分数,所以我决定采用它。

以下是集成中所有模型的 5 折交叉验证分数:
模型分数图表

今天我发现的一件有趣的事情是,调整阈值(threshold)有助于提高交叉验证和公共排行榜分数,但没有提高私有排行榜分数。我使用 Optuna 和 OOF 预测调整了阈值,但也尝试了使用 TunedThresholdClassifierCV。然而,后者并没有提高我的分数,无论是交叉验证还是公共排行榜分数。


最后,我要感谢 @ambrosm@siukeitin@omidbaghchehsaraei@rzatemizel@oscarm524 提供的代码和讨论帖。我从他们的贡献中汲取了灵感并学到了很多。

同比赛其他方案