629. Playground Series - Season 4, Episode 11 | playground-series-s4e11
我很高兴能获得第四名!虽然我认为这其中包含运气成分,但我仍然想分享我的解决方案。
在进行了一些 EDA(探索性数据分析)后,我注意到数据中存在很多不合理的噪声。基于 @adyiemaz 的出色 Notebook中的数据预处理方法,我做了一些修改,将不合理的数据设置为 NaN(因为 AutoML 框架可以自动处理 NaN 值)。例如,我认为像"Less than 5 hours"(少于 5 小时)这样的城市名称(我认为应该描述睡眠时间)是不合理的。在我的实验中,这一更改在我的 CV(交叉验证)、公共 LB(排行榜)和私有 LB 中都带来了更好的分数。
由于时间限制,我没有进行非常复杂的模型选择。我认为 AutoML 是一个减少工作量同时仍能取得好成绩的绝佳选择。最终,我使用了 AutoGluon 和 LightAutoML,并对它们的结果进行了简单的等权融合 (blending)。总的来说,上次当我获得第 8 名时,我观察到盲目融合和过度拟合公共 LB 会导致私有 LB 分数较低。在这次比赛中,我仍然主要关注 CV 分数。
AutoGluon 提供了许多经过预测试的超参数组合以及表现良好的 bagging+stacking 技术。虽然它的 CV 有时可能过于乐观,但它在这次比赛中表现良好。我使用了 AutoGluon 团队提供的2024 年 200 个超参数集。感谢他们的工作!不过回想起来,它的私有 LB 分数略低于 1.2.0 版本的 experimental_quality 预设分数,但在 CV 和公共 LB 上表现更好。
与 AutoGluon 相比,LightAutoML 提供了更多基于深度学习的模型。我使用此设置来调用所有模型:general_params = {"use_algos": [['lgb_tuned', 'cb_tuned', 'mlp_tuned', 'dense_tuned', 'denselight_tuned', 'resnet_tuned', 'snn_tuned', 'node_tuned', 'autoint_tuned', 'fttransformer_tuned']]}。它在公共和私有 LB 上的表现略优于 AutoGluon,但在 CV 上略差,这可能是由于前面提到的 AutoGluon 的 CV 分数过于乐观。
最后,我想感谢我的学院提供 CPU 计算支持,以及 Kaggle 平台、所有参与者和阅读本文的您!