基于EMD-SA-DBN的风速预测模型

                                 基于EMD-SA-DBN的风速预测模型_第1张图片

                                                                         图1   原始风速时间序列

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

                                        基于EMD-SA-DBN的风速预测模型_第2张图片

                                                       基于EMD-SA-DBN的风速预测模型_第3张图片

                                                                         图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的风速预测模型_第4张图片

                                                                     图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的风速预测模型_第5张图片

                                                           图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等,模拟退火改成粒子群、遗传、蝙蝠均可

 

 

你可能感兴趣的:(机器学习,深度学习)