返回列表

17th place solution

497. Tabular Playground Series - Jun 2022 | tabular-playground-series-jun-2022

开始: 2022-06-01 结束: 2022-06-30 数据算法赛
第17名方案

第17名方案

作者:Nikhil
比赛排名:第17名

这是我在 TPS(表格竞赛系列)比赛中迄今为止取得的最好成绩。非常感谢 Kaggle 月复一月地举办这些比赛。

我的解决方案主要包含两个方面:

  1. @ehekatlact 的发现,即基于每条记录中缺失值的数量进行建模。这一发现被证明是本月 TPS 的关键。
  2. 发现了公开测试数据集的分布规律。

在最初的 10 天里,我投入了大量精力研究 F_2 特征,试图从中找到一些规律。这些特征是分类变量,且没有缺失值。我觉得很难在不进行调查的情况下直接丢弃它们。相关工作已整理在这里。在使用 F_2 特征通过各种方式进行切片和分析却一无所获后,我决定继续前进。

那时,讨论区的主流观点是对 F_1 和 F_3 进行均值插补,并对 F_4 进行建模。我决定从对 F_4 建模开始,并公开了我的工作,旨在为本次比赛建立一个验证集。这有助于比较不同模型并指明方向。

我的第一次提交没有包含 NA(缺失值)计数,得分为 1.04555。同一个模型在加入 NA 计数和一些修改后,得分达到了 0.94694。

在此之后,我决定花些时间对 F_1 和 F_3 也进行建模,而不仅仅是均值插补。我尝试了许多模型和策略,但公开分数几乎没有变动。这时我突然想到,也许 F_1 和 F_3 根本不在公开数据集中。经过一个非常简单的探测,我发现大部分公开数据集由 F_4 列组成,可能只有少数记录在 F_1 和 F_3 中有缺失值。这也让我相信均值插补可能不是 F_1 和 F_3 的最佳选择,因为我们根本无法直观看到性能的变化。

我决定利用允许的 2 次提交机会来同时尝试这两条路径。我提交了一个对 F_1、F_3 进行均值插补并对 F_4 建模的方案,另一个方案则是对所有内容进行建模。第二个方案在公开和私有排行榜上都比较优秀,但优势非常微弱(约 0.00005),这大约相当于排行榜上 3 个名次的差距。所以,我想最终这并没有产生太大影响。

我使用相同的 2 个模型组合分别对 F_1、F_3 和 F_4 进行建模,并对其结果取简单平均值,具体描述如下:

  1. 一个基于 @ehekatlact笔记本的神经网络(NN)模型,但我用 Tensorflow 实现了它。
  2. 一个结合了 LightGBM 和 XGboost 回归的模型,并加入了 NA 计数特征。

我还开发了其他几个模型,但根据公开排行榜的结果选择了最终提交的方案。最初,我只专注于 F_4 的建模,为了节省时间对 F_1 和 F_3 使用了均值插补。在尝试了各种模型组合后,我选择了上述方案,因为它在公开排行榜上对 F_4 的得分最高。然后,我将该模型组合用于 F_1 和 F_3,并生成了我的提交文件。

非常感谢所有在本月比赛中公开分享贡献的朋友们。从这些帖子中学到了很多。

特别感谢 @ehekatlact,没有他的贡献,这一切都不可能实现。

同比赛其他方案