基于目标列Sales创建Rolling Mean Feature时是否需要移位?
关于滚动窗口用于次日销量预测的正确做法
你的做法完全正确,这是时间序列预测里避免数据泄露的核心操作。
时间序列预测的本质是:只能用「预测时点之前已经存在的数据」来构建特征,绝对不能用到未来(包括你要预测的当日)的信息——毕竟你不可能在预测11日销量的时候,提前拿到11日的销售数据。
举个实际的例子:
- 当你要预测11日的销量时,能用来计算滚动均值的只能是04日到10日的7天数据,这7天都是11日之前已经发生的,完全符合逻辑。
- 如果硬要按「包含当日」的逻辑去计算11日对应的滚动均值,就必须用到11日的销量数据,这显然是不可能拿到的;就算训练时误用了这类逻辑,模型也会学到虚假规律,实际预测时根本不准。
延伸到训练阶段:比如你用01-10日的数据训练模型,要预测8日的销量,对应的滚动均值特征也应该是01-07日的均值,而不是02-08日——因为在8日当天做预测时,你还不知道8日的销量,不能把它提前放进特征里。
这种「取过去N天、不含预测当日」的滚动窗口构建方式,是时间序列预测的标准操作,能有效避免数据泄露,保证模型的泛化能力。
内容的提问来源于stack exchange,提问作者Vitor Xavier
相关产品推荐
相关产品推荐

