LSTM/BiLSTM/GRU时间序列预测图形界面版软件(公开版)

最后更新于:2023-11-23 17:25:57

LSTM/BiLSTM/GRU时间序列预测图形界面版软件是专为使用LSTM/BiLSTM/GRU等RNN方法进行时间序列预测的工具。

软件中的代码在不定期更新中,不断完善和添加新的功能。

致力于实现优质、易用的程序,帮助研究人员快速实现目标

一、代码运行环境

MATLAB2020a以上版本

二、软件安装方法

1.将下载的压缩包解压,并将MATLAB软件当前文件夹设置为解压后的文件夹路径。

2.双击LSTM_BiLSTM_GRU.mlappinstall

3.点击安装

4.点击“APP”标签页

5.点击下拉三角

6.选择该名称的APP(即LSTM_BiLSTM_GRU)

7.此时软件就打开了,可以参照下文软件功能介绍操作软件了。

三、软件功能介绍

1.支持多种格式数据导入

支持mat、xsl、xslx格式数据的导入。

  • 如果是mat文件,要求文件中只包含单个变量,且为一维数据。
  • 如果是xsl/xslx文件,要求数据为单行/单列,不能包含标题。
2.多种参数设置选项。

(1)深度学习网络类型: 本软件支持三种深度学习网络:GRU,LSTM和BiLSTM。这些网络类型可以满足不同的预测需求,使得软件具有强大的预测能力和广泛的适用性。

(2)LSTM/BiLSTM/GRU层隐藏单元数: 隐藏单元的数量对应于时间步长之间记住的信息量(隐藏状态),隐藏状态可以包含来自所有先前时间步长的信息。如果该值设置过大,可能会导致过拟合。该值可以从几十到几千不等。本软件支持设置多层网络,例如输入”16,8,4“,则代表设置了三次网络,单元数分别是16、8、4

(3)最大迭代数:根据训练数据规模和模型复杂性进行设置,一般在几百到几千次。

(4)mini-banch尺寸:mini-banch是训练集的子集,用于评估损失函数的梯度和更新权重。该参数用于设置mini-banch的尺寸。

(5)梯度极限:为了防止由于梯度过大导致的训练不稳定以及“梯度爆炸”,需要设置梯度极限。这有助于在设置更高的学习率和存在异常值的情况下稳定训练。

(6)初始化学习速率:用于训练的初始学习速率。如果学习率太低,那么训练需要很长时间,如果学习率太高,那么可能无法得到最优结果。

(7)启用学习速率下降:“学习速率下降”指的是学习率每经过特定迭代次数后乘以一个因子,以实现学习速率随着训练的进行不断下降,以兼顾训练速度与训练精度。

(8)下降迭代数:每次学习速率下降所间隔的迭代数

(9)下降因子:每次学习速率下降乘以的因子数

(10)显示训练过程(需要使用完整版程序):选中后会显示LSTM神经网络迭代过程,绘制如下图像:(建议勾选)

(11)数据归一化:选中后会在模型训练前将数据进行归一化,并在训练完成后还原。建议勾选。

(12)随机种子:选中后会设置随机种子,即每次训练结果将会保持一致。可根据实际情况勾选。

(13)绘制独立窗口图片(便于导出,需要使用完整版程序):可以绘制预测结果对比图、Loss及RMSE值,即下述两张图:

3.三种训练与预测模式。

(1)全部数据用于多步预测:预测“不存在”的数据。在软件中指定想预测的长度,点击开始训练就可以了。效果如下(自带案例):

此时需要你设置“预测序列长度”,也就是你想要往后预测多少个数据点。需要注意,由于此时预测的数据都是未来的未知数据,所以无法计算评估预测精度的相关参数。

(2)划分“训练-测试集”的多步预测:将全部数据按照一定比例划分成训练集和测试集,然后多步预测出于测试集相同长度的数据,并画图对比,计算若干评估指标。这种模式下结果往往并不太理想。效果如下(自带案例):

此时需要你设置的是“训练集比例/数量”,小于1时代表训练集比例,大于1的整数时代表训练集数量。右侧的RMSE、MAPE、MAE、MSE、R代表评估预测效果(测试集预测值相对于测试集真实值)的指标。

(3)划分“训练-测试集”的单步预测:将全部数据按照一定比例划分成训练集和测试集,然后单步预测出于测试集相同长度的数据,并画图对比,计算若干评估指标。这种模式下结果往往较好。效果如下(自带案例):

关于单步与多步的区别,大家可以看这里:答疑:时间序列预测中,单步预测与多步预测的区别?

此时需要你设置的是同样是“训练集比例/数量”,小于1时代表训练集比例,大于1的整数时代表训练集数量。右侧的RMSE、MAPE、MAE、MSE、R代表评估预测效果(测试集预测值相对于测试集真实值)的指标。

4.数据导出(需要使用完整版程序)。

点击“导出数据”:

  • 可以将预测结果、训练集数据、测试集数据、残差、拟合值等导出。
  • 可以自定义保存路径。
  • 保存格式为Excel

四、关于完整版与试用版代码

功能完整版试用版
数据导入、参数设置、模型训练与可视化结果展示
软件全部源码(包括软件工程mlapp文件与函数m文件)×
可导出预测结果数据×
预测图无水印×
显示训练过程/绘制独立窗口图片×
预测步数/训练集比例预测序列长度不大于20,比例为固定值0.9
无限次训练上限为3次

五、获取公开版程序(需使用电脑浏览器打开)

点击此处下载公开版程序

六、获取图形界面版LSTM/BiLSTM/GRU时间序列预测软件(完整版)

获取通道一(淘宝):点击此处获取完整版程序

获取通道二(本页面):点击下面“立即支付”按钮,付款后获取完整版代码下载链接和售后联系方式~本通道处于测试阶段,使用该通道可以额外优惠(仅需108元)。付款完成后刷新一下本页面即可看到下载链接。

(注意支付跳转失败的话,请使用浏览器打开本页面)

您需要先支付 98元 才能查看此处内容!立即支付

七、源码介绍

如果购买完整版代码,你将会得到实现该工程项目的所有源码,即下图中的所有文件。有源码大家可以更方便了解算法的实现过程,按照自己需求更改代码,有更大的灵活性和学术价值。

关于源码的详细介绍如下:

注:图标代表该m文件为脚本文件,可以直接运行;图标代表函数文件,在没有输入变量的情况下无法直接运行。更详细的解释可以看这里

1.RNNs_OfficialVersion.mlapp文件

图形界面主程序,需要在MATLAB的APPdesigner中打开。可用于使用图形界面操作LSTM/BiLSTM/GRU的时间序列预测功能。

2.Fun_RNNs_Fore_Onestep_TrainAndTest.m文件

LSTM/BiLSTM/GRU神经网络做时间序列预测“预测”的程序(单步),部分数据用来训练,剩余数据拿来做对比验证。该函数在图形界面软件中调用,是底层实现函数之一。该文件为函数文件,需调用,不能直接运行。

function [foreDataRe,info,ind,net,YTrainRe,YTestRe,XTrainRe] = Fun_RNNs_Fore_Onestep_TrainAndTest(data,numHU,dropProb,MaxEp,MiniBatch,GraThr,InitLearnRa,Plots,LearnSch,LearnRaDP,LearnRaDF,NorFlag,SeedFlag,rnnName,figflag,rTrain,indNamesCell)
% LSTM/BiLSTM/GRU神经网络做时间序列预测“预测”的程序(单步),部分数据用来训练,剩余数据拿来做对比验证
% 输入:
% data:输入的时间序列数据,类型为cell或者dat
% numHU:即numHiddenUnits,LSTM的隐含单元数。该参数可以设置为数组,表示的是构建多层网络,例如numHU=[16,8],代表构建了两层网络结构,第一层16个隐藏单元,第二层8个隐藏单元
% dropProb:丢弃层的丢弃概率,如果不丢弃,则设置为0,最大为1
% MaxEp:即MaxEpochs,最大迭代次数
% MimiBatch:批尺寸
% GraThr:即GradientThreshold梯度极限(1)
% InitLearnRa:即InitialLearnRate初始化学习速率(0.005)
% Plots:是否画出训练过程,1为是,其他值为否
% LearnSch:即LearnRateSchedule是否在一定迭代次数后学习速率下降,1为使用, LearnSch ='piecewise',其他值为不使用
% LearnRaDP:即LearnRateDropPeriod学习速率下降时的迭代数
% LearnRaDF:即LearnRateDropFactor学习速率下降因子,下降后变为LearnRaDF*InitLearnRa,LearnSch为0时可以赋0
% NorFlag:即Normalization Flag,设置为1时则在程序中进行数据归一化和反归一化操作,否则不进行,建议设置为1
% SeedFlag:随机种子标志,设置为1时启用随机种子
% rnnName:使用的网络名称,可选项包括:'GRU','LSTM','BiLSTM',注意大小写
% figflag:是否画预测结果图,'on'为画图,'off'为不画
% rTrain:训练集比例/数量,rTrain<1时代表训练集比例,>1的整数时代表训练集数量.
% indNamesCell:拟进行预测评价指标名称,该变量为cell类型,其中包含的指标名称为字符串,指标名称在下边列表中:
%   目前支持的指标(2021.8.11):
%   MSE:均方误差(Mean Square Error)
%   RMSE:均方根误差(Root Mean Square Error)
%   MAE:平均绝对误差(Mean Absolute Error)
%   MAPE:平均绝对百分比误差(Mean Absolute Percentage Error)
%   R2:决定系数(R2-R-Square)
%   如果想获取MSE、MAE两个指标,则设置:indNamesCell = {'MSE','MAE'}

% 输出:
% foreDataRe:预测值,对应测试集的Y值
% info:训练过程数据,包括TrainingLoss、TrainingRMSE、BaseLearnRate等
% ind:预测效果评价指标结果数组,其评价指标值顺序与indNamesCell一一对应
% net:训练好的神经网络
% YTrainRe:训练集的Y值
% YTestRe:测试集的Y值

3.Fun_RNNs_Fore_Mul_TrainAndTest.m文件

LSTM/BiLSTM/GRU神经网络做时间序列预测“预测”的程序(多步),部分数据用来训练,剩余数据拿来做对比验证。该函数在图形界面软件中调用,是底层实现函数之二。该文件为函数文件,需调用,不能直接运行。

function [foreDataRe,info,ind,net,YTrainRe,YTestRe,XTrainRe] = Fun_RNNs_Fore_Mul_TrainAndTest(data,numHU,dropProb,MaxEp,MiniBatch,GraThr,InitLearnRa,Plots,LearnSch,LearnRaDP,LearnRaDF,NorFlag,SeedFlag,rnnName,figflag,rTrain,indNamesCell)
% LSTM/BiLSTM/GRU神经网络做时间序列预测“预测”的程序(多步),部分数据用来训练,剩余数据拿来做对比验证
% 输入:
% data:输入的时间序列数据,类型为cell或者dat
% numHU:即numHiddenUnits,LSTM的隐含单元数
% dropProb:丢弃层的丢弃概率,如果不丢弃,则设置为0,最大为1
% MaxEp:即MaxEpochs,最大迭代次数
% MimiBatch:批尺寸
% GraThr:即GradientThreshold梯度极限(1)
% InitLearnRa:即InitialLearnRate初始化学习速率(0.005)
% Plots:是否画出训练过程,1为是,其他值为否
% LearnSch:即LearnRateSchedule是否在一定迭代次数后学习速率下降,1为使用, LearnSch ='piecewise',其他值为不使用
% LearnRaDP:即LearnRateDropPeriod学习速率下降时的迭代数
% LearnRaDF:即LearnRateDropFactor学习速率下降因子,下降后变为LearnRaDF*InitLearnRa,LearnSch为0时可以赋0
% NorFlag:即Normalization Flag,设置为1时则在程序中进行数据归一化和反归一化操作,否则不进行,建议设置为1
% SeedFlag:随机种子标志,设置为1时启用随机种子
% rnnName:使用的网络名称,可选项包括:'GRU','LSTM','BiLSTM',注意大小写
% figflag:是否画预测结果图,'on'为画图,'off'为不画
% rTrain:训练集比例/数量,rTrain<1时代表训练集比例,>1的整数时代表训练集数量.
% indNamesCell:拟进行预测评价指标名称,该变量为cell类型,其中包含的指标名称为字符串,指标名称在下边列表中:
%   目前支持的指标(2021.8.11):
%   MSE:均方误差(Mean Square Error)
%   RMSE:均方根误差(Root Mean Square Error)
%   MAE:平均绝对误差(Mean Absolute Error)
%   MAPE:平均绝对百分比误差(Mean Absolute Percentage Error)
%   R2:决定系数(R2-R-Square)
%   如果想获取MSE、MAE两个指标,则设置:indNamesCell = {'MSE','MAE'}

% 输出:
% foreDataRe:预测值,对应测试集的Y值
% info:训练过程数据,包括TrainingLoss、TrainingRMSE、BaseLearnRate等
% ind:预测效果评价指标结果数组,其评价指标值顺序与indNamesCell一一对应
% net:训练好的神经网络
% YTrainRe:训练集的Y值
% YTestRe:测试集的Y值

4.Fun_RNNs_Fore_Mul.m文件

LSTM/BiLSTM/GRU神经网络做时间序列预测“预测”的程序(多步),全部数据用来训练,预测未来数据。该函数在图形界面软件中调用,是底层实现函数之三。该文件为函数文件,需调用,不能直接运行。

function [foreDataRe,info,net] = Fun_RNNs_Fore_Mul(data,PredNum,numHU,dropProb,MaxEp,MiniBatch,GraThr,InitLearnRa,Plots,LearnSch,LearnRaDP,LearnRaDF,NorFlag,SeedFlag,rnnName,figflag)
% LSTM/BiLSTM/GRU神经网络做时间序列预测“预测”的程序(多步),全部数据用来训练,预测未来数据
% 输入:
% data:输入的时间序列数据,类型为cell或者dat
% PredNum:要进行预测的步数,步长即训练用的数据的步长。
% numHU:即numHiddenUnits,LSTM的隐含单元数
% dropProb:丢弃层的丢弃概率,如果不丢弃,则设置为0,最大为1
% MaxEp:即MaxEpochs,最大迭代次数
% MimiBatch:批尺寸
% GraThr:即GradientThreshold梯度极限(1)
% InitLearnRa:即InitialLearnRate初始化学习速率(0.005)
% Plots:是否画出训练过程,1为是,其他值为否
% LearnSch:即LearnRateSchedule是否在一定迭代次数后学习速率下降,1为使用, LearnSch ='piecewise',其他值为不使用
% LearnRaDP:即LearnRateDropPeriod学习速率下降时的迭代数
% LearnRaDF:即LearnRateDropFactor学习速率下降因子,下降后变为LearnRaDF*InitLearnRa,LearnSch为0时可以赋0
% NorFlag:即Normalization Flag,设置为1时则在程序中进行数据归一化和反归一化操作,否则不进行,建议设置为1
% SeedFlag:随机种子标志,设置为1时启用随机种子
% rnnName:使用的网络名称,可选项包括:'GRU','LSTM','BiLSTM',注意大小写
% figflag:是否画预测结果图,'on'为画图,'off'为不画

% 输出:
% foreDataRe:预测值,对应测试集的Y值
% info:训练过程数据,包括TrainingLoss、TrainingRMSE、BaseLearnRate等
% net:训练好的神经网络

5.EvaForeEffect.m文件

用于评价时间序列预测效果各个量化指标的通用函数。该文件为函数文件,需调用,不能直接运行。

function ind = EvaForeEffect(realData,foreData,indNamesCell)
% 用于评价时间序列预测效果各个量化指标的通用函数
% 输入:
% realData:真实值
% foreData:预测值
% indNamesCell:拟进行预测评价指标名称,该变量为cell类型,其中包含的指标名称为字符串,指标名称在下边列表中:
% 目前支持的指标(2021.12.5):
% MSE:均方误差(Mean Square Error)
% RMSE:均方根误差(Root Mean Square Error)
% MAE:平均绝对误差(Mean Absolute Error)
% MAPE:平均绝对百分比误差(Mean Absolute Percentage Error)
% R2:决定系数(R2-R-Square)
% R:相关系数
% 如果想获取MSE、MAE两个指标,则设置:indNamesCell = {'MSE','MAE'}
% 输出:
% ind:预测效果评价指标结果数组,其评价指标值顺序与indNamesCell一一对应

6.demo_RNNs_Fore_Onestep_TrainAndTest.m文件

测试Fun_RNNs_Fore_Onestep_TrainAndTest文件的脚本,演示了LSTM/BiLSTM/GRU神经网络做时间序列预测“预测”的程序(单步)的纯代码实现方法。

7.demo_RNNs_Fore_Mul_TrainAndTest.m文件

测试Fun_RNNs_Fore_Mul_TrainAndTest文件的脚本,演示了LSTM/BiLSTM/GRU神经网络做时间序列预测“预测”的程序(多步,划分训练集/测试集)的纯代码实现方法。

8.demo_RNNs_Fore_Mul.m文件

测试Fun_RNNs_Fore_Mul文件的脚本,演示了LSTM/BiLSTM/GRU神经网络做时间序列预测“预测”的程序(多步,全部数据用来训练,预测未来数据)的纯代码实现方法。

9.chickenpox.mat文件

演示案例中使用的测试数据,这是一个时间序列数据集,记录了一段时间内在某一地区每月报告的水痘病例数。

八、重要更新

20230523 (重大更新)加入BiLSTM/GRU网络;可以设置多个隐藏层;加入丢弃层,可以设置丢弃层概率;加入绘制独立窗口图片功能;评价指标增加MSE、MAE和R;修复部分已知bug;已经购买过改代码的同学可以联系老板免费获取更新~

20210908 现在可以导出训练过程的Loss曲线值、RMSE曲线值和学习率值(需要MATLAB2020及以上版本)

20201027 初始版本(试用版版本)

加入BiLSTM/GRU网络;可以设置多个隐藏层;加入丢弃层,可以设置丢弃层概率;加入绘制独立窗口图片功能;修复部分已知bug;评价指标增加MSE、MAE和R;已经购买过改代码的同学可以联系老板免费获取更新~