区間予測 | MATLAB は、QRCNN-BiGRU-Multihead-tention マルチヘッド アテンション畳み込み双方向ゲートリカレント ユニットに基づいて多変数時系列区間予測を実現します

間隔予測 | MATLAB は、QRCNN-GRU-Multihead-tention マルチヘッド アテンション畳み込み双方向ゲートリカレント ユニットに基づいて多変数時系列間隔予測を実装します。

効果一覧

1
3
2
4
5
6

基本的な紹介

1. Matlab は、双方向ゲート リカレント ユニットと組み合わせた QRCNN-BiGRU-Multihead-Attend 畳み込みニューラル ネットワークに基づいて、マルチヘッド アテンションの多変量時系列間隔予測を実装します。

2. マルチマップ出力、ポイント予測マルチインデックス出力 (MAE、MAPE、RMSE、MSE、R2)、区間予測マルチポイント比出力 (区間カバレッジ PICP、区間平均幅パーセンテージ PINAW)、マルチ入力単一出力、点予測グラフ、さまざまな信頼区間予測グラフ、エラー分析グラフ、カーネル密度推定確率密度グラフを含む。

1

3. データは、複数の関連する変数を使用して電力データの最後の列を予測するデータ セット、電力データ セットであり、負荷予測や風速予測にも適用できます。MainQRCNN_BiGRU_MATTNTS がメイン プログラムで、残りは関数ファイルです。走る必要はありません。

4. コードは高品質で、データの前処理部分、欠損値の処理、nan の場合は削除するなどの明確な注釈が付いており、カーネル密度の推定も含まれています。

5. 動作環境はMatlab2021以降です。

モデルの説明

マルチヘッド アテンション畳み込み双方向ゲート リカレント ユニット
マルチヘッド アテンション畳み込み双方向ゲート リカレント ユニット (マルチヘッド アテンション畳み込み双方向ゲート リカレント ユニット) は、多変量時系列予測のための深層学習モデルです。このモデルは、アテンション メカニズム、畳み込みニューラル ネットワーク、双方向ゲート反復ユニットなどの複数の技術を組み合わせており、時系列で非線形関係と長期依存関係を効果的にキャプチャできます。
入力データは複数の時系列であり、各時系列には複数の変数が含まれます。モデルは最初に各時系列に対して畳み込み演算を実行して、局所的な特徴を抽出します。次に、シーケンスは、シーケンス内の長期依存関係をキャプチャする双方向ゲート反復ユニットを使用してエンコードされます。次に、マルチヘッド アテンション メカニズムを使用して、異なる時系列間の情報を相互作用および融合して、グローバルな特徴を取得します。最後に、完全に接続されたレイヤーを使用してすべての特徴を集約し、予測を行います。
このモデルは、多変量時系列の間隔予測、つまり一定期間にわたる変数の値の予測に使用できます。このモデルの利点は、複数の時系列間の複雑な関係を処理できることと、異なる長さのシーケンスを処理できることです。さらに、ハイパーパラメーターとネットワーク構造を調整することで、モデルをさまざまなデータセットや予測タスクに適応させることもできます。

プログラミング

  • 完全なプログラムとデータ取得方法: プライベート メッセージ ブロガー。
ntrain=round(nwhole*num_size);
	ntest =nwhole-ntrain;
	% 准备输入和输出训练数据
	input_train =input(:,temp(1:ntrain));
	output_train=output(:,temp(1:ntrain));
	% 准备测试数据
	input_test =input(:, temp(ntrain+1:ntrain+ntest));
	output_test=output(:,temp(ntrain+1:ntrain+ntest));
	%% 数据归一化
	method=@mapminmax;
	[inputn_train,inputps]=method(input_train);
	inputn_test=method('apply',input_test,inputps);
	[outputn_train,outputps]=method(output_train);
	outputn_test=method('apply',output_test,outputps);
	% 创建元胞或向量,长度为训练集大小;
	XrTrain = cell(size(inputn_train,2),1);
	YrTrain = zeros(size(outputn_train,2),1);
	for i=1:size(inputn_train,2)
		XrTrain{
    
    i,1} = inputn_train(:,i);
		YrTrain(i,1) = outputn_train(:,i);
	end
	% 创建元胞或向量,长度为测试集大小;
	XrTest = cell(size(inputn_test,2),1);
	YrTest = zeros(size(outputn_test,2),1);
	for i=1:size(input_test,2)
		XrTest{
    
    i,1} = inputn_test(:,i);
		YrTest(i,1) = outputn_test(:,i);
	end

	%% 创建混合网络架构
%%  区间覆盖率
RangeForm = [T_sim(:, 1), T_sim(:, end)];
Num = 0;

for i = 1 : length(T_train)
    Num = Num +  (T_train(i) >= RangeForm(i, 1) && T_train(i) <= RangeForm(i, 2));
end

picp = Num / length(T_train);     


    S = cumtrapz(X,Y);
    Index = find(abs(m-S)<=1e-2);
    Q = X(max(Index));



参考文献

[1] https://blog.csdn.net/kjm13182345320/article/details/127931217
[2] https://blog.csdn.net/kjm13182345320/article/details/127418340

おすすめ

転載: blog.csdn.net/kjm13182345320/article/details/131031521