返回列表

19th Place Solution: 108 OOFs blending with RidgeCV

664. Playground Series - Season 5, Episode 8 | playground-series-s5e8

开始: 2025-08-01 结束: 2025-08-31 信贷风控 数据算法赛
第 19 名解决方案:108 个 OOF 模型与 RidgeCV 融合

第 19 名解决方案:108 个 OOF 模型与 RidgeCV 融合

作者: Oscar Iván Bocanegra, gaston sanchez

发布时间: 2025 年 9 月 1 日

竞赛: Kaggle Playground Series 第 5 季 第 8 集 - 银行数据集的二元分类

最终排名: 第 19 名

战略融合助力第 19 名成绩的深度剖析

我很激动地分享我们在最近的 Kaggle Playground Series 竞赛“银行数据集的二元分类”(第 5 季,第 8 集)中的解决方案,我们在数千名参与者中获得了最终第 19 名的成绩。

这次竞赛是一个经典的表格数据二元分类问题。我们成功的关键不在于单个复杂模型,而在于精心 crafted 的108 个多样化模型的融合集成,并使用 RidgeCV 进行正则化。以下是我们方法的分解。

核心策略:多样化融合

我们的最终解决方案是许多单个模型预测的加权平均(融合)。我们没有使用简单的平均,而是使用Ridge 交叉验证 (RidgeCV) 来学习组合这些模型的最佳权重,有效地让算法决定更信任哪些模型。

我们解决方案的整个架构可以可视化如下:

解决方案架构图

我们如何构建多样性

成功集成的基本规则是多样性。我们的目标是让模型犯错,但要以不同的方式犯错。一个以独特方式出错的模型可以通过其他模型的共识来纠正其错误。我们通过以下几种关键方式生成这种多样性:

  1. 特征工程: 我们创建了多个具有不同工程特征集的数据集。有些 heavily 包含原始特征,而另一些则更多地依赖新创建的特征。
  2. 目标编码: 这是多样性的主要来源。我们对分类特征应用了多种编码策略(均值、中位数、标准差、方差、最小值、最大值等),每种策略都为模型学习创建了略有不同的数据表示。
  3. 模型类型与超参数:
    • ~70% 梯度提升 (XGBoost, LightGBM, CatBoost): 这些是我们的主力军,提供了最强的单个分数。我们广泛改变了它们的超参数、深度、学习率和随机种子。
    • ~30% 神经网络 (TensorFlow/Keras): 虽然它们的单个性能低于最好的 GBDT 模型,但它们至关重要。它们的错误模式与树模型高度互补,为融合提供了不同的“视角”,显著提高了我们的分数。
  4. 随机性: 仅仅改变数据拆分或模型初始化的 random_state 就会产生meaningfully 不同的模型,可以添加到集成中。

最后阶段:线性直觉

在最后几个小时,我们尝试将一个简单的线性回归模型(其本身性能较差)添加到 RidgeCV 融合中。有趣的是,它将本地 CV 分数提高了 +0.000016。然而,在公共 leaderboard 上,它导致下降了 -0.00017

这是关于过拟合以及信任 CV 与公共 LB 之间一致性的重要教训。我们决定提交两个解决方案:

  • 最终提交(第 19 名): 融合不包含线性回归模型。
    • CV 分数: 0.977242 | 公共 LB: 0.97784 | 私有 LB: 0.97744
  • 替代提交(约第 21 名): 融合包含线性回归模型。
    • CV 分数: 0.977258 | 公共 LB: 0.97767 | 私有 LB: 0.97740

关键要点与经验教训

行之有效的做法:

  • 警惕数据泄露: 我们非常细致,特别是在目标编码方面,确保在每个交叉验证 fold 内正确计算以避免泄露。这建立了对我们 CV 分数的信任。
  • CV-LB 相关性: 我们的本地 CV 分数是公共 leaderboard 性能的可靠指标。当一个变动时,另一个也朝同一方向跟随。这给了我们在实验中的信心。
  • 社区参与: 积极学习竞赛的讨论帖非常有价值。我们在整个竞赛中 incorporated 了许多其他人分享的新技术。

下次需要改进的地方:

  • 严格遵守 CV 方案: 纳入的 108 个模型中有些来自其他贡献者,使用了不同的验证拆分。虽然它们的 OOF 预测很有价值,但这种不一致性阻止了我们探索更高级的技术,如 stacking。下次,我将优先在统一的 CV 方案下重新训练所有模型。
  • 模型管理: 拥有超过 100 个模型,组织成为一个挑战。我需要一个更好的系统来跟踪它们——更具描述性的命名约定,也许需要一个专用工具或电子表格来记录每个模型的参数、特征和性能。(我很想听听其他人如何管理这个!请在评论中分享您的技巧。)

这是一次非常有趣且富有教育意义的竞赛。非常感谢 Kaggle 举办 Playground Series,也感谢所有分享见解并营造协作环境的参与者,特别是 @cdeotte@tilii7

恭喜 @optimistix 和其他获奖者!

同比赛其他方案