Spectral Temporal Graph Neural Network for Multivariate Time-series Forecasting

作者:北京大学Defu Cao等

论文链接:https://arxiv.org/abs/2103.07719

代码链接:https://github.com/microsoft/StemGNN/

多元时间序列预测在许多实际应用中起着至关重要的作用,例如交通预测、供应链管理和金融投资。如果可以准确估计事件或指标的未来演变,它可以帮助人们做出重要决策。例如,如果事先预计会出现严重的交通拥堵,我们可以修改行车路线或重新安排约会。此外,如果我们能够提前预测 COVID-19 的趋势,我们就能重新安排重要事件并迅速采取行动防止流行病蔓延。

这是一个具有挑战性的问题,因为需要同时考虑系列内时间相关性系列间相关性。最近,有多项工作试图捕获这两种相关性,但大多数仅捕获时域中的时间相关性,并求助于预定义的先验作为系列间关系。

在本文中,作者提出了谱时间图神经网络 (StemGNN) 以进一步提高多元时间序列预测的准确性。StemGNN 在spectral domain中捕获系列间(inter-series)相关性和时间依赖性(temporal dependencies)。它结合了图傅立叶变换 (GFT) 和离散傅立叶变换 (DFT),GFT对序列间(inter-series)相关性进行建模,而离散傅立叶变换 (DFT) 则对端到端框架中的时间依赖性(temporal dependencies)进行建模。通过 GFT 和 DFT 后,谱表示具有清晰的模式,可以通过卷积和序列学习模块进行有效预测。

作者的目标是更好地对系列内时间模式和系列间相关性进行建模。直觉是,在 GFT 和 DFT 之后,谱表示可以保持更清晰的模式并且可以更有效地预测。实现这一目标并非易事。这项工作的关键技术贡献是精心设计的 StemGNN(谱时间图神经网络)块。在 StemGNN 块内,首先应用 GFT 将结构多元输入转换为频谱时间序列表示,而不同的趋势可以分解为正交时间序列。此外,DFT 用于将每个单变量时间序列转换到频域中。在 GFT 和 DFT 之后,卷积和序列建模层更容易识别谱表示。

此外,在端到端框架中加入了一个潜在的相关层来自动学习系列间的相关性,因此它不需要多变量依赖作为先验。此外,采用具有共享编码器的预测和回溯输出模块来促进多元时间序列的表示能力,也就是说StemGNN 在不使用预定义先验的情况下自动从数据中学习系列间相关性。

StemGNN 的整体架构如图 1 所示。多元时间序列输入 X 首先被馈送到潜在相关层,其中可以从数据中自动推断出图结构及其相关的权重矩阵W。接下来,图 G = (X, W) 作为由两个StemGNN 块组成的 StemGNN 层的输入。StemGNN 模块的设计目的是在频谱域中联合建模多元时间序列内的结构和时间依赖性(如图 1 的顶部图表所示)。它包含一系列精心设计的运算符。首先,图傅立叶变换 (GFT) 算子将图 G 转换为谱矩阵表示,其中每个节点的单变量时间序列变得线性无关。然后,离散傅立叶变换 (DFT) 算子将每个单变量时间序列分量转换到频域中。在频域中,表示被送入一维卷积和 GLU 子层以捕获特征模式,然后通过逆 DFT 转换回时域。最后,我们在谱矩阵表示上应用图卷积并执行逆 GFT。

在 StemGNN 层之后,作者添加了一个由 GLU 和全连接 (FC) 子层组成的输出层。网络中有两种输出。预测输出 Yi 经过训练以生成对未来值的最佳估计,而反向输出 Xˆ i 以自动编码方式使用以增强多元时间序列的表示能力。最终的损失函数可以表示为预测损失和回溯损失的组合

其中第一项表示预测损失,第二项表示回溯损失。对于每个时间戳 t,{Xt−K, ..., Xt−1} 是滑动窗口内的输入值,Xt 是要预测的真实值;Xˆ t 是时间戳 t 的预测值,{B_{t−K}(X), ..., B_{t−1}(X)} 是来自回传模块的重建值。B 表示生成反向输出的整个网络,Δθ 表示网络中的所有参数。在推理阶段,采用滚动策略进行多步预测。首先,通过将 {Xt−K, ..., Xt−1} 作为输入来预测 Xˆ t。然后,输入将更改为 {Xt−K+1, ..., Xt−1, Xˆ t} 以预测下一个时间戳 Xˆ t+1。通过连续应用这种滚动策略,可以获得接下来 H 个时间戳的预测值。

实验部分

作者在九个公共数据集上比较了 StemGNN与其他最先进模型的性能,包括交通、能源和心电图领域,包括 FC-LSTM、SFM、N-BEATS、 DCRNN、LSTNet、ST-GCN、DeepState、TCN、Graph Wavenet 和 DeepGLO。作者通过对 StemGNN 的网格搜索来调整验证数据上的超参数。最后,每个图卷积层的通道大小设置为64,一维卷积的核大小为3。采用RMSprop优化器,训练epoch数设置为50。学习率为初始化为 0.001,每 5 个 epoch 后以 0.7 的速率衰减。使用平均绝对误差 (MAE)、平均绝对百分比误差 (MAPE) 和均方根误差 (RMSE) 来衡量性能,这些性能在多步中由 H 步平均预言。

特别是,在所有数据集上,与每个数据集的最佳基线相比,StemGNN 在 MAE 上平均提高了 8.1%,在 RMSE 上平均提高了 13.3%。

推荐阅读:

我的2022届互联网校招分享

我的2021总结

浅谈算法岗和开发岗的区别

互联网校招研发薪资汇总

2022届互联网求职现状,金9银10快变成铜9铁10!!

公众号:AI蜗牛车

保持谦逊、保持自律、保持进步

发送【蜗牛】获取一份《手把手AI项目》(AI蜗牛车著)

发送【1222】获取一份不错的leetcode刷题笔记

发送【AI四大名著】获取四本经典AI电子书

NeurIPS2020 | StemGNN:基于图谱分解的时间序列预测相关推荐

  1. 基于深度学习的时间序列预测方法

    之前对时间序列预测的方法大致梳理了一下,最近系统的学习了深度学习,同时也阅读了一些处理序列数据的文献,发现对于基于深度学习的时间序列预测的方法,还可以做进一步细分:RNN.Attention和TCN. ...

  2. 基于深度学习的时间序列预测

    # 技术黑板报 # 第十一期 推荐阅读时长:15min 前言 时间序列建模历来是学术和工业界的关键领域,比如用于气候建模.生物科学和医学等主题应用,零售业的商业决策和金融等.虽然传统的统计方法侧重于从 ...

  3. 【统计学】【2015.09】基于状态空间模型的时间序列预测与插值

    本文为芬兰于韦斯屈莱大学(作者:Jouni Helske)的毕业论文,共87页. 今天收集的大量数据都是以时间序列的形式出现的.为了根据时间序列预测做出真实的推断,除了点预测之外,还应确定预测间隔或其 ...

  4. 阿里AI天池大赛-资金流入流出预测-基于周期因子的时间序列预测

    1:报名地址 https://tianchi.aliyun.com/competition/entrance/231573/score 2:排名分数 3:模型源码 废话不多说,直接上源码 import ...

  5. 基于Seq2Seq的GRU时间序列预测Python程序

    基于Sequence-2-Sequence,Encoder-Decoder(编码-解码)的GRU预测模型 特色:1.单变量,多变量输入,自由切换            2.单步预测,多步预测,自动切换 ...

  6. 基于 keras lstm 的时间序列预测 上证指数 股票价格预测 十份数据超全数据 毕业设计

    项目参考:https://www.bilibili.com/video/BV1Fg4y1t7MA/ 附完整代码数据: 运行参考:

  7. 读论文——“时间序列预测方法综述”

    文章目录 1 什么是时间序列? 2 时间预测方法的核心 3 时间序列数据的特点 4 相关的时间序列参数模型 4.1 移动平均模型(Moving Average, MA) 4.2 自回归模型(Autor ...

  8. 序列每天从1开始_时间序列预测一

    什么是时间序列: 时间序列可以看作是普通的二维的无序的特征矩阵向时间空间的拓展,相对来说多了仅仅一个维度但也是非常重要的时间维度: 时间序列是按时间顺序进行的一系列观察,通常包括了连续性时间序列数据和 ...

  9. 用python做时间序列预测十:时间序列实践-航司乘客数预测

    本文以航司乘客数预测的例子来组织相关时间序列预测的代码,通过了解本文中的代码,当遇到其它场景的时间序列预测亦可套用. 航司乘客数序列 预测步骤 # 加载时间序列数据 _ts = load_data() ...

最新文章

  1. 巨大冲击!AlphaFold2再登Nature,从业者都懵了:人类98.5%的蛋白质,全都被预测了一遍...
  2. Java基础(二) 程序格式
  3. python 闭包(closure)
  4. VUEJS-checkbox全选全不选
  5. 数据结构四——散列表(下)
  6. IO字节缓冲流的最简单读写源码
  7. The Linux Storage Stack Diagram
  8. apply()、call()与bind()的用法与区别
  9. metacube 链接 mysql_2019 年 5月 随笔档案 - rgqancy - 博客园
  10. java使用ffmpeg进行视频处理
  11. 阿里maven仓库地址
  12. CSS内联样式表、内部样式表、外部样式表
  13. python 图像手绘效果展示
  14. 数据湖(十一):Iceberg表数据组织与查询
  15. java calendar时间计算_Java Calendar计算所在时区的时间偏移量
  16. Chibi Dinos上线薄饼IFO打新,是否值得参与?
  17. 惠州市城市职业学院计算机考点,2020广东乡镇惠州考区笔试考点地理位置及考场安排表...
  18. 手机便签内容如何保存到电脑
  19. 华为IdeaHub的商业市场启示“路”
  20. Java函数式实现替代策略模式解决 if...else代码,Map+函数式接口方法

热门文章

  1. Python网络爬虫与信息提取笔记08-实例2:淘宝商品比价定向爬虫
  2. JavaWeb - 模糊查询 + 分页
  3. Linux程序下载到板子上,uclinux系统移植到bf561板子上过程
  4. 浅谈微端游戏设计思路
  5. 飞鸽传书、freeeim、ipmsg区别联系
  6. 论文笔记:传统CV和深度学习方法的比较
  7. CAD命令集 CAD命令笔记本
  8. Second Normal Form(2NF)
  9. 深入Java Thread底层源码实现
  10. IBM SPSS Statistics为什么更适合做大数据分析