获课:xingkeit.top/5907/
时序预测 Kaggle 赛剖析:时间特征构造与时序拆分的胜负手
在 Kaggle 时序预测赛场上,模型选型往往只占胜负的三成,剩下七成藏在特征工程里。而特征工程中最被低估的两个环节——时间特征构造与时序拆分——恰恰是区分金牌与银牌的分水岭。
时间特征:不是"提取年月日"那么简单
大多数选手的第一反应是把时间戳拆成年、月、日、星期几。这只是入门。真正拉开差距的是循环编码与相对时间特征。
星期几、月份这类周期特征,如果直接用 1 到 7 的整数编码,模型会误以为"星期七"和"星期一"相差 6,但实际上它们是相邻的。正确做法是用正弦余弦做循环编码,让 12 月和 1 月在特征空间中紧挨在一起。这个细节在 M5 赛题中直接影响了 TOP10 与 TOP50 的排名差距。
更关键的是滞后特征与滚动统计。目标值的前 1 天、前 7 天、前 30 天的均值、标准差、最大最小值,这些才是时序模型最依赖的信号。但构造时必须严格遵守时间顺序——用未来数据计算过去的特征,就是数据泄露,线下分数再高,上榜即归零。
节假日特征是另一个被忽视的金矿。不是简单标记"是否节假日",而是要构造"距离下一个节假日还有几天""距离上一个节假日过了几天"这类相对特征。在 Web Traffic 赛题中,这类特征的重要性甚至超过了所有模型调参的总和。
时序拆分:验证方式决定一切
时序赛题最大的坑不在模型,在验证策略。随机划分训练集和验证集会导致严重的时间泄露——未来的信息偷跑进了训练过程,线下 AUC 高达 0.95,线上一提交直接翻车。
前向验证(Time Series Split) 是标准做法。比如用前 80% 的时间训练,后 20% 验证;或者用滑动窗口,每次往后推一段时间重新训练。这种方式模拟了真实的预测场景,虽然线下分数可能比随机划分低 5 到 10 个百分点,但它诚实。
嵌套时序交叉验证是进阶选手的标配。外层按时间分折,内层在训练集上再做时序分割做超参数搜索。这样既避免了过拟合验证集,又充分利用了有限的训练数据。在 M4 赛题中,采用嵌套验证的方案比单次划分稳定了约 3%。
还有一个实战技巧:按粒度拆分验证集。如果预测目标是日级别,但数据中存在周级别的强周期,那么验证集最好完整包含若干个周期,而不是随机截一段。否则模型学到的周期规律在验证集上无法体现,评估结果失真。
特征与拆分的协同效应
最顶尖的选手会让特征构造和验证策略协同工作。比如在构造滞后特征时,根据验证集的时间范围反推需要保留多少天的历史数据;在做滚动统计时,窗口大小的选择直接受验证策略影响——窗口太大,训练初期样本不足;窗口太小,噪声占比过高。
Kaggle 时序赛的本质不是比谁的模型更复杂,而是比谁更尊重时间的单向性。特征构造是在告诉模型"时间里藏着什么规律",时序拆分是在确保"你看到的规律是真的"。把这两件事做到位,朴素模型也能杀进前十。
本站不存储任何实质资源,该帖为网盘用户发布的网盘链接介绍帖,本文内所有链接指向的云盘网盘资源,其版权归版权方所有!其实际管理权为帖子发布者所有,本站无法操作相关资源。如您认为本站任何介绍帖侵犯了您的合法版权,请发送邮件
[email protected] 进行投诉,我们将在确认本文链接指向的资源存在侵权后,立即删除相关介绍帖子!
暂无评论