交叉验证用来估计模型泛化误差,但在时序数据上直接随机 K 折会严重高估效果,因为训练集里混入了未来样本。推荐和广告数据本质上是有时序的,必须用时间序列切分。
正确做法是滚动窗口验证:按时间排序,用前一段训练、后一段验证,逐步前移。这样每次验证都模拟了「用历史预测未来」的真实场景,评估结果更可信。
另一个误用是在全量数据上做特征选择或归一化,再切分交叉验证。这会造成信息泄漏,验证分数虚高。所有预处理都应放进 Pipeline,只在训练折上拟合。
分组数据要注意 group 泄漏:同一用户的多条样本若被分到训练和验证两侧,模型会记住用户偏好,导致乐观偏差。应按用户或会话分组切分。
折数不是越多越好。5 折通常够用,折数过多会增加计算成本且方差下降有限。关键是一致性和可复现,固定随机种子并记录切分方案。