StemGNN(2020 NIPS)

Preliminary

此文做的是多变量时序预测任务。像通过一支股票的走势预测它未来的价格是单变量时序预测,如果同时观察多支股票并作出相应预测即可看成是多变量时序预测。

image-20230411123338567

Challenge

多变量时序预测往往需要对单个变量内在的时间模式和多个变量间的关系同时进行建模。现有的多变量时序预测模型大多是直接堆叠例如GRU、TCN、GCN等时空间模块来捕捉时空间依赖,只能捕捉到时域的时间模式并且需要预先定义好的邻接矩阵。

Motivation

现在已经有工作使用离散傅里叶变换(DFT)与神经网络结合对时间序列做分析。考虑到将序列转到频域后能有更清晰的时间模式,作者选择在频域上提取时空依赖。

Contribution

  • 此文设计了名为StemGNN的结构,通过离散傅里叶变换(DFT)和图傅里叶变换(GFT)将时空域转到频域,并同时在频域上捕捉时空间依赖。
  • 此文使用数据驱动的方法学习序列间的相关性来构建邻接矩阵从而不再需要预先定义邻接矩阵。
  • StemGNN在9个基准上取得了sota的结果。

Model

Overview:

如下图所示,输入首先经过Latent correlation layer学习变量间的隐关联并作为邻接矩阵。然后将输入和学习到的邻接矩阵一同输入到两层StemGNN模块中。StemGNN模块首先使用GFT将空间维度从空域转换到频域,然后使用DFT将时间维度从时域转到频域。紧接着此文在时间频域中使用1D-CNN和GLU提取时间频域中的时间模式,然后再使用IDFT将时间维度从频域转回时域。最后使用GCN提取空间频域的空间依赖并使用IGFT将空间维度从频域转回空域。

img

image-20230411123456093

上式的前一部分是预测loss,后一部分是重建loss。因为模型是迭代预测,那么模型是否能准确识别每一次的输入也至关重要,重建loss能让模型更好的识别每一次的输入。

Latent Correlation Layer:

image-20230411123521433

StemGNN Block:

image-20230411123536616

Spectral Sequential Cell (Spe-Seq Cell):

image-20230411123551002

Spectral Graph Convolution:

image-20230411123607535

Experiments

Datasets:

本文一共使用了9个数据集如下图所示

img

Results:

StemGNN与单变量时序预测模型TCN、NBeats;多变量时序预测模型等DCRNN、ST-GCN等进行比较。下图中可以看到StemGNN除了PEMS08的MAE外均取得了最好的结果,同时多变量时序模型在多变量任务上优于单变量模型。

img

Ablation Study:

此文进行消融实验验证了提出的各个部分的有效性,可以看出没有时间提取Spe-Seq后效果最差。

img

Analysis:

此文对学习到的邻接矩阵进行可视化如下图。

img

此文还对COVID-19数据集进行实验并可视化了邻接矩阵,如下图所示。

img

最后此文可视化了GFT和DFT后的时间序列并可视化,可以看到频域上的序列更加平滑容易预测。

img


   转载规则


《》 熊水斌 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Bean的生命周期 Bean的生命周期
Bean 的生命周期执行顺序: 无参构造函数 依赖注入(包括属性注入) 初始化方法 销毁方法 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.spr
2023-04-13
下一篇 
Dozer作用:BeanUtils 的升级版,用于实现的对两个 Java Bean 对象之间进行字段的映射,从而进行实体之间的转换。 dozer 映射文件 <?xml version="1.0" encoding="UTF-8"?>
2023-04-07
  目录