657. Playground Series - Season 5, Episode 6 | playground-series-s5e6
首先,我想衷心感谢 Kaggle 举办了这一期的 Playground 系列赛。在这篇文章中,我将简要概述我的方法。
下表总结了使用数据构建的各种模型:
| 模型 | 模型数量 |
|---|---|
| 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)。
大多数得分最高的公共 Notebook 在 StackingClassifier 中使用 LogisticRegression 作为 final_estimator。然而,在我的许多实验中,我未能实现本地交叉验证分数与公共 leaderboard 分数之间的良好对齐。因此,我决定尝试不同的模型作为 final_estimator。
我发现,在 StackingClassifier 中使用 LinearDiscriminantAnalysis 作为 final_estimator 可以在本地交叉验证分数和公共 leaderboard 分数之间产生一致的对齐。我还尝试了使用 GaussianNB 作为堆叠器,观察到与 LogisticRegression 类似的行为。值得注意的是,我使用 LinearDiscriminantAnalysis 作为 final_estimator 训练了超过 50 个不同的堆叠器。
下表显示了我前四个堆叠器的公共 leaderboard 分数:
| 堆叠器 | 公共 LB 分数 |
|---|---|
| 1 | 0.38239 |
| 2 | 0.38233 |
| 3 | 0.38224 |
| 4 | 0.38211 |
然后,我保存了上述堆叠器的折外预测(out-of-fold predictions),并使用它们通过爬山法估计集成的权重。爬山法集成的公共 leaderboard 分数为 0.38247,私有分数为 0.38385。