基于同步挤压小波降噪与贝叶斯优化长短时记忆网络的时间序列预测

         长短时记忆网络LSTM在针对短时时间序列预测问题上近来年受到大家的关注,但由于该方法为深度学习方法,通常面临着众多超参数的影响,而众所周知,关于深度学习超参数的设置并没有一直明确的指导方针,大多采用经验方法,比如学习率1e-3,1e-4啥的,迭代次数根据loss曲线的变化等进行设置,这种方法说简单的就是无限尝试,找到效果比较好的一组,耗时耗力。为此,本文将采用贝叶斯框架对 LSTM进行参数优化 , 同时采用同步挤压小波SWT对原始数据进行滤波降噪,并采用降噪会的数据进行建模,最后用实例验证表明 ,SWT-Bayesian-LSTM 模型的预测效果更佳。

       本人电脑配置:matlab2020b,vs2015,cuda9.0,cudnn7.1,8g,gtx960 4g,(matlab2018之后的深度学习工具箱会自动调用可用gpu,加快训练速度,做深度学习推荐采用新版matlab,链接:https://pan.baidu.com/s/1l6VAiZYHQuPPIqSBSbQzCw  提取码:9q0f ,安装教程 http://www.xue51.com/tuwen/7941.html )

2.贝叶斯优化LSTM的时间序列预测

      本文采用贝叶斯优化LSTM进行时间序列预测,数据如图所示。原始数据各波峰波谷存在大量的毛刺,这必将影响数据的预测精度。因此,为更好地实现建模,本文采用基于同步挤压小波变换SWT的降噪方法对该信号进行降噪处理,然后基于降噪后的信号进行时间序列预测分析。

2.1 基于同步挤压小波的数据降噪预处理

       同步挤压小波变换(Synchrosqueezing Wavelet Transform,SWT,也有地方简称WSST ,SST啥的,这个不重要)的原理百度就有,工具箱链接:http://www.pudn.com/Download/item/id/2566950.html,自己去搜。主要写写自己的处理步骤:1)对数据进行SWT变换,得到信号的同步挤压输出。2)对1得到的同步挤压输出进行带通滤波,只保持固定的频率带,从而剔除高频噪点。3)对降噪后的输出进行SWT逆变换。降噪后的信号SWT时频图如下图所示,可以看出原信号35Hz以上的噪声已经不存在了。降噪前后的数据如图所示,通过局部放大进行可视化,可以看到降噪后的数据更加平滑。

2.2 基于贝叶斯优化LSTM的时间序列预测

       采用上述降噪后信号,进行滚动建模,具体操作为:采用1到n的值作为输入 第n+1时刻的值作为输出,然后2到n+1的值为输入 n+2的值为输出。。。这样实现滚动建模。针对LSTM的超参数选择问题,采用上述本文拟贝叶斯对LSTM的超参数进行寻优,超参数包括隐藏层神经元的个数L1和L2(L1和L2指的是第一层的LSTM单元的个数和第二层的LSTM单元的个数,范围为0-100)、学习率lr(范围为0.001-0.01)、迭代次数(范围为0-100),贝叶斯的评估数为10代,以网络输出的预测值和真实值的均方差为适应度函数,优化结果见下图。上图为适应度曲线(中图是放大一部分),表明贝叶斯能够找到一组超参数,用这组超参数训练的网络的误差更低,因此蓝色是一条下降的曲线,下图是各参数的变化截图,最终各参数为:L1:18 L2:85 K:87 lr:0.0099969

利用上述超参数重新建立LSTM网络,得到的预测结果如图所示:

2.3 各方法预测效果对比

将Bayesian-LSTM与没优化的LSTM,进行对比,结果如图

分析可知:采用同步挤压小波SWT降噪后的数据与贝叶斯优化长短时记忆网络LSTM的精度最高。

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值