基于图卷积神经网络GCN的时间序列预测:图与递归结构相结合的库存品需求预测

简介: 基于图卷积神经网络GCN的时间序列预测:图与递归结构相结合的库存品需求预测

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

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

image.png

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


数据

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

image.png

我们可以使用的数据很少:只有销售额和商品和商店的数字编码。这仍然足以让我们强调一个基本的等级结构。我们所需要做的就是将这个系列按照商品级别进行分组,这样我们就得到了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)归一化来估计邻接矩阵,该归一化可以基于谱卷积的一阶近似来提供高效的逐传播规则(前向和后向传播)。

image.png

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

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

image.png

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

image.png

总结

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

目录
相关文章
|
2天前
|
机器学习/深度学习 编解码 算法
深度学习之解构基础网络结构
本文和大家梳理分享一下大师们的探索成果,即经典的基础网络(backbone)以及关键思想,附带实现过程。5月更文挑战第6天
24 3
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
【AI 初识】递归神经网络 (RNN) 概念
【5月更文挑战第2天】【AI 初识】递归神经网络 (RNN) 概念
|
13天前
网络拓扑结构
网络拓扑结构主要包括星型、环型、总线型、树型和网状型。星型拓扑以中心节点控制全网,简单易管理,但依赖中央节点。环型拓扑信息沿环路传递,故障可能影响全网。总线型结构简洁适合小规模网络。树型拓扑是多星型结构的组合,适合复杂网络环境,具有扩展性。网状拓扑节点间多路径连接,提高可靠性,但结构复杂,成本高。
25 2
|
14天前
|
机器学习/深度学习 算法 TensorFlow
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
|
14天前
|
数据可视化 算法 数据挖掘
R语言SIR模型网络结构扩散过程模拟SIR模型(Susceptible Infected Recovered )代码实例
R语言SIR模型网络结构扩散过程模拟SIR模型(Susceptible Infected Recovered )代码实例
|
14天前
|
网络协议 算法 数据库
【专栏】OSPF是广泛应用的链路状态路由协议,通过分层网络结构和SPF算法实现高效路由。强烈建议收藏!
【4月更文挑战第28天】OSPF是广泛应用的链路状态路由协议,通过分层网络结构和SPF算法实现高效路由。其关键特性包括区域划分、链路状态数据库、邻居关系和路由更新。工作过程涉及邻居发现、信息交换、数据库构建、路由计算及收敛。理解OSPF对于网络管理和规划具有重要意义。
|
14天前
|
网络架构
【专栏】网络拓扑是现代通信系统设计的关键,影响网络结构、性能和可扩展性
【4月更文挑战第28天】网络拓扑是现代通信系统设计的关键,影响网络结构、性能和可扩展性。本文探讨了网络拓扑概念及主要类型,包括星形(易于配置,中心节点故障可能导致瘫痪)、总线形(简单低成本,但信号衰减和冲突)、环形(高流量处理,单点故障致网络中断)、网状(高冗余和可靠性,适用于高性能环境)和树形(层次结构,适合大型网络)。选择拓扑需考虑网络规模、成本、性能和实际环境。了解各种拓扑有助于构建高效稳定的网络。
|
24天前
|
机器学习/深度学习 传感器 自然语言处理
R语言KERAS用RNN、双向RNNS递归神经网络、LSTM分析预测温度时间序列、 IMDB电影评分情感
R语言KERAS用RNN、双向RNNS递归神经网络、LSTM分析预测温度时间序列、 IMDB电影评分情感
|
25天前
|
机器学习/深度学习
HAR-RV-J与递归神经网络(RNN)混合模型预测和交易大型股票指数的高频波动率
HAR-RV-J与递归神经网络(RNN)混合模型预测和交易大型股票指数的高频波动率
|
25天前
|
机器学习/深度学习 传感器 自然语言处理
R语言基于递归神经网络RNN的温度时间序列预测
R语言基于递归神经网络RNN的温度时间序列预测