479. Tabular Playground Series - Mar 2022 | tabular-playground-series-mar-2022
我很惊讶地发现排行榜(LB)的变动竟然如此之大。今晚我差点都没去查看结果,因为我对自己的分数感到非常失望。虽然我很想祝贺自己是个数据科学天才,但我认为这次我确实走了不小的狗屎运。我知道许多更聪明、经验更丰富的参赛者这个月比我努力得多。有时候你只是中了彩票,我想就是这样。
我感谢所有通过讨论和代码分享见解的 Kagglers。具体来说,@Pack-Man 的 AutoML notebook 和 @Martynov Andrey 的 Hybrid Regressors notebook 给了我很大帮助。从第一个笔记本中,我借鉴了基于小时-分钟时间与位置交叉的可能性编码方法。从第二个笔记本中,我参考了其后处理方法。
获胜的分数仅来自一个没有经过后处理的单 lgbm 模型。我有点时间不够用了。首先,我创建了大量的可能性编码和滞后特征。与大多数公开的内核不同,除了中位数,我还使用了许多其他特征。其次,我使用 Optuna 找到了最佳的特征子集。
对于验证,我使用了正好在测试集之前一周的数据。我将训练数据筛选为仅包含与测试期间相同的日期和小时-分钟组合的数据。获胜模型的特征创建代码在 这里,特征选择代码在 这里。
这个笔记本是我用来创建滞后特征和编码的代码。对于滞后特征,我计算了均值、方差、中位数、最小值、最大值和 1 区间偏移。我对日期和工作日的每个 x-y-direction 组合都进行了计算。我使用了 3 天、5 天和 10 天的滚动窗口以及扩展窗口。
可能性编码计算了所有 hour-minute 组合下,每个 xy 和 x-y-direction 组合的最小值、最大值、中位数、方差和均值。
整个过程大约需要 5-10 分钟运行。
在第一步之后,我有了太多的特征。鉴于特征过剩,我使用 Optuna 来挑选最好的特征。具体来说,对于我考虑的每个特征,我使用了 trial.suggest_categorical(feat_in_question, [True, False])。经过 300 次试验,Optuna 非常擅长找到最好的特征。此外,我看到许多笔记本只在工作日 0(周一)进行训练。我让 Optuna 判断我是否应该只在第 0 天训练,此外,是否只在测试集相同的小时-分钟时间训练。在 Optuna 试验之后,我只需挑选最好的特征并提交笔记本。代码在 这里。
宽神经网络。鉴于数据的空间关系,在给定时间同时训练所有空间点的回归器是有意义的。然而,这对我不起作用。
我要特别感谢由高等经济学院在 Coursera 上开设的“如何赢得数据科学竞赛”课程。这门课程教会了我可能性编码的基础,这在很大程度上决定了这里的分数。我在这里做的编码不是很漂亮,因为它们没有使用 K 折交叉验证来防止泄漏。又是一个时间不够的例子。
我必须感谢广大 Kaggle 社区在我作为数据科学家的旅程中给予的所有帮助。从两年前辍学到现在成为一名数据科学家,Kagglers 帮助我学到了比我自己能学到的多得多的东西。谢谢读者成为这个伟大社区的一员。继续 Kaggle 吧。
现在已经是晚上 11:30 了,我早上 4:45 就要起床去上班。感谢阅读!