(StemGNN)Spectral Temporal Graph Neural Network for Multivariate Time-series Forecasting
引用: Cao D , Wang Y , Duan J ,et al.Spectral Temporal Graph Neural Network for Multivariate Time-series Forecasting[J]. 2021.DOI:10.48550/arXiv.2103.07719.
论文链接: [2103.07719] Spectral Temporal Graph Neural Network for Multivariate Time-series Forecasting
作者: Defu Cao, Yujing Wang, Juanyong Duan, Ce Zhang, Xia Zhu, Conguri Huang, Yunhai Tong, Bixiong Xu, Jing Bai, Jie Tong, Qi Zhang
机构: 北京大学、微软和苏黎世联邦理工学院
文章目录
摘要
- 论文提出了一种新型的深度学习模型StemGNN,用于提高多变量时间序列预测的准确性。
- 论文将多变量时间序列预测问题定义为基于多变量时间图(multivariate temporal graph)的数据结构。
- StemGNN在频谱域中同时捕获时间序列内部和序列间的相关性。
- 模型结合了图傅里叶变换(GFT)和离散傅里叶变换(DFT),并在端到端框架中使用卷积和序列学习模块进行有效预测。
- 实验在十个真实世界的数据集上进行,证明了StemGNN的有效性。
引言
- 时间序列预测在交通预测、供应链管理和金融投资等多个领域中非常重要。
- 准确预测需要同时考虑时间序列内部的时序模式和多个时间序列间的相关性。
主要贡献
- StemGNN是首个在频谱域中同时表示时间序列内部和序列间相关性的工作。
- 模型能够从数据中自动学习时间序列间的相关性,无需预定义的拓扑结构。
- 在多个公共基准测试中,StemGNN实现了最先进的性能,平均优于最佳基线8.1%的MAE和13.3%的RMSE。
问题定义
在这篇论文中,多变量时间序列预测问题被定义为基于一个称为多变量时间图(multivariate temporal graph)的数据结构进行的预测任务。具体定义如下:
多变量时间图:表示为 $ G = (X, W) $,其中:
- X = { x i t } ∈ R N × T X = \{x_{it}\} \in \mathbb{R}^{N \times T} X={xit}∈RN×T 代表多变量时间序列输入,这里 N N N 是时间序列的特征数量(即节点数), T T T 是时间戳的数量。
- $ W \in \mathbb{R}^{N \times N}$ 是邻接矩阵,如果 w i j > 0 w_{ij} > 0 wij>0 则表示节点 i i i 和 j j j 之间存在边, w i j w_{ij} wij 表示这条边的强度。
预测任务:给定过去 K K K 个时间戳的观测值 X t − K , … , X t − 1 X_{t-K}, \ldots, X_{t-1} Xt−K,…,Xt−1 ,多变量时间序列预测的目标是预测多变量时间图 G = ( X , W ) G = (X, W) G=(X,W) 中下一个 H H H 个时间戳的节点值 X ^ t , X ^ t + 1 , … , X ^ t + H − 1 \hat{X}_t, \hat{X}_{t+1}, \ldots, \hat{X}_{t+H-1} X^t,X^t+1,…,X^t+H−1 。这些值可以通过预测模型 F F F 与参数 Φ \Phi Φ 以及图结构 G G G 来推断,其中 G G G 可以作为先验输入或从数据中自动推断。
预测模型:可以表示为 X ^ t , X ^ t + 1 , … , X ^ t + H − 1 = F ( X t − K , … , X t − 1 ; G ; Φ ) \hat{X}_t, \hat{X}_{t+1}, \ldots, \hat{X}_{t+H-1} = F(X_{t-K}, \ldots, X_{t-1}; G; \Phi) X^t,X^t+1,…,X^t+H−1=F(Xt−K,…,Xt−1;G;Φ)。
这个定义强调了在多变量时间序列预测中同时考虑时间序列内部的时序模式和不同时间序列之间的相关性的重要性。StemGNN 模型正是为了捕捉这些复杂的结构和时序依赖性而设计的。
StemGNN架构
- StemGNN由多个StemGNN块组成,每个块设计用于在频谱域中同时建模多变量时间序列的结构和时序依赖性。
- 包括图傅里叶变换(GFT)、离散傅里叶变换(DFT)、1D卷积和GLU子层。
输入层:多变量时间序列数据 X X X 作为输入,其中 X ∈ R N × T X∈R^{N \times T} X∈RN×T, N N N 是时间序列的特征数量, T T T 是时间步的数量。
潜在相关性层(Latent Correlation Layer):
潜在相关性层(Latent Correlation Layer)是StemGNN模型中用于自动学习多变量时间序列之间潜在相关性的组件,这层的目的是在没有预定义的拓扑结构的情况下,从数据中自动推断出时间序列之间的相互关系。以下是潜在相关性层的详细描述:
自注意力机制(Self-Attention Mechanism):
- 利用自注意力机制来计算时间序列之间的相关性权重,无需依赖于预先定义的图结构。
输入:
- 将多变量时间序列数据 X ∈ R N × T X \in \mathbb{R}^{N \times T} X∈RN×T 输入到这一层。
GRU层(Gated Recurrent Unit Layer):
- 首先,时间序列数据 X X X 通过一个GRU层来计算每个时间戳 t t t 对应的隐藏状态。
权重矩阵计算:
使用GRU层的最后一个隐藏状态 R R R 作为整个时间序列的表示,然后通过自注意力机制计算权重矩阵 W W W 。计算公式如下:
Q = R W Q , K = R W K , W = Softmax ( Q K T d ) Q = R W^Q, \quad K = R W^K, \quad W = \text{Softmax}\left(\frac{QK^T}{\sqrt{d}}\right) Q=RWQ,K=RWK,W=Softmax(dQKT)
其中, Q Q Q 和 K K K 分别表示查询(query)和键(key)的表示, W Q W^Q WQ 和 W K W^K WK 是可学习的参数, d d d 是 Q Q Q 和 K K K 的隐藏维度大小。
邻接矩阵:
- 输出的权重矩阵 W ∈ R N × N W \in \mathbb{R}^{N \times N} W∈RN×N 用作图 G G G 的邻接权重矩阵,表示时间序列之间的相关性。
StemGNN 层:
由多个 StemGNN 块组成,每个块包含以下操作:
图傅里叶变换(Graph Fourier Transform, GFT):将图 G G G 转换为频谱矩阵表示,使得每个节点的单变量时间序列在线性上独立,以便于分析和处理数据中的周期性和趋势性特征。首先计算图拉普拉斯矩阵 L L L 的特征值和特征向量.然后,使用这些特征向量构造变换矩阵,将原始的时间序列数据投影到这些特征向量上,实现从图域到频域的转换,具体如下:
图拉普拉斯矩阵:
- GFT 的基础是图拉普拉斯矩阵 L L L ,通常定义为 L = D − W L = D - W L=D−W,其中 D D D 是图的度矩阵(对角矩阵,包含每个节点的度), W W W 是图的邻接矩阵。
特征值分解:
- 对拉普拉斯矩阵 L L L 进行特征值分解,得到 L = U Λ U T L = U \Lambda U^T L=UΛUT ,其中 U U U 是由特征向量组成的矩阵, Λ \Lambda Λ 是对角矩阵,包含对应的特征值。
变换过程:
- GFT 将图上的信号 f f f 从图域转换到频域,表示为 f ^ = U T f \hat{f} = U^T f f^=UTf 。这里, f f f 是图上的原始信号, f ^ \hat{f} f^ 是频域上的信号表示。
频域表示:
- 在频域上,信号 f ^ \hat{f} f^ 的每个分量与图的一个特定频率或模式相对应,这些频率或模式由拉普拉斯矩阵的特征向量定义。
逆变换:
- 从频域回到图域可以通过 f = U f ^ f = U \hat{f} f=Uf^ 实现,这是 GFT 的逆过程。
离散傅里叶变换(Discrete Fourier Transform, DFT):将每个单变量时间序列转换到频域。
卷积和门控线性单元(Convolution and Gated Linear Unit, GLU):在频域中捕获特征模式。
逆图傅里叶变换(Inverse Graph Fourier Transform, IGFT):将频谱表示转换回原始域。
Spectral Sequential Cell(Spe-Seq Cell):
- 用于在频域中分解每个单变量时间序列,并学习其上的表示。
- 包括 DFT、1D 卷积、GLU 和逆离散傅里叶变换(Inverse Discrete Fourier Transform, IDFT)。
输出层:
- 由 GLU 和全连接(Fully-Connected, FC)子层组成。
- 有两种类型的输出:预测输出(用于生成未来值的最佳估计)和回溯输出(用于增强多变量时间序列的表示能力)。
损失函数:
- 结合预测损失和回溯损失,用于训练模型。
推理策略:
- 在多步预测中采用滚动策略,使用预测值更新输入并连续预测下一个时间步。
残差连接和堆叠 StemGNN 块:
- 使用残差连接来构建更深层次的模型,通过第二块来近似真实值和第一块重建值之间的残差。
基于图卷积的输出:
- 使用图卷积操作来进一步处理频谱矩阵表示,以生成最终的预测。
实验
- 在包括交通、能源、心电图和COVID-19数据的十个公共数据集上评估了StemGNN的性能。
- 与其他最新技术模型相比,StemGNN在大多数数据集上都建立了新的最先进水平。
案例研究
- 论文对COVID-19数据进行了案例研究,展示了StemGNN在实际问题中的可行性和解释性。
结论
- StemGNN通过在频谱域中联合建模序列间相关性和时序依赖性,一致性地超越了现有的方法。
- 未来的工作将探索减少StemGNN时间复杂度的近似方法,并将其应用于更多的实际场景。
社会影响
- 论文讨论了多变量时间序列预测对社会的潜在影响,包括供应链管理、洪水风险分析和COVID-19趋势预测。
代码
- 论文提供了StemGNN的代码:https://github.com/microsoft/StemGNN/
这篇论文在深度学习领域提供了一种新的多变量时间序列预测方法,通过频谱域的建模提高了预测的准确性,并通过实验验证了其有效性。