返回列表

6th Place Solution -> OOF Stacking with LGBM

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

开始: 2025-08-01 结束: 2025-08-31 信贷风控 数据算法赛
第 6 名解决方案 -> 基于 LGBM 的 OOF Stacking

第 6 名解决方案 -> 基于 LGBM 的 OOF Stacking

作者: Kyr1ll
发布日期: 2025-09-01
竞赛排名: 第 6 名

首先,我想为相对简略的解题报告道歉,我工作得真的很无序,确实没想到能拿到第 6 名。如果你有任何问题,请随时发帖,我会回答。

我的解决方案与 Top 10 中提交的解决方案非常相似,但老实说,与目前所见相比,我的模型数量和 OOF 数量非常有限。

我的提交是 7 个模型 Stacking,并使用 Optuna 超参数优化的 LGBMClassifier -> CV: 0.97736 / Private LB: 0.97766

当我将原始特征添加到 Meta 模型作为输入时,它在 CV 和 LB 上都给了我显著提升 -> CV: 0.97739 / Private LB: 0.97775

这是我的最终提交,使我获得了第 6 名。

模型架构

我用作 Meta 模型输入的 7 个模型是:

来自 @omidbaghchehsaraei 的 CNN 和 TabR,绝对感谢他,我通过他的 Notebooks 学到了很多,建议如果你还没看过的话去看看。

我也认为这 2 个模型给我的模型多样性带来了提升,因此显著提高了我的分数。

其他的模型包括:

  • 使用 Optuna 调优的 LGBM
  • 使用 Optuna 调优的 XGBoost
  • 2 个使用 Optuna 调优的 Catboost
  • 以及一个 NN

特征工程

对于特征工程,我主要使用(但不限于)@cdeotte 在他的 XGBoost Notebook 中展示的原始数据集的目标编码(Target Encoding)。

验证策略

实际上对于 KFold 拆分,根据模型训练时间的长短,我总是为 OOF 使用不同的拆分和 random_states。

我知道我应该用相同的拆分和 random_state 来做 OOF,但我发现得太晚了,而且 Kaggle 上的计算资源已经用完了 :P。

同比赛其他方案