2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Haute innovation | CEEMDEN-VMD-GRU-Attention double décomposition + unité récurrente fermée + mécanisme d'attention prédiction de séries chronologiques multivariées
Cet article propose une méthode de décomposition secondaire basée sur CEEMDAN, qui reconstruit la séquence décomposée par CEEMDAN par entropie d'échantillon. Une fois la séquence complexe décomposée par VMD, chaque composant est prédit par le modèle GRU-Attention et les résultats de prédiction sont finalement intégrés.
1.Matlab implémente la double décomposition CEEMDAN-VMD-GRU-Attention + unité de boucle fermée + mécanismes d'attention multiplesprévision de séries chronologiques(Code source complet et données)
2. CEEMDAN décompose, calcule l'entropie de l'échantillon, effectue un regroupement kmeans basé sur l'entropie de l'échantillon, appelle VMD pour décomposer la composante haute fréquence deux fois et utilise la composante haute fréquence et la composante avant décomposées par VMD comme unité cyclique à convolution.Modèle de mécanisme d'attentionLes résultats cibles sont prédits séparément puis ajoutés.
3. Sortie unique multivariable, considérez l'influence des caractéristiques historiques ! Les indicateurs d'évaluation incluent R2, MAE, RMSE, MAPE, etc.
4. L'algorithme est nouveau. Le modèle CEEMDAN-VMD-GRU-Attention traite les données avec une plus grande précision et peut suivre les tendances et les changements des données. Le modèle VMD gère des données non linéaires, non stationnaires et complexes et fonctionne mieux que la série EMD. Par conséquent, les données reconstruites sont décomposées via le modèle VMD pour améliorer la précision du modèle.
5. Il peut être utilisé en remplaçant directement les données Excel. Les annotations sont claires et adaptées aux novices. Vous pouvez exécuter directement le fichier principal pour sortir le graphique en un seul clic.
6. Caractéristiques du code : programmation paramétrique, les paramètres peuvent être facilement modifiés, les idées de programmation du code sont claires et les commentaires sont détaillés.
%% 清空环境变量
warning off % 关闭报警信息
close all % 关闭开启的图窗
clear % 清空变量
clc % 清空命令行
%% 划分训练集和测试集
P_train = res(1: num_train_s, 1: f_)';
T_train = res(1: num_train_s, f_ + 1: end)';
M = size(P_train, 2);
P_test = res(num_train_s + 1: end, 1: f_)';
T_test = res(num_train_s + 1: end, f_ + 1: end)';
N = size(P_test, 2);
%% 数据归一化
[P_train, ps_input] = mapminmax(P_train, 0, 1);
P_test = mapminmax('apply', P_test, ps_input);
[t_train, ps_output] = mapminmax(T_train, 0, 1);
t_test = mapminmax('apply', T_test, ps_output);
%% 数据平铺
P_train = double(reshape(P_train, f_, 1, 1, M));
P_test = double(reshape(P_test , f_, 1, 1, N));
t_train = t_train';
t_test = t_test' ;
%% 数据格式转换
for i = 1 : M
p_train{i, 1} = P_train(:, :, 1, i);
end
for i = 1 : N
p_test{i, 1} = P_test( :, :, 1, i);
end
%% 参数设置
options = trainingOptions('adam', ... % Adam 梯度下降算法
'MaxEpochs', 100, ... % 最大训练次数
'InitialLearnRate', 0.01, ... % 初始学习率为0.01
'LearnRateSchedule', 'piecewise', ... % 学习率下降
'LearnRateDropFactor', 0.1, ... % 学习率下降因子 0.1
'LearnRateDropPeriod', 70, ... % 经过训练后 学习率为 0.01*0.1
'Shuffle', 'every-epoch', ... % 每次训练打乱数据集
'Verbose', 1);
figure
subplot(2,1,1)
plot(T_train,'k--','LineWidth',1.5);
hold on
plot(T_sim_a','r-','LineWidth',1.5)
legend('真实值','预测值')
title('CEEMDAN-VMD-CNN-GRU-Attention训练集预测效果对比')
xlabel('样本点')
ylabel('数值')
subplot(2,1,2)
bar(T_sim_a'-T_train)
title('CEEMDAN-VMD-GRU-Attention训练误差图')
xlabel('样本点')
ylabel('数值')
disp('…………测试集误差指标…………')
[mae2,rmse2,mape2,error2]=calc_error(T_test,T_sim_b');
fprintf('n')
figure
subplot(2,1,1)
plot(T_test,'k--','LineWidth',1.5);
hold on
plot(T_sim_b','b-','LineWidth',1.5)
legend('真实值','预测值')
title('CEEMDAN-VMD-GRU-Attention测试集预测效果对比')
xlabel('样本点')
ylabel('数值')
subplot(2,1,2)
bar(T_sim_b'-T_test)
title('CEEMDAN-VMD-GRU-Attention测试误差图')
xlabel('样本点')
ylabel('数值')
[1] https://hmlhml.blog.csdn.net/article/details/135536086?spm=1001.2014.3001.5502
[2] https://hmlhml.blog.csdn.net/article/details/137166860?spm=1001.2014.3001.5502
[3] https://hmlhml.blog.csdn.net/article/details/132372151