基于Matlab的深度学习LSTM模型时间序列多步预测——多对单

       LSTM在时间序列预测方面的应用非常广,但有相当一部分没有考虑使用多长的数据预测下一个,类似AR模型中的阶数P。我基于matlab2021版编写了用LSTM模型实现多步预测时间序列的程序代码,可以自己调整使用的数据“阶数”。序列数据是我随机生成的,如果有自己的数据,就可以自己简单改一下代码,读取txt或excel都可以。注意读取后的序列必须命名为行向量。代码最后还提供了误差分析部分,展示了绝对误差、MAE、RMSE、MAPE共4个误差指标,可供参考。代码基于matlab2021版编写,适用于2021版之后的所有版本。

      以下是模型训练过程,每次运行过程可能会存在差异。

      我将后面24个数据作为测试数据,同时为了避免过拟合,将历史数据的70%作为训练集、30%作为验证集。训练过程需要注意验证集的误差不能过大,否则容易出现过拟合。

      下面是程序运行结果。结果展示了单步预测(即1步预测)和24步预测的结果。数据为随机生成。若有自己的数据可以读取,然后自行调参。这里横坐标的意义为:<=0的表示历史数据,>0的表示为未来数据。

        下面详细分析了24步预测误差结果。包括绝对误差、MAE、RMSE、MAPE。总体来说结果还行,但是这个是因为序列本身具有一定规律。这个结果每次是不一样的,有多种原因,训练集和验证集是随机分配的,同时模型训练结果也存在一定离散性,导致结果有所不同。对于不同的数据,需要自行调整LSTM模型的超参数,不断尝试,这个过程需要经验,但也比较痛苦,如果有优化算法会更好。

        本程序的部分代码如下。

        程序的完整代码下载链接见:基于Matlab的LSTM模型时间序列多步预测——多对单 (不是免费哟)。欢迎大家讨论!

————————————————

版权声明:本文为CSDN博主「hwc_yzt」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_38919810/article/details/124741044

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容