區間預測 | MATLAB實現QRGRU門控循環單元分位數回歸時間序列區間預測
目錄
- 區間預測 | MATLAB實現QRGRU門控循環單元分位數回歸時間序列區間預測
- 效果一覽
- 基本介紹
- 模型描述
- 程序設計
- 參考資料
效果一覽
基本介紹
MATLAB實現QRGRU門控循環單元分位數回歸時間序列區間預測。基于分位數回歸的門控循環單元QRGRU的時間序列區間預測,多輸入單輸出模型 (Matlab完整程序和數據)
(主要應用于風速,負荷,功率)(Matlab完整程序和數據)
運行環境matlab2020及以上,輸入多個特征,輸出單個變量。
excel數據,方便學習和替換數據。
模型描述
分位數回歸是簡單的回歸,就像普通的最小二乘法一樣,但不是最小化平方誤差的總和,而是最小化從所選分位數切點產生的絕對誤差之和。如果 q=0.50(中位數),那么分位數回歸會出現一個特殊情況 - 最小絕對誤差(因為中位數是中心分位數)。我們可以通過調整超參數 q,選擇一個適合平衡特定于需要解決問題的誤報和漏報的閾值。GRU 有兩個有兩個門,即一個重置門(reset gate)和一個更新門(update gate)。從直觀上來說,重置門決定了如何將新的輸入信息與前面的記憶相結合,更新門定義了前面記憶保存到當前時間步的量。如果我們將重置門設置為 1,更新門設置為 0,那么我們將再次獲得標準 RNN 模型。
程序設計
- 完整程序和數據獲取方式(資源處下載):MATLAB實現QRGRU門控循環單元分位數回歸時間序列區間預測
% gru
layers = [ ...sequenceInputLayer(inputSize,'name','input') %輸入層設置gruLayer(numhidden_units1,'Outputmode','sequence','name','hidden1') dropoutLayer(0.3,'name','dropout_1')gruLayer(numhidden_units2,'Outputmode','last','name','hidden2') dropoutLayer(0.3,'name','drdiopout_2')fullyConnectedLayer(outputSize,'name','fullconnect') % 全連接層設置(影響輸出維度)(cell層出來的輸出層) %quanRegressionLayer('out',i)];
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
% 參數設定
opts = trainingOptions('adam', ...'MaxEpochs',10, ...'GradientThreshold',1,...'ExecutionEnvironment','cpu',...'InitialLearnRate',0.001, ...'LearnRateSchedule','piecewise', ...'LearnRateDropPeriod',2, ... %2個epoch后學習率更新'LearnRateDropFactor',0.5, ...'Shuffle','once',... % 時間序列長度'SequenceLength',1,...'MiniBatchSize',24,...'Verbose',0);
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%
% 網絡訓練
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
y = Test.demand;
x = Test{:,3:end};
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
% 歸一化
[xnorm,xopt] = mapminmax(x',0,1);
xnorm = mat2cell(xnorm,size(xnorm,1),ones(1,size(xnorm,2)));
[ynorm,yopt] = mapminmax(y',0,1);
ynorm = ynorm';% 平滑層flattenLayer('Name','flatten')% GRU特征學習gruLayer(50,'Name','gru1','RecurrentWeightsInitializer','He','InputWeightsInitializer','He')% GRU輸出gruLayer(NumOfUnits,'OutputMode',"last",'Name','bil4','RecurrentWeightsInitializer','He','InputWeightsInitializer','He')dropoutLayer(0.25,'Name','drop3')% 全連接層fullyConnectedLayer(numResponses,'Name','fc')regressionLayer('Name','output') ];layers = layerGraph(layers);layers = connectLayers(layers,'fold/miniBatchSize','unfold/miniBatchSize');
————————————————
版權聲明:本文為CSDN博主「機器學習之心」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/kjm13182345320/article/details/130447132
參考資料
[1] https://blog.csdn.net/kjm13182345320/article/details/127931217
[2] https://blog.csdn.net/kjm13182345320/article/details/127418340
[3] https://blog.csdn.net/kjm13182345320/article/details/127380096