返回列表

3rd place - Ridge and CV are all you need

657. Playground Series - Season 5, Episode 6 | playground-series-s5e6

开始: 2025-06-01 结束: 2025-06-30 作物智能识别 数据算法赛
第三名 - Ridge 回归和交叉验证是你所需的一切
作者: Mahog
排名: 第 3 名
发布时间: 2025-07-01

第三名 - Ridge 回归和交叉验证 (CV) 是你所需的一切

简要总结:

  • 一个月内慢慢构建了 60+ 模型的集成
  • 前两周寻找好的集成器
  • 依赖公开 Notebook 中的各种 XGB 超参数
  • 信任交叉验证 (CV)

这个月我专注于拥有各种各样的不同模型(如 XGB 对比 NN),而不是相同模型的不同特征工程(虽然这里仍然有一些特征工程)。以下是我使用的一些技巧:

使用 Ridge 作为集成器

在比赛开始时,我使用层次聚类 (HC) 作为集成器。但它有一个问题:添加模型往往会降低 CV 分数。然后我尝试了遗传算法 (GA)。它在大约 20 个模型之前效果很好,但超过那个数量后出现了与 HC 相同的问题。搜索了一段时间后,我确定了 Ridge。它非常快(我的 60 个 OOF 大约需要 1 分钟),而且添加模型几乎总是能提高 CV 分数,所以我一直用它到最后。

关于使用 Ridge 的一些说明:

  • OOF 堆叠的形状为 (n_samples, n_models * 7)
  • 对目标进行独热编码 (One-hot encode) 并使用多目标回归

将分类任务转化为回归任务

我训练了一些 XGB 和 NN,通过对目标进行独热编码,使用均方误差 (MSE) 损失进行多目标回归。我本想训练更多这样的回归模型,但时间不够了。

带有乘积特征及标签编码的 XGB

比赛后期,我决定使用乘积特征来增加多样性,但我意外地对新特征进行了标签编码。出乎意料的是效果很好,CV 提高了 0.0001。

多样的库

在我寻求最多独特模型的过程中,我发现了一些非常酷的库:

  • pytabkit
  • pytorch-tabular
  • rtdl_num_embeddings

如果没有这些库,我可能无法进入前 10 名。

结论

首先,我要感谢所有帮助我走到这一步的人,包括但不限于:@cdeotte, @optimistix, @siukeitin, @ravi20076, @masayakawamata, @omidbaghchehsaraei, @ravaghi, @yekenot(我可能漏掉了很多人)。在过去的 3 个月里,我取得了 3 次前 10 名的成绩,获得了一些 Kaggle 周边奖品,以及一个重要的学习心得:"CV 和 Ridge 是你所需的一切”。

补充说明

我的最终模型列表:

  • 3 个“全嵌入”NN,基于此处
  • 1 个 Autogluon
  • 5 个 Catboosts
  • 1 个来自 pytorch-tabular 的 Gandalf NN
  • 2 个 GRNs,基于此处
  • 一些 LAMA NNs
  • 5 个 LGBMs
  • 1 个 LNN,基于此处
  • 3 个逻辑回归模型,基于此处
  • 1 个普通 NN,来自此处
  • 来自此处的 OOFs
  • 1 个来自 pytabkit 的 RealMLP
  • 3 个带有 rtdl_num_embeddings 的 Pytorch NNs
  • 1 个 SAINT 模型
  • 1 个 TabTransformer 模型,来自此处
  • 3 个来自 pytabkit 的 TabMs
  • 20 个 XGBs
  • 1 个 ExtraTrees 模型
  • 1 个来自 ydf 的 GradientBoostedTreesLearner

我还成功选择了我在私有排行榜 (Private LB) 上的 2 个最佳提交。有趣的是,我最好的 CV 是私有排行榜上的第二好,而我最好的公共排行榜 (Public LB) 成绩是私有排行榜上的最佳成绩。以前从未见过这种情况发生。

比赛结果截图

同比赛其他方案