You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于skforecast.ForecasterAutoreg预测逻辑的疑问:12滞后为何输出12步预测?

问题:skforecast多元时间序列预测的滞后逻辑困惑

我正在使用skforecast处理常规多元时间序列,训练集trainX、trainy共36步,测试集testX、testy共12步。我通过以下代码以12步历史滞后(lag)训练回归器:

model = ForecasterAutoreg(regressor=RandomForestRegressor(), lags=12)
model.fit(y=trainX.y, exog=trainX[trainX.columns[1:]])

当我用该模型对测试特征进行预测时:

len(testX) # =12
predy = model2.predict(steps=steps, exog=testX[testX.columns[1:]])
len(predy) # =12 as well

模型返回了与testX长度一致的12步预测结果。我对此感到困惑:我认为预测必须基于12步历史滞后数据,但testX第一个预测值predy[0]似乎没有对应的前12步数据,为何模型能输出全部12步预测?我哪里理解有误?

解答

你混淆了训练时的滞后特征构建逻辑和预测时的初始滞后数据源:

  • 训练阶段,lags=12是指从训练数据trainX.y中提取每个样本对应的过去12步y值作为特征,结合同期的外生变量(trainX的其他列),让模型学习“历史12步y+同期外生变量→当前y”的映射规律。
  • 预测阶段,ForecasterAutoreg会自动使用训练集的最后12步y值作为初始滞后数据,来生成第一个预测值predy[0];后续每一步预测时,都会用上一步的预测结果补充到滞后序列中,再结合testX对应行的外生变量生成新的预测值。
  • 你设置的steps=12恰好和testX的长度匹配,所以模型会连续生成12步预测,每一步都对应testX中的一行外生变量。

简言之:第一个预测的历史滞后数据来自训练集末尾,后续预测依赖滚动生成的预测值补充滞后项,不需要测试集本身提供历史数据。

内容的提问来源于stack exchange,提问作者Fredrik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 13:12:55