返回列表

9th place solution: With a little help from my (Kaggle) friends

634. Playground Series - Season 4, Episode 12 | playground-series-s4e12

开始: 2024-12-01 结束: 2024-12-31 保险科技 数据算法赛
第 9 名解决方案:在我的(Kaggle)朋友们的帮助下

第 9 名解决方案:在我的(Kaggle)朋友们的帮助下

作者: Optimistix (MASTER)
发布日期: 2025-01-01
竞赛排名: 9

12 月的开端非常糟糕,我的父亲去世了。他一直患有转移性前列腺癌,所以这并非意外,但仍然(而且现在也是)极其艰难。诸多后果之一是,本月 TPS 赛事的前两周我无法正常参与。另一个副作用是我的 Kaggle 登录连续记录停在了 285 天——我本期待把它延续到一年,但现在不想特别有动力去重新开始。我只会定期登录,忘记这些琐事。

不管怎样,当我真正开始进入本月赛事的状态时,已经有几个很好的代码本可供参考,特别是 @martynovandrey@backpaker 的,它们被 @cdeotte 在一篇帖子中重点推荐了。特别是 @martynovandrey 的优秀代码本提供了第一个完全可复现的低于 1.40(甚至是 1.30)的结果,据我所知,直到最后它仍然是得分最好的完全可复现代码本(不仅仅是其他提交的融合)。我编辑了这些代码本来保存 OOF(袋外预测),并对其他几个有趣的代码本重复了同样的操作。我还从各种来源借用了特征——@cdeotte 关于从 NAN 中推导信息的富有洞察力的帖子带来了性能的小幅提升,@swagician 的特征也是如此。

此时,我有几个 CV 分数在 1.028-1.03 范围内,公共 LB 分数在 1.027-1.03 范围内。有几个代码本的 CV 分数低得惊人(< 1.025,有一个接近 1.02),但这些的 LB 分数 > CV,让我担心过拟合。我也与公共代码本融合了几次,但打算在我的最终 2 个提交中最多包含一个这样的提交(理想情况下没有)。另一个分数的提升得益于 @noodl35 慷慨分享了使用 OpenFE 生成的新特征。将这些约 140 个特征与 Autogluon (AG) 一起使用,立即使 AG 的 CV 分数从约 1.045 提高到约 1.040。自然地,我把它添加到我的集成模型中,并在其他几个模型中也使用了这些特征。

随着最后一周临近,我有很多实验想法,但动力不足,还有一些责任要处理。一个明显的步骤我没有来得及做是从约 170 个特征中进行特征选择。我也没能来得及尝试我心目中的几个模型,或者尝试一个分类器希望生成的概率能帮助识别/预测异常值等。然而,我确实尝试了 CatBoost 中的各种评分函数和 bootstrapping 方法,这增加了集成模型的多样性。我还尝试了几种不同版本的神经网络,其中至少有一些也有帮助。

最终,我最好的单一模型是一个带有所有特征的 CatBoost,运行了 30 折(CV: 1.03152, 公共 LB: 1.02935, 私有 LB: 1.03081)。在集成方法方面,最佳结果的顺序一直是 AG > Ridge > Lasso,但在我的脑海中,我知道即使 Ridge 在公共 LB 上更好,Lasso 经常在私有 LB 上产生更好的分数,所以我想知道在我的最终 2 个提交中选择哪一个,万一我用它们得到的提交比 AG 更好。预期的原因是每种方法花费的时间——Ridge 和 Lasso 花费几分钟,而 AG 花费大约一小时,一旦我超过几十个 OOF,Hill Climbing 就要花费几个小时。此外,我可怜的 MacBook 在最后一天的高负荷下呻吟,我确实在 AG 上落后了一次迭代。幸运的是,81 个 OOF 的最终迭代看到 Lasso 甚至在公共 LB 上也超过了 Ridge,所以我得分最高的提交是用 Lasso(CV: 1.02729, 公共 LB: 1.02601, 私有 LB: 1.02765),这让我保持在第 9 名,我已经在这里待了几天。具有相同 81 个 OOF 的 AG 运行稍后完成(太晚了,不予考虑),得分更好(1.02536, 1.02398, 1.02582)。虽然排名保持不变,但以那个分数结束会令人满意。尽管如此,我确实对这次选择得当感到满意。

热烈祝贺 @cdeotte 凭借惊人的解决方案赢得当之无愧的胜利,祝贺所有表现良好的人!感谢所有分享代码和见解的人,包括但不限于:

@cdeotte, @martynovandrey, @backpaker, @swagician, @noodl35, @oscarm524, @ravaghi, @siukeitin

回顾我在 Kaggle 的一年,这是一段惊人的旅程。我于 2024 年 2 月底开始,然后在接下来的 10 场赛事中或多或少地全面参与,取得了 8 次好成绩:

月份 排名/参赛人数
2024 年 3 月 6/2199
2024 年 4 月 9/2606
2024 年 5 月 7/2788
2024 年 7 月 4/2234
2024 年 8 月 1/2422
2024 年 9 月 3/3066
2024 年 11 月 13/2685
2024 年 12 月 9/2390

剩下的两个月(5 月和 10 月)是我在一个月的大部分时间里保持第 1 名(基于公共排行榜的表现,它使用 20% 的测试数据),但过拟合到了这种程度,以至于当使用其余测试数据进行评估时,我跌出了最高排名,尽管我仍然分别在前 4% (111/2684) 和前 8% (299/3858)。

在此过程中,我还通过 Kaggle AutoML Grand Prix 学到了一些 AutoML,这是一个从 2024 年 5 月到 9 月每月第一天举行的竞赛。看到这个快速增长领域的进展真是大开眼界。所有这些都带来了一些 Kaggle 周边奖品,并激起了我迎接更大挑战的兴趣。

当我们开始新的一年,我的目标是继续参与 TPS,但投入更少的时间,花多一点学习新事物,并参与更多有奖金的竞赛。祝大家 2025 年精彩绝伦,充满新的学习和冒险,愿你们的大部分愿望成真(留几个给未来的年份😀)。新年快乐,Kaggle 快乐!

同比赛其他方案