445. Tabular Playground Series - Jul 2021 | tabular-playground-series-jul-2021
大家好!
我在参与比赛和阅读大家的讨论与代码过程中获得了极大的乐趣!以下是我所使用方法的描述以及我的一些想法。感谢大家,我学到了很多!不过,我要特别公开感谢 Alexander Ryzhkov (@alexryzhkov),他在伪标签方面非常有帮助的讨论以及公开分享的笔记本对我助益良多。他值得这份赞誉!
特征工程: 奇怪的是,我最终没有包含任何超出所提供数据(+泄露数据)之外的新变量。我尝试逐一添加各种变量(月份、工作日、小时等的虚拟变量,天气变量的组合,多种交互项,滞后变量等等),但每一个都降低了我的分数。正如 @jonaspalucibarbosa (链接) 所指出的,这可能防止了对私有数据集的过拟合,从而可能帮助提升了我的最终排名。当然,在泄露发生之前,所有这些额外的变量都是有帮助的;但在泄露发生后,它们似乎就没有帮助了。
缺失值: 我使用两阶段估算法估算了泄露数据中的缺失值(-200)。@alexryzhkov 在四月份比赛中的帖子非常有帮助 (链接)。在第二步中,我使用更长的样本训练模型:训练数据 + 泄露数据 + 估算的缺失值。将目标作为特征包含进来也特别有帮助,例如使用苯和氮来预测一氧化碳。
模型: 使用 5 个梯度提升树模型非常有帮助,每个模型使用不同的随机种子。我对这 5 个模型的预测结果进行了平均。我在每个阶段都使用了相同的模型;我没有时间去尝试在第二阶段使用不同的模型。
最后,将我的输出结果与 Alexander Ryzhkov 的 LightAutoML (链接) 进行平均,将我的最终排名从第 2 名提升到了第 1 名。
我仍在思考的一件事是:在训练数据覆盖的时间段内,Kaggle 提供的目标值与泄露数据中的目标值之间似乎存在差异(超出 -200 值范围的差异)。这种差异随时间平均为零,并且似乎与传感器相关。我试图通过建模这种差异来提高分数(我在代码中注释了其中的一些行),尽管存在与传感器的相关性,但我没能成功提高分数。
再次感谢大家!如有任何评论或问题,我不胜感激!