622. Playground Series - Season 4, Episode 8 | playground-series-s4e8
首先,祝贺 @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 名解决方案中,我使用了 28 个模型,并使用逻辑回归(logistic regression)对它们进行集成。逻辑回归的输入在训练前被转换为 logits。我尝试了各种输入函数,但 logits 提供了最好的交叉验证分数,所以我决定采用它。
以下是集成中所有模型的 5 折交叉验证分数:

今天我发现的一件有趣的事情是,调整阈值(threshold)有助于提高交叉验证和公共排行榜分数,但没有提高私有排行榜分数。我使用 Optuna 和 OOF 预测调整了阈值,但也尝试了使用 TunedThresholdClassifierCV。然而,后者并没有提高我的分数,无论是交叉验证还是公共排行榜分数。
最后,我要感谢 @ambrosm、@siukeitin、@omidbaghchehsaraei、@rzatemizel 和 @oscarm524 提供的代码和讨论帖。我从他们的贡献中汲取了灵感并学到了很多。