声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~

目录

案例数据及替换数据方法

模型原理

模型流程

结果展示

完整代码


今天给大家带来的预测方法与以往都不同,非常新颖,非常能吸引审稿人。先不说别的,很多小伙伴可能只听说过机器学习或深度学习,连强化学习都没有听说过。实际上,强化学习早已应用在各个学科,比如路径规划、车间调度等等。但是,应用在预测方向的却非常少,一方面,大家不知道怎么去结合,另一方面,强化学习的实现难度较大,工程量也比较多,导致很多小伙伴望而却步。

另外,传统方法在融合各模型时,其权值为固定值,无法在预测时动态选择最优权值。总体误差最小的模型,其局部误差可能并非最小,按总体预测效果或平均分配权值,都会导致最终的融合值达不到较好的值。

因此,今天给大家带来了一期利用强化学习方法融合多模型的多变量时间序列预测的完整Matlab代码。强化学习能通过与环境的探索交互得到反馈信息,根据反馈信息调整策略进行学习与优化,经过不断地自我优化来调整各个模型的权重组合。

当然,你也可以任意搭配你喜欢的模型进行融合,我这里用了ELM、GRU、LSTM、BiLSTM这四种经典的,模型数量也不限(如果不会可以找我定制)~

您只需做的工作:替换自己的数据,运行main文件即可!非常适合新手小白!需要代码不看原理的小伙伴可直接拉到最后!

案例数据及替换数据方法

本期推文采用的案例数据是2022年1月份的某地光伏功率数据,是一个典型的多变量时间序列数据集。

特征包括气温, 方位角, 云层不透明度, 露点温度, DHI, DNI, GHI, GTI, GTI, 大气可降水量, 相对湿度, 降雪深度, 地面气压, 高度10m风向, 高度10m风速, 天顶角,输出即为实际功率一列。

这边已经帮小伙伴们完成了所有的数据预处理工作,包括缺失值处理、重复值处理等等。同时,由于光伏白天不发电,因此作者已经把功率为0的行都删除了!

更换自己的数据时,只需最后一列放想要预测的列,其余列放特征即可,无需更改代码,非常方便!

模型原理

我们将模型融合的过程,巧妙地转化为一个强化学习问题。其核心思想是通过智能体(Agent)与环境的不断交互来学习一个最优的权重分配策略。在这个框架中,我们将分配给各个子模型的一组权重向量定义为“状态”,将智能体选择的下一组新权重向量定义为“动作”。

为实现这一目标,我们采用经典的Q-learning算法来寻找最优的融合权值。其Q值更新遵循贝尔曼方程:

此处的关键在于奖励函数的设计。由于预测任务中真实的未来值未知,我们引入费希尔信息(Fisher Information)作为奖励。费希尔信息能衡量模型预测结果中包含的关于“真实值”的信息量,其值越大,代表参数估计的准确度越高。

融合模型的预测值可表示为:

假定每个模型的预测误差服从高斯分布,整个融合模型对真实值的对数似然函数的偏导数可以表示为:

其中 σi2是第i 个模型预测功率的方差。我们将奖励函数r定义为:如果采取新动作后得到的费希尔信息I(a)大于当前状态的费希尔信息I(s),就给予一个正向奖励,反之则不给奖励。其表达式为:

模型流程

首先,我们使用多个独立的预测模型(如ELM、GRU、LSTM、BiLSTM)并行地对数据进行训练,利用训练好的模型在测试集上进行预测。

然后,将这些预测结果统一输入到Q-learning决策模块中。系统会根据当前状态,并依据策略选择一个新动作,即一组新的权重。在执行该动作对各子模型预测值进行加权融合后,系统会计算该动作所带来的奖励,并据此更新Q矩阵,以强化优秀决策。

最后,这个选择、执行、奖励、更新的循环不断进行,直到Q矩阵收敛,最终学会在不同预测情况下动态组合各个子模型的最优策略,输出融合结果。

结果展示

输入上文提到的光伏数据集,设置强化学习折扣因子为0.9,学习率为0.1,训练轮数为100,权重离散化步长为0.1,得到的结果如下所示:

预测效果图

误差柱状图:

二维图:

雷达图:

罗盘图:

误差显示:

经实测,由于权重组合的不确定性,GRU、LSTM、BiLSTM三个模型效果本身就已经不错,甚至盖过了强化学习的风头,尽管效果在本数据集上不是第一名,但强化学习的模型融合方法也不失为一个容易受审稿人青睐的方法,大家也可以应用到自己的数据集查看效果~或许强化学习也是一种不错的选择~

以上所有图片,替换Excel后均可一键运行main生成,Matlab无需配置环境!比Python什么方便多了!非常适合新手小白!

完整代码

需要以上完整代码的,只需点击下方小卡片,再后台回复关键字,不区分大小写:

强化01

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐