天天看點

時序預測 | MATLAB實作貝葉斯優化CNN-GRU時間序列預測(股票價格預測)

MATLAB實作貝葉斯優化CNN-GRU時間序列預測(股票價格預測)

目錄

    • MATLAB實作貝葉斯優化CNN-GRU時間序列預測(股票價格預測)
      • 效果一覽
      • 基本介紹
      • 模型搭建
      • 程式設計
      • 學習總結
      • 往期精彩
      • 參考資料

效果一覽

時序預測 | MATLAB實作貝葉斯優化CNN-GRU時間序列預測(股票價格預測)
時序預測 | MATLAB實作貝葉斯優化CNN-GRU時間序列預測(股票價格預測)
時序預測 | MATLAB實作貝葉斯優化CNN-GRU時間序列預測(股票價格預測)
時序預測 | MATLAB實作貝葉斯優化CNN-GRU時間序列預測(股票價格預測)
時序預測 | MATLAB實作貝葉斯優化CNN-GRU時間序列預測(股票價格預測)
時序預測 | MATLAB實作貝葉斯優化CNN-GRU時間序列預測(股票價格預測)
時序預測 | MATLAB實作貝葉斯優化CNN-GRU時間序列預測(股票價格預測)

基本介紹

MATLAB實作貝葉斯優化CNN-GRU(卷積門控循環單元)時間序列預測,Bayes-CNN-GRU模型/BO-CNN-GRU模型股票價格預測

模型搭建

  • CNN 是通過模仿生物視覺感覺機制建構而成,能夠進行有監督學習和無監督學習。隐含層的卷積核參數共享以及層間連接配接的稀疏性使得CNN 能夠以較小的計算量從高維資料中提取深層次局部特征,并通過卷積層和池化層獲得有效的表示。CNN 網絡的結構包含兩個卷積層和一個展平操作,每個卷積層包含一個卷積操作和一個池化操作。第二次池化操作後,再利用全連接配接層将高維資料展平為一維資料,進而更加友善的對資料進行處理。
    時序預測 | MATLAB實作貝葉斯優化CNN-GRU時間序列預測(股票價格預測)
  • 當時間步數較大時,RNN 的曆史梯度資訊無法一直維持在一個合理的範圍内,是以梯度衰減或爆炸幾乎是不可避免的,進而導緻RNN 将很難從長距離序列中捕捉到有效資訊。LSTM 作為一種特殊的RNN,它的提出很好的解決了RNN 中梯度消失的問題。而GRU 則是在LSTM 的基礎上提出的,其結構更簡單,參數更少,訓練時間短,訓練速度也比LSTM更快。
    時序預測 | MATLAB實作貝葉斯優化CNN-GRU時間序列預測(股票價格預測)
  • 為使模型具有自動提取特征的功能,一般采用深度學習的方法來進行建構。其中,CNN 在提取特征這方面能力較強,它通常依靠卷積核來對特征進行提取。但是,卷積核的存在又限制了CNN 在處理時間序列資料時的長期依賴性問題。
  • 在這項研究中,GRU 的引入可以有效地解決這個問題,并且我們可以捕獲時間序列前後的依賴關系。另一方面, GRU 子產品的目的是捕獲長期依賴關系,它可以通過存儲單元長時間學習曆史資料中的有用資訊,無用的資訊将被遺忘門遺忘。另外,直接用原始特征進行處理,會極大的占用模型的算力,進而降低模型的預測精度,CNN-GRU模型結合了CNN和GRU的優點。
  • 通常,在模型訓練過程中需要對超參數進行優化,為模型選擇一組最優的超參數,以提高預測的性能和有效性。 憑經驗設定超參數會使最終确定的模型超參數組合不一定是最優的,這會影響模型網絡的拟合程度及其對測試資料的泛化能力。
  • 僞代碼
    時序預測 | MATLAB實作貝葉斯優化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

繼續閱讀