机器学习|基于EMD-SA-DBN的风速预测模型

机器学习|基于EMD-SA-DBN的风速预测模型
文章图片

图1原始风速时间序列
风速预测主要是时间序列预测,通常采用滚动序列建模,即采用1-n时刻风速作为输入,第n+1时刻风速作为输出,然后采用第2到n+1时刻风速作为输入,第n+2时刻风速作为输出,这样进行滚动建模。一般情况下,使用这种方法得到的效果都还不错,但是会有一个很严重的问题,就是“滞后“现象,以图2为例,该图为基于DBN的风速预测,n为24。
机器学习|基于EMD-SA-DBN的风速预测模型
文章图片

机器学习|基于EMD-SA-DBN的风速预测模型
文章图片

图2基于DBN的风速预测
DBN的结果分析:1、根均方差(RMSE):1.7303;2、平均绝对误差(MAE):1.3405;3、平均相对百分误差(MAPE):14.53%
由图2可知,这个预测得到的值滞后于真实值,相当于当前时刻预测的是上一时刻的值。因此,即使精度较高,这个模型依旧是无法使用的。主要原因是:https://zhuanlan.zhihu.com/p/54413813?utm_source=qq&utm_medium=social&utm_oi=676541090052575232,是因为序列存在自相关,实际上DBN并没有学习到风速预测模型,而是学习到了这种自相关性,而这个在时间序列预测上是及其常见的。
那么为了解决这个,本文采用EMD经验模态分解先对序列进行分解得到IMF本征模态分量,然后对每个imf建立DBN预测模型,最后将各IMF对应的DBN的预测值相加,得到最终的预测结果,结果如图3所示:
机器学习|基于EMD-SA-DBN的风速预测模型
文章图片

图3 基于EMD-DBN的风速预测
EMD-DBN的结果分析:1、根均方差(RMSE):1.2416;2、平均绝对误差(MAE):0.89967;3、平均相对百分误差(MAPE):9.6004%
由图3可以看出,图2中的滞后性已经没有,说明EMD能够消除原始序列的自相关性。
最后,为再一次提升精度,本文采用SA模拟退火算法对DBN的各隐含层进行寻优,得到一个较优的网络结构,得到的结果如图4:所示。
机器学习|基于EMD-SA-DBN的风速预测模型
文章图片

图4 基于EMD-SA-DBN的风速预测
SA-EMD-DBN的结果分析:1、根均方差(RMSE):1.2328;2、平均绝对误差(MAE):0.88833;3、平均相对百分误差(MAPE):9.578%
结果显示经SA优化后的DBN,精度得到了再一次提升。
需要的可以加我qq2919218574,此为MATLAB代码,可以改成python代码,EMD也可以换成EEMD、CEEMD、VMD等,模拟退火改成粒子群、遗传、蝙蝠均可

【机器学习|基于EMD-SA-DBN的风速预测模型】

    推荐阅读