1. 简介
这篇文章的核心是,利用因素分解的思路将多元时间序列预测问题模块化,并得益于分解和模块化建模方法,实现多元时间序列预测的可解释性建模。
2. 问题定义
- 基础符号
- 多元时序预测 Multivariate time series forecasting
- 多元时序的生成过程 Generative process for multivariate time series
假设整个多元时间序列的生成由下面4个等式而来,其中Z0是原始多元序列的表示,它可以拆解为上述4个模块,每个模块由一个scale因子 σ t ∗ σ_t^∗ σt∗和一个location因子 μ t ∗ μ_t^* μt∗定义:
3. 模型
提取各个模块的scale和location:
长周期项——使用一个较大的滑动窗口,计算窗口内的均值和方差,作为scale和factor;
短周期项——和长周期项计算方法相同,但是会使用一个较小的滑动窗口,防止短期信息被平滑掉;
季节项——可以通过傅里叶变换提取,文中增加一个简化假设,季节性的周期长度不变,因此直接采用了窗口统计的方法;
序列相关性项——多元序列比单元序列需要多考虑各个序列之间的关系这一项,文中attention计算两两序列相关性打分,利用该打分计算你scale和factor。
基于上述4个分解模块,模型的主体结构如下图,包括Encoder和Decodeer两个部分。Encoder对4个模块的信息进行编码,Decoder对4个模块的信息进行外推预测,并产出预测结构。
通过4个模块分别提取相应的表征和scale、location等factor后,将这4个模块的信息拼接到一起,对应图中的Zn和Hn。各个模块的提取过程按照第一节中的多元时间序列生成假设来,对于原始序列,先抽取长周期模块的scale和location,去掉长周期信息后的表示,再输入到下一个组件抽取季节模块,以此类推顺序的进行抽取。4个模块抽取后剩余的序列,认为是残差部分。
在Fusion层,使用1维卷积对各个模块的信息做融合。
而对于残差项、短期项和序列相关性项,它们的变化波动很大,不像前文中长周期模块和季节性模块这么稳定容易预测。文中采用的方法是,学习一个DNN网络,对历史一个窗口内相应模块的表示向量、scale、location等信息进行映射,预测未来时刻的相应信息
4. 实验
本文在多个数据集上,对比了各类多元时间序列预测模型的效果,包括单元序列模型、时空预测模型等。从效果上来看,本文提出的方法效果提升程度非常明显,基本在5%以上。