Multivariate Time Series Forecasting n步预测及多变量预测可行性咨询
多变量时间序列预测常见问题解答
1. 预测时是否需要传入对应输入变量的取值?
没有统一答案,完全取决于你选的预测方案和变量类型:
- 如果你的输入变量都是已经有完整历史观测值的特征,或者是可以根据时间规则直接推导出来的特征(比如日期对应的节假日、周几),使用不需要依赖上一步预测结果的预测模式时,不需要额外传入输入变量
- 如果你的模型用到了未来才会确定的外生变量(比如预测销量要用到未来的营销预算),或者用递归滚动预测的模式,就需要传入对应时间点的输入变量取值
2. 预测n个步长的具体运行逻辑
目前工业界常用的有3种逻辑:
- 递归滚动预测:先训练一个只预测1个步长的模型,先用所有历史数据算出第一个步长的预测值,把这个值当成真实数据补充到历史序列里,再用更新后的序列计算第二个步长,一直循环到输出完n个步长。好处是只需要训练一个模型,坏处是预测步长越长,前面的误差累积得越厉害,结果偏差会越大。
- 直接预测:要预测多少个步长就训练多少个独立的模型,比如要预测未来7天的量,就分别训练预测第1天、第2天……第7天的7个模型,每个模型直接输出对应步长的结果,不需要依赖上一步的预测值,不会有误差累积的问题。坏处是训练成本高,也没法利用不同步长预测结果之间的关联关系。
- MIMO(多输入多输出)预测:直接训练一个可以一次性输出所有n个步长结果的模型,输入是全量历史序列,输出直接就是长度为n的预测结果,既避免了误差累积,也能捕捉不同步长之间的依赖关系,是现在应用最广泛的方案。
3. 仅依托现有历史数据能不能预测未来n个周期的客户数量?
完全可以。你给出的几个变量里,日期是可以直接推导未来取值的时间特征,年龄、性别、国家都是固定或者可统计的分组维度,客户数量是预测目标,不需要额外的未来数据就能做预测:
- 你可以先从日期里提取出星期几、月份、季度、是否节假日等时间特征,再按年龄、性别、国家做交叉分组,统计不同维度下的历史客户量规律,这些特征都不需要未来的额外数据就能生成
- 直接用整理好的历史特征和对应的客户量数据训练时序预测模型,就能输出未来n个周期的客户量预测结果
- 当然如果有未来会发生的、对客户量影响很大的特殊事件(比如大促、区域站点关停之类的),把这些事件的特征加入模型能提升准确率,但没有这些信息的话,仅靠历史数据也能得到可用的预测结果。
内容的提问来源于stack exchange,提问作者Sridher
相关产品推荐
相关产品推荐

