基于图卷积神经网络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

总结

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

目录
相关文章
|
30天前
|
机器学习/深度学习 数据采集 存储
时间序列预测新突破:深入解析循环神经网络(RNN)在金融数据分析中的应用
【10月更文挑战第7天】时间序列预测是数据科学领域的一个重要课题,特别是在金融行业中。准确的时间序列预测能够帮助投资者做出更明智的决策,比如股票价格预测、汇率变动预测等。近年来,随着深度学习技术的发展,尤其是循环神经网络(Recurrent Neural Networks, RNNs)及其变体如长短期记忆网络(LSTM)和门控循环单元(GRU),在处理时间序列数据方面展现出了巨大的潜力。本文将探讨RNN的基本概念,并通过具体的代码示例展示如何使用这些模型来进行金融数据分析。
194 2
|
9天前
|
机器学习/深度学习 计算机视觉 Python
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力本文提出了一种简单且高效的卷积神经网络(ConvNets)注意力模块——SimAM。与现有模块不同,SimAM通过优化能量函数推断特征图的3D注意力权重,无需添加额外参数。SimAM基于空间抑制理论设计,通过简单的解决方案实现高效计算,提升卷积神经网络的表征能力。代码已在Pytorch-SimAM开源。
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
|
2天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络:从理论到实践
【10月更文挑战第35天】在人工智能的浪潮中,深度学习技术以其强大的数据处理能力成为科技界的宠儿。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,在图像识别和视频分析等领域展现出了惊人的潜力。本文将深入浅出地介绍CNN的工作原理,并结合实际代码示例,带领读者从零开始构建一个简单的CNN模型,探索其在图像分类任务中的应用。通过本文,读者不仅能够理解CNN背后的数学原理,还能学会如何利用现代深度学习框架实现自己的CNN模型。
|
23天前
|
机器学习/深度学习 人工智能 监控
深入理解深度学习中的卷积神经网络(CNN):从原理到实践
【10月更文挑战第14天】深入理解深度学习中的卷积神经网络(CNN):从原理到实践
70 1
|
2月前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
104 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
27天前
|
机器学习/深度学习 算法 数据挖掘
基于GWO灰狼优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了基于分组卷积神经网络(GroupCNN)和灰狼优化(GWO)的时间序列回归预测算法。算法运行效果良好,无水印展示。使用Matlab2022a开发,提供完整代码及详细中文注释。GroupCNN通过分组卷积减少计算成本,GWO则优化超参数,提高预测性能。项目包含操作步骤视频,方便用户快速上手。
|
28天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于WOA鲸鱼优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了一种基于WOA优化的GroupCNN分组卷积网络时间序列预测算法。使用Matlab2022a开发,提供无水印运行效果预览及核心代码(含中文注释)。算法通过WOA优化网络结构与超参数,结合分组卷积技术,有效提升预测精度与效率。分组卷积减少了计算成本,而WOA则模拟鲸鱼捕食行为进行优化,适用于多种连续优化问题。
|
1月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GA遗传优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
该算法结合了遗传算法(GA)与分组卷积神经网络(GroupCNN),利用GA优化GroupCNN的网络结构和超参数,提升时间序列预测精度与效率。遗传算法通过模拟自然选择过程中的选择、交叉和变异操作寻找最优解;分组卷积则有效减少了计算成本和参数数量。本项目使用MATLAB2022A实现,并提供完整代码及视频教程。注意:展示图含水印,完整程序运行无水印。
|
28天前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
50 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
2月前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
97 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
下一篇
无影云桌面