返回列表

#21 Solution | Stacking + Hill Climbing

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

开始: 2025-06-01 结束: 2025-06-30 作物智能识别 数据算法赛
#21 解决方案 | Stacking + 爬山法

#21 解决方案 | Stacking + 爬山法

作者: Oscar Aguilar (Grandmaster)
排名: 21
发布日期: 2025-07-01

首先,我想衷心感谢 Kaggle 举办了这一期的 Playground 系列赛。在这篇文章中,我将简要概述我的方法。

基础模型 (Base Models)

下表总结了使用数据构建的各种模型:

模型 模型数量
Catboost 20+
LGBM 50+
LGBM-Goss 10+
XGBoost 50+
Logistic 10+
Multinomial NB 10+
GradientBoostedTreesLearner 5+

所有基础模型都在相同的 10 折交叉验证策略上进行训练:StratifiedKFold(n_splits=10, shuffle=True, random_state=42)

堆叠模型 (Stackers)

大多数得分最高的公共 Notebook 在 StackingClassifier 中使用 LogisticRegression 作为 final_estimator。然而,在我的许多实验中,我未能实现本地交叉验证分数与公共 leaderboard 分数之间的良好对齐。因此,我决定尝试不同的模型作为 final_estimator

我发现,在 StackingClassifier 中使用 LinearDiscriminantAnalysis 作为 final_estimator 可以在本地交叉验证分数和公共 leaderboard 分数之间产生一致的对齐。我还尝试了使用 GaussianNB 作为堆叠器,观察到与 LogisticRegression 类似的行为。值得注意的是,我使用 LinearDiscriminantAnalysis 作为 final_estimator 训练了超过 50 个不同的堆叠器。

爬山法 (Hill Climbing)

下表显示了我前四个堆叠器的公共 leaderboard 分数:

堆叠器 公共 LB 分数
1 0.38239
2 0.38233
3 0.38224
4 0.38211

然后,我保存了上述堆叠器的折外预测(out-of-fold predictions),并使用它们通过爬山法估计集成的权重。爬山法集成的公共 leaderboard 分数为 0.38247,私有分数为 0.38385。

有效的做法 (What worked)

  • 正如在几个讨论中指出的那样,将所有特征视为类别型特征。
  • 添加多份原始数据集副本用于训练目的。

无效的做法 (What didn't work)

  • 特征工程
同比赛其他方案