Predicción de regresión | MATLAB implementa la predicción de regresión basada en la red de memoria a corto plazo LSTM-AdaBoost combinada con AdaBoost de entrada múltiple y salida única

Predicción de regresión | MATLAB implementa la predicción de regresión basada en la red de memoria a corto plazo LSTM-AdaBoost combinada con AdaBoost de entrada múltiple y salida única

efecto predictivo

1

2

introducción básica

1. MATLAB realiza la predicción de regresión basada en la red de memoria a corto plazo LSTM-AdaBoost combinada con AdaBoost de múltiples entradas y una sola salida 2.
El entorno operativo es Matlab2020b
3. Ingrese múltiples características, genere una sola variable y predicción de regresión multivariante 4.data
es un conjunto de datos, datos de Excel, las primeras 7 columnas son de entrada, la última 1 columna es de salida, main.m es el programa principal, simplemente ejecútelo y todos los archivos se colocan en una carpeta;
la ventana de comandos emite la evaluación de múltiples índices R2, MSE, MAE, MAPE y MBE.

Descripcion del modelo

La predicción de regresión de salida única de entrada múltiple AdaBoost basada en la red de memoria a corto plazo LSTM-AdaBoost es un método de aprendizaje conjunto que tiene como objetivo utilizar múltiples variables de entrada para predecir el valor de una sola variable de salida. Combina las ventajas de la red LSTM y el algoritmo AdaBoost, que pueden capturar la dependencia a largo plazo y la relación no lineal de los datos de series temporales y mejorar la precisión de la predicción.
La red LSTM es una red neuronal recurrente adecuada para datos de secuencia, que puede abordar de manera efectiva los problemas de dependencia a largo plazo a través del mecanismo de activación. AdaBoost es un algoritmo de aprendizaje conjunto que mejora la precisión de la predicción al ponderar y combinar múltiples alumnos débiles. Combinando estos dos métodos, la red LSTM se puede usar para extraer las características de los datos de secuencia y luego usar estas características como la entrada de AdaBoost y predecir el valor de la variable de salida a través de la combinación ponderada de múltiples estudiantes débiles.
Los pasos de implementación específicos son los siguientes:
Preprocesamiento de datos: divida los datos de entrada en múltiples secuencias en orden cronológico, y cada secuencia contiene múltiples variables de entrada y una variable de salida.
Extracción de características LSTM: para cada secuencia, su representación de características se extrae utilizando una red LSTM. Utilice la salida de la red LSTM como datos de entrada para AdaBoost.
Regresión de AdaBoost: la salida de la red LSTM se usa como datos de entrada de AdaBoost, y se usan varios alumnos débiles para realizar la predicción de regresión en la variable de salida. Los pesos de cada alumno débil se actualizan de acuerdo con su error de predicción para mejorar la precisión general de la predicción.
Salida de predicción: los resultados de predicción de varios alumnos débiles se ponderan y combinan para obtener el resultado de salida de predicción final.
Cabe señalar que la validación cruzada y el ajuste de parámetros son necesarios en el proceso de implementación para evitar problemas de ajuste excesivo o insuficiente. Al mismo tiempo, para mejorar la solidez del modelo, se pueden utilizar métodos como el embolsado y el bosque aleatorio en el aprendizaje integrado para mejorar aún más la precisión de la predicción.

programación

  • Código fuente completo y método de adquisición de datos: blogger de mensajes privados;
%% 预测
t_sim1 = predict(net, p_train); 
t_sim2 = predict(net, p_test ); 

%%  数据反归一化
T_sim1 = mapminmax('reverse', t_sim1, ps_output);
T_sim2 = mapminmax('reverse', t_sim2, ps_output);

%%  均方根误差
error1 = sqrt(sum((T_sim1' - T_train).^2) ./ M);
error2 = sqrt(sum((T_sim2' - T_test ).^2) ./ N);


%%  相关指标计算
%  R2
R1 = 1 - norm(T_train - T_sim1')^2 / norm(T_train - mean(T_train))^2;
R2 = 1 - norm(T_test  - T_sim2')^2 / norm(T_test  - mean(T_test ))^2;

disp(['训练集数据的R2为:', num2str(R1)])
disp(['测试集数据的R2为:', num2str(R2)])

%  MAE
mae1 = sum(abs(T_sim1' - T_train)) ./ M ;
mae2 = sum(abs(T_sim2' - T_test )) ./ N ;

disp(['训练集数据的MAE为:', num2str(mae1)])
disp(['测试集数据的MAE为:', num2str(mae2)])

%% 平均绝对百分比误差MAPE
MAPE1 = mean(abs((T_train - T_sim1')./T_train));
MAPE2 = mean(abs((T_test - T_sim2')./T_test));

disp(['训练集数据的MAPE为:', num2str(MAPE1)])
disp(['测试集数据的MAPE为:', num2str(MAPE2)])

%  MBE
mbe1 = sum(abs(T_sim1' - T_train)) ./ M ;
mbe2 = sum(abs(T_sim1' - T_train)) ./ N ;

disp(['训练集数据的MBE为:', num2str(mbe1)])
disp(['测试集数据的MBE为:', num2str(mbe2)])

%均方误差 MSE
mse1 = sum((T_sim1' - T_train).^2)./M;
mse2 = sum((T_sim2' - T_test).^2)./N;

disp(['训练集数据的MSE为:', num2str(mse1)])
disp(['测试集数据的MSE为:', num2str(mse2)])

Referencias

[1] https://blog.csdn.net/kjm13182345320/article/details/128577926?pm=1001.2014.3001.5501
[2] https://blog.csdn.net/kjm131823453320/details = 1001.2014 .3001.5501

Supongo que te gusta

Origin blog.csdn.net/kjm13182345320/article/details/131198457
Recomendado
Clasificación