LSTM时间序列预测

本文借鉴了数学建模清风老师的课件与思路,可以点击查看链接查看清风老师视频讲解:【1】演示:基于LSTM深度学习网络预测时间序列(MATLAB工具箱)_哔哩哔哩_bilibili

% Forecast of time series based on LSTM deep learning network 
% (supporting multiple time series)
% 基于LSTM深度学习网络对时间序列进行预测(支持多元时间序列)

% Requires:  Windows computers and  MATLAB version 2021a or later!
% Deep Learning Toolbox is also needed.
% Unzip the code before running it and don't forget to change current folder.
% 要求:Windows电脑和MATLAB 2021a版本或更高版本!
% 还需要深度学习工具箱 Deep Learning Toolbox
% 运行代码前要解压压缩包,不要忘记更改当前文件夹


P_LSTM_Main_Function


% The language of the interface can be switched in the bottom 
% right corner of the toolbox, supporting Chinese and English.
% 工具箱右下角可以切换界面的语言,支持中文和英文。

一、导入数据

时间序列不需要时间(包括一元时间序列和多元时间序列),若有时间则可以将时间删去,同时数据里允许有缺失值。

若存在缺失值,则会提供三种方法来解决,一般来说是用三次样条插值。可根据插值后的图像来决定用哪种方法,如果发现样条插值后的图像差异较大,可考虑使用前两种方法,如下图:

若是指标较多,可以使用堆叠折线图。

二、两种预测模式

选择不同的模式得到的结果不一样,如下图:

说白了就是先对模型进行调参,然后将得到的最优参数带入进行训练。调参就是第二种模式,将数据集划分成训练集和测试集,测试集包含的样本数是多少,就有多少样本拿来被测试,然后就可以得到准确度。

三、设计LSTM网络

这里直接将鼠标移到对应的数值上,即可知道对应参数的意思。

通常来说LSTM层一层就够了,如果预测的效果不好再加大。

可以将生成的网络图(使用deepNetworkDesigner查看网络)放在论文中,该图比较精美。

四、Adam优化算法的参数设置

将这里的介绍修改后放入自己的论文。文中的伪代码,模型优缺点一样。

五、开始训练

 在训练的时候,考虑到训练的时间可能较久,若迭代曲线趋于平稳,则差不多可以停止训练了。

 训练完成:

六、汇报最终结果

6.1 调参过程中的的汇报

有很多个参数,可以重点考虑R2,在这里训练集效果一般,测试集效果太差了。。。。。可能是出现了过拟合。需要修改参数。

下图为回归系数图,第一个图为训练集的图,第二个为测试集的图,第三个为将所有数据进行训练的图。其中,重点关注R2和系数,系数越接近1越好,第一个图系数为0.49719,其他两个同理。

下图为几个数据集上的拟合图。

自动调参模块设置了几个学习率和隐藏单元,根据这两个组合从而找到最优的一次参数。训练次数即为这两个参数各自的集合个数相乘,如设置了学习率有两个,隐藏单元有两个,则训练次数为4次。

训练完成后,会得到一个最佳参数的热力图。同时会自动将最优参数写进去。

6.2 调参完成的汇报

在调完参后,就可以用所有的数据来训练模型了。当再次训练完模型后,即可汇报以下这些图像。

没有导出代码。

若想在参考文献中引用这个工具箱,可以在LSTM预测时间序列工具箱链接里复制里面的文献参考。

个人总结:先对模型进行调参,调参后会得到最优的学习率和隐藏单元数量,然后查看训练的结果(误差直方图,回归图等等)好不好,不好的话则对其他参数进行调整,直到得到一个较满意的结果,然后再基于最好的参数来训练所有的数据及预测,最终得到结果,关于这个结果,有RMSE,R2等等评价指标,可以选择其中表现较好的拿去论文中展示(前面模型的调参同理)。

 

相关推荐

  1. lstm时间序列预测python

    2024-01-21 23:48:02       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-21 23:48:02       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-21 23:48:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-21 23:48:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-21 23:48:02       18 阅读

热门阅读

  1. python定义可调用的类型

    2024-01-21 23:48:02       29 阅读
  2. Debezium发布历史77

    2024-01-21 23:48:02       34 阅读
  3. QT上位机开发(Web API联调)

    2024-01-21 23:48:02       32 阅读
  4. gin中使用JWT

    2024-01-21 23:48:02       37 阅读