時系列予測 | MATLAB は BO-BiGRU ベイジアン最適化を実装し、双方向ゲート サイクル ユニット時系列予測を実現

時系列予測 | MATLAB は BO-BiGRU ベイジアン最適化を実装し、双方向ゲート サイクル ユニット時系列予測を実現

エフェクト一覧

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

ここに画像の説明を挿入します

基本的な紹介

MATLAB は、BO-BiGRU ベイジアン最適化双方向ゲート サイクル ユニット時系列予測を実装します。双方向ゲート巡回ユニットのベイズ最適化、BO-BiGRU/Bayes-BiGRU 時系列予測モデルに基づく時系列予測。
1. 最適化パラメータは、学習率、隠れ層ノード、および正則化パラメータです。
2. 評価指標には、R2、MAE、MSE、RMSE、MAPE などが含まれます。
3. 動作環境はmatlab2018b以降です。

モデル構築

BO-BiGRU (ベイズ最適化双方向ゲート反復ユニット) は、時系列予測タスク用にベイズ最適化と双方向ゲート反復ユニット (BiGRU) を組み合わせた手法です。時系列予測では、過去の観察に基づいて将来の値を予測しようとします。
双方向ゲート型リカレント ユニット (BiGRU) は、従来のリカレント ニューラル ネットワークよりも強力なモデリング機能を備えたリカレント ニューラル ネットワーク (RNN) のバリアントです。更新ゲートとリセット ゲートを使用して情報の流れを制御することで、長期的な依存関係を時系列でより適切に捕捉します。
ベイジアン最適化は、未知の目的関数でサンプリングし、既存のサンプルに基づいてサンプリング位置を調整できる最適化問題の手法です。この方法は、探索空間で最適な解を効率的に見つけるのに役立ちます。
BO-BiGRU の基本的な考え方は、ベイジアン最適化を使用してモデルのハイパーパラメーターを自動的に調整し、より良い時系列予測パフォーマンスを得るというものです。ベイジアン最適化アルゴリズムは、既存のモデルのパフォーマンス サンプルに基づいて評価用の次のハイパーパラメーター構成を選択し、ハイパーパラメーター空間を徐々に検索し、ベイジアン推論方法を使用してハイパーパラメーターの確率分布を更新します。このようにして、BO-BiGRU は比較的少数のモデル トレーニング反復内でより適切なハイパーパラメーター構成を見つけることができるため、時系列予測の精度が向上します。
要約すると、BO-BiGRU は、時系列予測タスクのためにベイジアン最適化とゲート反復ユニットを組み合わせた手法です。ハイパーパラメーターを自動的に調整することでモデルのパフォーマンスを向上させ、長期的な依存関係を時系列でより適切に捕捉できるようになります。

  • MATLAB は BO-BiGRU ベイジアン最適化双方向ゲート サイクル ユニット時系列予測
    疑似コードを実装します
    9
  • 最適化アルゴリズム、学習繰り返し率、およびベイジアン最適化ハイパーパラメーターを調整してモデル パラメーターを調整します。

プログラミング

  • 完全なプログラムとデータ取得方法: BO-GRU ベイジアン最適化ゲート サイクル ユニット時系列予測を実装するためにブロガーに MATLAB に返信するプライベート メッセージ
%%  优化算法参数设置
%参数取值上界(学习率,隐藏层节点,正则化系数)
%%  贝叶斯优化参数范围
optimVars = [
    optimizableVariable('NumOfUnits', [10, 50], 'Type', 'integer')
    optimizableVariable('InitialLearnRate', [1e-3, 1], 'Transform', 'log')
    optimizableVariable('L2Regularization', [1e-10, 1e-2], 'Transform', 'log')];

%% 创建网络架构
% 输入特征维度
numFeatures  = f_;
% 输出特征维度
numResponses = 1;
FiltZise = 10;
%  创建"LSTM"模型
    layers = [...
        % 输入特征
        sequenceInputLayer([numFeatures 1 1],'Name','input')
        sequenceFoldingLayer('Name','fold')
        % 特征学习       

        dropoutLayer(0.25,'Name','drop3')
        % 全连接层
        fullyConnectedLayer(numResponses,'Name','fc')
        regressionLayer('Name','output')    ];

    layers = layerGraph(layers);
    layers = connectLayers(layers,'fold/miniBatchSize','unfold/miniBatchSize');


% 批处理样本
MiniBatchSize =128;
% 最大迭代次数
MaxEpochs = 500;
    options = trainingOptions( 'adam', ...
        'MaxEpochs',500, ...
        'GradientThreshold',1, ...
        'InitialLearnRate',optVars.InitialLearnRate, ...
        'LearnRateSchedule','piecewise', ...
        'LearnRateDropPeriod',400, ...
        'LearnRateDropFactor',0.2, ...
        'L2Regularization',optVars.L2Regularization,...
        'Verbose',false, ...
        'Plots','none');

%% 训练混合网络
net = trainNetwork(XrTrain,YrTrain,layers,options);

参考文献

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

おすすめ

転載: blog.csdn.net/kjm13182345320/article/details/132909450
おすすめ