小言_互联网的博客

时序预测 | MATLAB实现贝叶斯优化CNN-GRU时间序列预测(股票价格预测)

302人阅读  评论(0)

MATLAB实现贝叶斯优化CNN-GRU时间序列预测(股票价格预测)

效果一览







基本介绍

MATLAB实现贝叶斯优化CNN-GRU(卷积门控循环单元)时间序列预测,Bayes-CNN-GRU模型/BO-CNN-GRU模型股票价格预测

模型搭建

  • CNN 是通过模仿生物视觉感知机制构建而成,能够进行有监督学习和无监督学习。隐含层的卷积核参数共享以及层间连接的稀疏性使得CNN 能够以较小的计算量从高维数据中提取深层次局部特征,并通过卷积层和池化层获得有效的表示。CNN 网络的结构包含两个卷积层和一个展平操作,每个卷积层包含一个卷积操作和一个池化操作。第二次池化操作后,再利用全连接层将高维数据展平为一维数据,从而更加方便的对数据进行处理。

  • 当时间步数较大时,RNN 的历史梯度信息无法一直维持在一个合理的范围内,因此梯度衰减或爆炸几乎是不可避免的,从而导致RNN 将很难从长距离序列中捕捉到有效信息。LSTM 作为一种特殊的RNN,它的提出很好的解决了RNN 中梯度消失的问题。而GRU 则是在LSTM 的基础上提出的,其结构更简单,参数更少,训练时间短,训练速度也比LSTM更快。

  • 为使模型具有自动提取特征的功能,一般采用深度学习的方法来进行构建。其中,CNN 在提取特征这方面能力较强,它通常依靠卷积核来对特征进行提取。但是,卷积核的存在又限制了CNN 在处理时间序列数据时的长期依赖性问题。

  • 在这项研究中,GRU 的引入可以有效地解决这个问题,并且我们可以捕获时间序列前后的依赖关系。另一方面, GRU 模块的目的是捕获长期依赖关系,它可以通过存储单元长时间学习历史数据中的有用信息,无用的信息将被遗忘门遗忘。另外,直接用原始特征进行处理,会极大的占用模型的算力,从而降低模型的预测精度,CNN-GRU模型结合了CNN和GRU的优点。

  • 通常,在模型训练过程中需要对超参数进行优化,为模型选择一组最优的超参数,以提高预测的性能和有效性。 凭经验设置超参数会使最终确定的模型超参数组合不一定是最优的,这会影响模型网络的拟合程度及其对测试数据的泛化能力。

  • 伪代码

  • 在对 CNN-GRU使用贝叶斯优化时,不同的参数组合的 CNN-GRU作为自变量,平均误差(MAE)作为贝叶斯框架的输出y。BO(贝叶斯) 算法的优点是收敛速度快、性能好、可扩展性强、适用于超参数寻优问题,特别是在特征为非参数的情况下。

  • 通过调整优化算法调整模型参数,学习重复率和贝叶斯优化超参数来调整模型参数。

程序设计

  • 完整程序私信博主。

%% 可视化
% 预测结果显示
figure
plot(Date,data);
hold on
idx = size(YPred,2);
plot(Date(end)-idx+1:Date(end), YPred,'.-');
xlabel("Date")
ylabel("price (units)")
title("Forecast")
legend(["实际值" "预测值"],'Location',"best")
title('贝叶斯优化CNN-GRU时间序列预测')
set(gca,'FontSize',12,'FontName','华为中宋','FontWeight','bold');
set(gca, 'Box', 'on', 'LineWidth', 1.1, 'Layer', 'top',...
    'XMinorTick', 'on', 'YMinorTick', 'on', 'XGrid', 'on', 'YGrid', 'on', ...
    'TickDir', 'in', 'TickLength', [.015 .015],...
    'FontName', 'avantgarde', 'FontSize', 12, 'FontWeight', 'normal');axis tight

% 局部显示
figure
plot(Date(end)-idx+1:Date(end),YTest,'r.-','LineWidth',1.5)
hold on
plot(Date(end)-idx+1:Date(end),YPred,'b*-','LineWidth',1.5);
legend(["实际值" "预测值"],'Location',"best")
xlabel("Date")
ylabel("price (units)")
title("贝叶斯优化CNN-GRU时间序列预测 sMAPE = " + sMAPErr)
set(gca,'FontSize',12,'FontName','华为中宋','FontWeight','bold');
set(gca, 'Box', 'on', 'LineWidth', 1, 'Layer', 'top',...
    'XMinorTick', 'on', 'YMinorTick', 'on', 'XGrid', 'on', 'YGrid', 'on', ...
    'TickDir', 'out', 'TickLength', [.015 .015],...
    'FontName', 'avantgarde', 'FontSize', 12, 'FontWeight', 'normal');

 

学习总结

提出了贝叶斯优化CNN-GRU 模型,在理论上分析了其工作原理以及优势所在,验证了此方法的有效性。在保留了RNN 在时间序列预测中记忆能力强的优点的基础上,加入了CNN 网络用于提取深层次特征,能更好的挖掘特征之间的联系,进一步提高预测精度。再通过贝叶斯优化确定网络模型超参数,使CNN-GRU 的整体性能达到最优。

往期精彩

时序预测 | MATLAB实现贝叶斯优化CNN-LSTM时间序列预测(股票价格预测)
时序预测 | MATLAB实现贝叶斯优化CNN-BiLSTM时间序列预测(股票价格预测)
时序预测 | MATLAB实现CNN-BiLSTM(卷积双向长短期记忆神经网络)时间序列预测

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/127601808?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/kjm13182345320/article/details/127525606?spm=1001.2014.3001.5502


转载:https://blog.csdn.net/kjm13182345320/article/details/127681903
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场