本文借鉴了数学建模清风老师的课件与思路,可以点击查看链接查看清风老师视频讲解:【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.
% 工具箱右下角可以切换界面的语言,支持中文和英文。
一、导入数据
注意:导入的数据需为csv文件,xlsx后缀的不行,如果为xlsx等其他文件直接另存为csv即可。
时间序列不需要时间(包括一元时间序列和多元时间序列),若有时间则可以将时间删去,同时数据里允许有缺失值。
若存在缺失值,则会提供三种方法来解决,一般来说是用三次样条插值。可根据插值后的图像来决定用哪种方法,如果发现样条插值后的图像差异较大,可考虑使用前两种方法,如下图:
若是指标较多,可以使用堆叠折线图。
二、两种预测模式
选择不同的模式得到的结果不一样,如下图:
说白了就是先对模型进行调参,然后将得到的最优参数带入进行训练。调参就是第二种模式,将数据集划分成训练集和测试集,测试集包含的样本数是多少,就有多少样本拿来被测试,然后就可以得到准确度。
三、设计LSTM网络
这里直接将鼠标移到对应的数值上,即可知道对应参数的意思。
通常来说LSTM层一层就够了,如果预测的效果不好再加大。
可以将生成的网络图(使用deepNetworkDesigner查看网络)放在论文中,该图比较精美。
四、Adam优化算法的参数设置
将这里的介绍修改后放入自己的论文。文中的伪代码,模型优缺点一样。
五、开始训练
在训练的时候,考虑到训练的时间可能较久,若迭代曲线趋于平稳,则差不多可以停止训练了。
训练完成:
六、汇报最终结果
6.1 调参过程中的的汇报
有很多个参数,可以重点考虑R2,在这里训练集效果一般,测试集效果太差了。。。。。可能是出现了过拟合。需要修改参数。
下图为回归系数图,第一个图为训练集的图,第二个为测试集的图,第三个为将所有数据进行训练的图。其中,重点关注R2和系数,系数越接近1越好,第一个图系数为0.49719,其他两个同理。
下图为几个数据集上的拟合图。
自动调参模块设置了几个学习率和隐藏单元,根据这两个组合从而找到最优的一次参数。训练次数即为这两个参数各自的集合个数相乘,如设置了学习率有两个,隐藏单元有两个,则训练次数为4次。
训练完成后,会得到一个最佳参数的热力图。同时会自动将最优参数写进去。
6.2 调参完成的汇报
在调完参后,就可以用所有的数据来训练模型了。当再次训练完模型后,即可汇报以下这些图像。
没有导出代码。
若想在参考文献中引用这个工具箱,可以在LSTM预测时间序列工具箱链接里复制里面的文献参考。
个人总结:先对模型进行调参,调参后会得到最优的学习率和隐藏单元数量,然后查看训练的结果(误差直方图,回归图等等)好不好,不好的话则对其他参数进行调整,直到得到一个较满意的结果,然后再基于最好的参数来训练所有的数据及预测,最终得到结果,关于这个结果,有RMSE,R2等等评价指标,可以选择其中表现较好的拿去论文中展示(前面模型的调参同理)。