时间序列预测任务可以按照不同的方法执行。最经典的是基于统计和自回归的方法。更准确的是基于增强和集成的算法,我们必须使用滚动周期生成大量有用的手工特性。另一方面,我们可以使用在开发过程中提供更多自由的神经网络模型,提供对顺序建模的可定制的特性。

循环和卷积结构在时间序列预测中取得了巨大的成功。该领域中有趣的方法是通过采用最初在NLP中本地的Transformers和Attention架构。图结构的使用似乎不常见,在图结构中,我们有一个由不同节点组成的网络,这些节点之间通过某种链接相互关联。我们尝试做的是使用时间序列的图形表示来产生未来的预测。

在这篇文章中,我们完成了一个销售预测任务,我们利用图卷积神经网络探索数据的嵌套结构,由不同商店中不同商品的不同销售系列组成。

数据

数据集是从Kaggle上过去的竞赛中收集的。 Store Item Demand Forecasting Challenge预测挑战提供了4年的销售数据,以每天的格式在不同的商店出售的不同的项目。我们有10家店,50种产品,共500个系列。每个商店都出售每种产品。我们的范围是每天为所有项目提供准确的未来预测。

我们可以使用的数据很少:只有销售额和商品和商店的数字编码。这仍然足以让我们强调一个基本的等级结构。我们所需要做的就是将这个系列按照商品级别进行分组,这样我们就得到了50个组(商品),每个组由10个系列(每个商店中出售的商品)组成;上图中描述了一个组的例子。

在经典的图网络中,所有相关信息都存储在一个称为邻矩阵的对象中。这是数据中所有连接的数值表示。我们的上下文中的相邻矩阵可以通过所有商店中给定商品的销售序列计算得到的相关矩阵来检索。

在我们的方法中,因为要像处理递归体系结构那样将数据分片处理,所以需要对序列进行重新划分,这也是我们模型的一部分。

模型

我们的模型作为输入,接收来自所有商店的销售序列和来自相同序列的相邻矩阵。序列通过LSTM层,而相关矩阵则由图形转换层处理。它们是在Spektral中实现的,Spektral是一个基于Tensorflow的图形深度学习库。它有各种可用的图形层。我们使用最基本的一种,图形进化。它在可学习权重、外部节点特征(与相邻矩阵一起提供)和我们的相关矩阵之间执行一系列卷积操作。不太可能,目前Spektral不支持Window,所以我必须手动提取感兴趣的类并创建Python可执行文件。

我们的模型接收来自所有商店的销售序列和来自相同序列的相邻矩阵作为输入。序列通过LSTM层传递,相关矩阵由GraphConvolution层处理。它们是在Spektral中实现的,Spektral是一个很酷的库,用于基于Tensorflow的图形深度学习。它有各种可用的图形层。我们使用最基本的一个,图卷积GCN。它在可学习的权值、外部节点特征(与邻近矩阵一起提供)和我们的相关矩阵之间进行一系列卷积运算。目前Spektral不支持Window。

def get_model():    opt = Adam(lr=0.001)    inp_seq = Input((sequence_length, 10))    inp_lap = Input((10, 10))    inp_feat = Input((10, X_train_feat.shape[-1]))        x = GraphConv(32, activation='relu')([inp_feat, inp_lap])    x = GraphConv(16, activation='relu')([x, inp_lap])    x = Flatten()(x)        xx = LSTM(128, activation='relu',return_sequences=True)(inp_seq)    xx = LSTM(32, activation='relu')(xx)        x = Concatenate()([x,xx])    x = BatchNormalization()(x)    x = Dropout(0.5)(x)    x = Dense(128, activation='relu')(x)    x = Dense(32, activation='relu')(x)    x = Dropout(0.3)(x)    out = Dense(1)(x)        model = Model([inp_seq, inp_lap, inp_feat], out)    model.compile(optimizer=opt, loss='mse', metrics=[tf.keras.metrics.RootMeanSquaredError()])        return model

如前所述,在开发递归网络时,数据总是像往常一样被处理。序列一个在固定的时间内的商店的产品的销售集合。

在我们的例子中,下一步的步骤是在相同的序列上计算商店间销售的相关矩阵,它表示我们的相邻矩阵。同时还有一些人工特征(如均值、标准差、偏度、峰度、回归系数),由我们对每个序列进行计算,代表我们在网络中的节点特征。

对于给定的样本协方差或相关矩阵,我们可以使用拉普拉斯(Laplacian)归一化来估计邻接矩阵,该归一化可以基于谱卷积的一阶近似来提供高效的逐传播规则(前向和后向传播)。

训练集是用前两年的数据计算的,而剩下的两年分别用于验证和测试。我为每个商店训练了一个模型,所以我们总共有10个不同的神经网络。

在训练过程的最后,通过相关模型对预测结果进行检索。误差以测试数据上的RMSE计算,下面是报表展示。

以同样的方式,很容易提取所需预测数据

总结

在这篇文章中,我采用了图形神经网络在不常见的情况下,如时间序列预测。在我们的深度学习模型中,图依赖与递归部分相结合,试图提供更准确的预测。这种方法似乎很适合我们的问题,因为我们可以强调数据中的基本层次结构,并用相关矩阵对其进行编码

作者:Marco Cerliani

github地址:cerlymarco/MEDIUM_NoteBook

tensorflow lstm 预测_图卷积神经网络GCN与递归结构RNN相结合的时间序列预测相关推荐

  1. 【中国图形图像学报】面向COVID-19疫情预测的图卷积神经网络时空数据学习——CCF B、CSCD

    [中国图形图像学报]面向COVID-19疫情预测的图卷积神经网络时空数据学习 摘 要 当前的疾病传播研究主要集中于时序数据和传染病模型,缺乏运用空间信息提升预测精度的探索和解释.在处理时空数据时需要分 ...

  2. (21) 出行需求预测新视角---基于图卷积神经网络GCN的出租车OD需求预测

    交通预见未来(21): 出行需求预测新视角---基于图卷积神经网络GCN的出租车OD需求预测 1.文章信息 <Origin-Destination Matrix Prediction via G ...

  3. 深入理解图卷积神经网络(GCN)原理

    深入理解图卷积神经网络(GCN)原理 文章目录 深入理解图卷积神经网络(GCN)原理 前言 一.为什么需要GCN 二.GCN的原理 1.图的定义 2.GCN来了 2.1 矩阵计算公式 2.2 以小规模 ...

  4. 图卷积神经网络GCN大白话解读!

    何时能懂你的心--图卷积神经网络(GCN) https://zhuanlan.zhihu.com/p/71200936 蝈蝈 把知道的讲清楚.公众号SimpleAI,欢迎来逛逛. 已关注 天雨粟 . ...

  5. DeepLearning | 图卷积神经网络(GCN)解析(论文、算法、代码)

    本篇博客主要讲述三种图卷积网络(Graph Convolutional Network, GCN)的算法原理及python实现,全文阅读时间约10分钟. 博主关于图神经网络的文章 DeepLearni ...

  6. 图卷积神经网络(GCN)综述与实现(PyTorch版)

    图卷积神经网络(GCN)综述与实现(PyTorch版) 本文的实验环境为PyTorch = 1.11.0 + cu113,PyG = 2.0.4,相关依赖库和数据集的下载请见链接. 一.图卷积神经网络 ...

  7. 图卷积神经网络(GCN)理解与tensorflow2.0代码实现

    图(Graph),一般用 G=(V,E)G=(V,E)G=(V,E) 表示,这里的VVV是图中节点的集合,EEE 为边的集合,节点的个数用NNN表示.在一个图中,有三个比较重要的矩阵: 特征矩阵XXX ...

  8. 【深度学习理论】(5) 图卷积神经网络 GCN

    尽管在过去的几年中,神经网络的兴起与成功应用使得许多目标检测.自然语言处理.语音识别等领域都有了飞跃发展,但是将 RNN 或者GCN这样的深度学习模型拓展到任意结构的图上是一个有挑战性的问题.受限于传 ...

  9. 图卷积神经网络GCN中的关键公式推导---干货

    GCN推导(比较关键的部分) GCN公式推导的时候,需要用到线性代数和傅里叶变换的一些定理, 比如拉普拉斯矩阵是实对称矩阵,其标准化都的数值分布在[0,2]之间 比如傅里叶变换的原理就是多个正弦余弦函 ...

最新文章

  1. 2012年12月4期手机网页开发
  2. 别怕,BCH无惧攻击
  3. sqap不支持python3吗_Supporting Python 3(支持python3)——欢迎来到Python 3
  4. linux内核模块签名,如何签名内核模块Ubuntu 18.04
  5. java求面积Shape类_Shape-2,形状类,正方形类,长方形类,圆类,求周长面积
  6. 静态服务器显示固定页面,【Python高级编程034 ● 静态web服务器 ● 静态Web服务器-返回固定页面数据】...
  7. 【NLP】 深度学习NLP开篇-循环神经网络(RNN)
  8. 使用说明 vector_Paddlepaddle学习|Ubuntu环境使用 Mahout 进行朴素贝叶斯模型的训练和测试...
  9. Mongodb和redis书籍调研
  10. Centos kvm虚拟sever
  11. 从 Flink 应用场景出发,了解它的设计思路
  12. 分类和回归的区别和联系
  13. c语言编程题一空几分,C语言编程规范试题
  14. html api中文文档,Svelte API 中文文档 | Svelte 中文网
  15. ue4 迁移模型_UE4换装系统(合并骨骼模型)
  16. hbase倒序查询_hbase过滤器汇总【查询汇总】
  17. matlab 加随机数,随机数加上100:Matlab
  18. 汇编语言--x86汇编指令集大全
  19. 2021年全球与中国孕妇防辐射服行业市场规模及发展前景分析
  20. word实现转换成图片的实现

热门文章

  1. Linux C : Makefile 的编写和示例
  2. java 图像刺绣算法_图像处理:OpenCV3源代码文件解析
  3. 源码网站都有哪些_一个网站都包括哪些费用?
  4. 启明云端分享| ESP32-C6是乐鑫首款低功耗、高性价比的 Wi-Fi 6 和蓝牙 5 SoC,一起来看看C6还有哪些重要功能
  5. html入门moz a,css 让文字不被选中之-moz-user-select 属性介绍
  6. “智感超清”之HDR技术落地实践
  7. gearman服务连接php,Gearman异步服务安装使用
  8. 当前默认服务器维护尚未完成,HTTP 1.1状态代码及其含义说明
  9. oracle product文件,快速修复Oracle参数文件的另类方法
  10. cocos cr躲避类游戏的暂停、继续、重新开始_社团班级团建游戏活动安排