未发表!25年顶级SCI算法SOO优化CNN-LSTM-Attention一键实现多步预测!多步预测全家桶更新啦!
目录
关于多步预测,之前已经给大家带来过两篇推文:
Matlab终于能实现真正的多步预测!Transformer-BiGRU多步预测保姆级教程!附Matlab代码
还在用单步预测?ALA-BiTCN-BiGRU一键实现多步预测吸引审稿人!附Matlab代码
很多小伙伴后台问我,如果数据集存在时间上的顺序,比如风电光伏功率预测、降水量预测、碳价预测等等,这时候怎么办?
这时候就不能打乱数据集,需要用到多步预测。
多步预测需要一次性预测未来多个时刻的值。传统市面上的多变量时间序列预测程序都是单步的,但这种预测几乎没有任何意义,举个例子,做碳价格预测,每次只预测一个点,看似精度很高,实际只是拟合过去序列,因此大家往往会看到有很多滞后现象,换句话说,如果你用前一天的价格当作预测的价格,说不定也比复杂的深度学习模型要好得多。
另外,传统的CNN-LSTM-Attention模型已经被用的比较多了,很多小伙伴既想要复杂模型又想要创新点。因此,今天给大家带来一期基于25年最新SCI算法恒星振荡算法SOO优化CNN-LSTM-Attention的多步预测代码,不仅可以显著增加工作量,也能够真正反映出预测效果。
您只需做的工作:替换Excel数据,一键运行main文件即可!非常适合新手小白!
多步预测案例
这里选用2019年3月某地的一个风电功率数据集,这是一个典型的多变量时间序列数据集,特征包括风速、温度、气压等等,15min一个点。同时,设置延时步长(即滑动窗口)为3。

更换自己的数据时,只需最后一列放想要预测的列,其余列放特征即可,无需更改代码(时间可以不用放,因为程序不会读取时间),非常方便!
多步预测教程
时间序列的多步预测是以一维或多维的多个历史数据为输入变量,输入到设定的预测模型中去,再由模型对数据进行拟合,最终输出某区间时刻的未来值,可以看下面这张图!

多步预测也分很多类型,比如:直接策略、递归策略、多输出策略等等。在我们的代码中,是一次性收集了连续多个历史时刻作为输入并将紧随其后的多个时刻作为输出。因此,模型的目标是:

kim表示历史时间步长度(即连续 kim 个历史时刻作为输入),而zim表示预测的步长。模型每次会一次性输出多个未来时刻的预测值,因此我们的模型采用的是直接多步预测(Direct Multi-step)。
创新点与原理
如果有小伙伴想要拿这个模型写论文,这里的文字都是可以借鉴和参考的!
①创新点一:基于CNN-LSTM的多尺度特征联合提取架构
针对传统单一模型难以同时捕捉数据中空间局部特征和时间序列长程依赖的局限性,我们创新性地构建了CNN-LSTM联合特征提取架构。CNN通过卷积运算自动学习原始数据中的空间依赖性,提取与输出密切相关的局部特征。其卷积计算过程式为:

在此基础上,LSTM作为时序建模核心,利用门控机制有效捕捉单元之间的记忆长期依赖关系,克服了传统RNN中梯度消失的瓶颈。这种"空间特征提取+时序建模"的双层架构设计,使模型能够以更全面的视角解析数据中的多尺度时空耦合关系,为后续预测提供了高质量的特征表示基础。
②创新点二:融合SE通道注意力机制的自适应特征重标定策略
尽管CNN-LSTM架构能够提取丰富的时空特征,但在特征通道维度上,不同通道的特征贡献被平等对待,这可能导致冗余或噪声特征干扰预测精度。为此,我们引入了Squeeze-and-Excitation(SE)通道注意力机制,通过显式建模通道间的依赖关系,使网络能够自适应地聚焦于最具判别力的特征通道,抑制低价值通道的干扰。该机制主要包含三个关键步骤:
①特征压缩。通过全局平均池化将每个通道的空间信息压缩为一个标量描述符,获取通道级全局信息:

式(1)中,Z向量代表着通道描述符,ZC为第C个通道压缩完的全局信息,H和W 为CNN输出的高度和宽度。
②特征激活。基于压缩后的通道描述符,采用带Sigmoid激活的双全连接层门控机制,自适应学习通道间的非线性依赖关系:

其中δ指ReLU函数,S为学习到的通道之间依赖性的Z向量。
③通道权重调整。将学习到的注意力权重逐通道施加于原始特征,实现对关键特征的增强和噪声特征的抑制:

UC指原来C通道的全局信息,XC指学习到通道依赖性的UC。

③创新点三:基于SOO智能算法的超参数自适应寻优
CNN-LSTM-Attention模型的性能表现,高度依赖其复杂的超参数组合。而传统的网格搜索或人工试错法在参数寻优时往往效率低下。为解决这一难题,我们创新性地引入了恒星振荡优化算法(SOO),用来优化学习率、神经元个数、L2正则化系数三大参数。
恒星振荡优化算法SOO是2025年刚发表于SCI一区期刊《Cluster Computing》的最新智能算法,实验结果表明,SOO算法在大部分测试函数上均取得了最优结果!你先用,你就是创新!往期介绍该算法的推文如下:
2025年SCI一区新算法-恒星振荡优化算法(SOO)-公式原理详解与性能测评 Matlab代码免费获取
结果展示
我们使用上面的风电功率数据集,设置模型超参数为:最大迭代次数为100,Adam 梯度下降算法,划分60%为训练集,20%为验证集,20%为测试集,其余参数均为默认参数。同时,设置历史时间步(即时间窗,与预测步长不同)为3。
首先是单步预测,也就是1步,效果如下:

单步预测时,RMSE为16,R2为0.93,精度还是非常高的,再来看下2步预测:

2步预测时,精度相比于单步有些许的下降,RMSE为26,这也完美符合多步预测的规律,预测的步长越长,精度肯定越低。最后看下4步预测:

4步预测时,精度下降的更多,毕竟直接预测未来4个时刻还是非常有难度的,但这个结果也非常不错。
当然,我们代码中还有很多其他图片,可以放到论文里吸引审稿人:
迭代曲线图:

误差直方图:

训练集以及测试集的线性拟合图:


网络结构图:

最后,命令行窗口也会清楚地显示R2、MAE、RMSE、MAPE的误差指标:

以上结果展示中所有图片,作者都已精心整理过代码,都可以一键运行main直接出图!不信的话可以看下面文件夹截图,非常清晰明了!

全家桶目录
因此,目前的全家桶已经包含了10种主流及小众模型,包括基础的LSTM、GRU以及小众新颖的Transformer-BiGRU、BiTCN类模型,大家也可以自行尝试哪个模型更加匹配自己的数据集!具体如下图片所示!

购买后如果以后推出其他多步预测模型,直接免费下载,无需再次付费。
但如果你之后再买,一旦推出新模型,价格必然会上涨。因此,需要创新的小伙伴请尽早下手。
获取方式
1.只想要文章中SOO-CNN-LSTM-Attention单品的同学,点击下方小卡片,再后台回复关键字:
多步预测单品
2.已将本文算法加入故障诊断全家桶中,点击下方小卡片,再后台回复关键字,不区分大小写:
多步预测全家桶
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)