解读两篇最新多元时间序列预测工作

本文首发于公众号“圆圆的算法笔记”

解读两篇最新多元时间序列预测工作点关注,不迷路,用心整理每一篇算法干货~多元时间序列预测任务主要解决的是输入多变量时间序列,预测多变量未来序https://mp.weixin.qq.com/s?__biz=MzIyOTUyMDIwNg==&mid=2247485852&idx=1&sn=c38a799e96351bd07ebb489d1f45ecbf&chksm=e8402fbddf37a6ab8763bd34fe1831f2bf7c2c39018d0a9994dd0fc867eb0fa7b47d6a013db6&token=574176942&lang=zh_CN#rd

微信公众号“圆圆的算法笔记”,持续更新NLP、CV、搜推广干货笔记和业内前沿工作解读~

后台回复“交流”加入“圆圆的算法笔记”交流群;回复“时间序列“、”多模态“、”迁移学习“、”NLP“、”图学习“、”表示学习“、”元学习“等获取各个领域干货算法笔记~

多元时间序列预测任务主要解决的是输入多变量时间序列,预测多变量未来序列的问题,多变量的序列之间存在一定的相互影响关系。多元时间序列预测相比一般的单变量时间预测,如何在建模temporal关系的同时建立不同变量空间上的关系至关重要。今天给大家介绍两篇2022年8月份发表的最新多元时间序列预测工作,两篇工作均有开源代码

两篇文章的概要分别如下。

论文1-Expressing Multivariate Time Series as Graphs with Time Series Attention Transformer:通过SMD将时间序列分解成多个IMF周期性序列+趋势项后,建立多变量之间的关系图,利用改进的Transformer实现节点信息、边关系、图结构三者信息融合进行预测。

论文2-Spatial-Temporal Identity: A Simple yet Effective Baseline for Multivariate Time Series Forecasting:通过引入id embedding的方式缓解历史趋势相同、未来趋势不同导致的样本无法区分问题。这种方式可以替代STGCN等引入图结构的复杂模型。

推荐阅读历史时间序列预测相关文章:

12篇顶会论文,深度学习时间序列预测经典方案汇总

Spatial-Temporal时间序列预测建模方法汇总

最新NLP Prompt代表工作梳理!ACL 2022 Prompt方向论文解析

1. 论文1-多元序列转换为图进行预测

  • 论文题目:Expressing Multivariate Time Series as Graphs with Time Series Attention Transformer

  • 下载地址:https://arxiv.org/pdf/2208.09300v1.pdf

  • 开源代码:https://github.com/radiantresearch/tsat

这篇工作的核心主要包括多变量序列构图Transformer改进两个部分。

在多变量序列构图中,首先通过SMD对原时间序列进行分解,再根据SMD提取出的特征信息进行构图。SMD是经验模态分解的一种方法,它可以将原始的序列拆分成多个序列加一个趋势项,分解出来的序列叫作IMF(内涵模态分量)。IMF是有一定要求的,如极值点的个数和过零点的个数必须相等或相差最多不能超过一个、局部极大值点形成的上包络线和由局部极小值点形成的下包络线的平均值为零等。通过SMD可以把原始序列拆分成多个子序列,这些子序列会作为后续建模的重要特征。EMD分解有比较成熟的python包emd,大家可以自行体验一下分解结果。

在得到每个序列的IMF后,下一步是根据IMF进行构图。每个变量作为一个节点,节点的特征是该变量的时间序列。每两个节点之间都有边特征,边特征是根据两个序列各个IMF分解结果分别计算的相似度,公式如下,计算第i和第j个节点中第k个IMF的相似度:

在邻接矩阵的构造上,文中计算两两节点序列趋势项对应序列的相似度,当相似度大于一定阈值时,这两个序列建立边,通过这种方式将具有相似趋势的变量连接起来。

第二个核心点是Transformer模型的应用。首先对于每个节点使用一个RNN生成embedding,这和我们之前介绍过的Temporal Fusion Transformers for Interpretable Multi-horizon Time Series Forecasting(2019)相同,通过RNN的时序建模能力取代position embedding,增强Transformer对序列中各个点位置关系的感知

本文将self-attention模块的计算方法修改为如下公式,同时考虑节点序列信息、节点间关系信息、图结构信息:

其中第一项就是传统Transformer对每个节点时间序列内部进行self-attention;第二项是引入每个IMF对应边特征的信息,第三项是将邻接矩阵的信息引入。经过多层Transformer后通过layer norm和全连接输出预测结果。

文中在经典的多元序列预测上进行实验,对比了一些图学习模型、深度学习模型的效果,实验结果如下:

2. 论文2-id特征代替复杂图模型

  • 论文题目:Spatial-Temporal Identity: A Simple yet Effective Baseline for Multivariate Time Series Forecasting

  • 开源代码:https://arxiv.org/pdf/2208.05233v2.pdf

  • 开源代码:https://github.com/zezhishao/STID

本文的是CIKM 2022上发表的一篇短文,出发点是一个很简单的现象:历史规律相同的序列,未来的曲线可能不同,导致模型难以只根据历史序列作为不同的预测。比如下面这个例子,最上面的图选取了3个不同的窗口W,P代表历史,F代表未来。W1是空间中两个传感器的变量历史和未来的序列,这两个传感器历史序列基本相同,未来的差异却很大,只根据历史序列拟合一个回归模型是无法建立这种区别的。

以往解决图学习的模型,例如STGCN中,利用图卷积建立空间不同节点之间的关系,同时使用时序模型进行时序建模。这种方式带来效果提升的原因,主要在于引入了卷积带来的了不同节点相同历史序列但是不同未来序列的区分能力。本文认为直接通过加入id embedding的方式就能解决这个问题,因此设计了如下结构:将序列的id、时间信息的id等转换成embedding,和时间序列模型生成的序列表示拼接到一起,用于后续的预测。

从下面的实验结果来看,这种简单的方法效果比之前很多图模型的效果都好:

从下面的消融实验中可以看到,加入每个序列的id embedding对效果影响非常大:

3. 总结

本文介绍了两篇近期发表的多元时间序列预测模型文章,第一篇通过SMD分解原序列建立各个节点的空间关系,并改造Transformer融合时序信息、节点关系信息、图结构信息。第二篇通过简单的引入id embedding的方式达到了和复杂图时空预测模型相当的效果。

  • 4
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
LSTM是一种常用于时间序列预测的神经网络模型。在PyTorch中,可以使用LSTM模型进行时间序列的预测。首先,需要导入必要的库和数据。可以使用NumPy和Pandas库来处理数据,使用Matplotlib和Seaborn库来进行数据可视化。可以使用MinMaxScaler来对数据进行归一化处理。\[3\] 接下来,可以定义LSTM模型。可以使用PyTorch的nn.Module类来创建一个自定义的LSTM模型。在模型中,需要定义LSTM的输入维度、隐藏层维度和输出维度。可以使用nn.LSTM类来创建LSTM层,并将其与线性层(nn.Linear)结合起来作为模型的输出层。\[2\] 在训练模型之前,需要将数据集划分为训练集和测试集,并对其进行归一化处理。可以使用MinMaxScaler来将数据缩放到0和1之间。然后,可以定义损失函数和优化器,并使用训练集对模型进行训练。\[1\] 在预测阶段,可以使用训练好的模型对未来的时间序列进行预测。可以使用model.eval()来将模型设置为评估模式,然后使用torch.no_grad()来禁用梯度计算。可以使用模型的hidden状态来保存LSTM的隐藏状态,并使用模型的输出来进行预测。\[2\] 完整的PyTorch LSTM时间序列预测的示例代码可以在作者的GitHub上找到,链接为:https://github.com/Tuniverj/Pytorch-lstm-forecast。这个示例代码可以作为参考,但需要注意预测结果可能不是非常准确,因为示例代码中没有加入一些常用的技巧,如dropout等。\[1\] #### 引用[.reference_title] - *1* [基于pytorch搭建多特征LSTM时间序列预测代码详细解读(附完整代码)](https://blog.csdn.net/hardworking_T/article/details/126673957)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v4^insert_chatgpt"}} ] [.reference_item] - *2* [基于 PyTorch + LSTM 进行时间序列预测(附完整源码)](https://blog.csdn.net/m0_59596937/article/details/129779542)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v4^insert_chatgpt"}} ] [.reference_item] - *3* [LSTM 时间序列预测+股票预测案例(Pytorch版)](https://blog.csdn.net/qq_44824148/article/details/126222872)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值