664. Playground Series - Season 5, Episode 8 | playground-series-s5e8
模型多样性与努力
各位 Kaggle 伙伴们大家好!
在这次竞赛中我学到了很多。我想分享一下我在奋力保持 leaderboard 排名时的一些心得。
在这次竞赛中,我的主要重点是防止交叉验证期间的数据泄露。这样,我的交叉验证分数的完整性得以保持,并且可以信赖。我最终选择的 2 次提交取决于 CV 分数。结果符合预期。我 CV 分数最高的提交使我在私有 leaderboard 上获得了第 21 名。这意味着,只要交叉验证过程是可信的(没有数据泄露),老话“相信你的 CV"依然是正确的。
如果预处理管道窥探了验证集的内容,就可能发生数据泄露。例如,在目标编码期间,如果对整个数据集进行目标编码,而不仅仅是在交叉验证期间对训练部分进行编码,就可以证明这种效果。这将导致 CV 分数虚高,并且该分数不能代表模型的性能。因此,最有效的方法是在 KFold 的每个折叠基础上进行预处理管道(拟合和转换)。
我使用 Keras 深度学习模型作为特征提取器和预处理管道的一部分。当被 GBDT 模型使用时,提取的特征被证明是有效的。Keras 完整模型的交叉验证分数与 XGBOOST 之间的巨大差异(鉴于两者具有相同的潜在特征)很能说明问题。
我还采用了不同类型的特征工程。其中一些工程特征仅对深度学习模型有效,一些对 GBDT(梯度提升决策树)有效,还有不少对逻辑回归等有效。
像往常一样,解决方案是一个大型堆叠分类器,其中混合了许多基础模型。Keras 深度学习模型、XGBoost、LightGBM、CatBoost、HistGradientBoostingClassifier、决策树分类器和逻辑回归是基础模型,仅举几例,它们在特征工程或特征提取的数据集上训练。这次,我使用 XGBoostClassifier 作为元模型分类器。这些模型越多样化,结果就越好。
我创建了大约 70 个模型。这需要大量的工作和时间。这是因为给定一组特征,单个模型很可能被多样化模型的集成所击败。
最后,我想说恭喜大家!继续学习,祝你有个美好的一天!