【MATLAB第48期】基于MATLAB的REMR-LSTM多次循环递归拓展理论的长短期记忆网络LSTM回归预测模型,PCA预处理降维
在本文中,将展示一个使用多次循环递归拓展(REMR)理论来改进LSTM回归预测问题。
通过多次循环,优化训练集和测试集输入权重,从而更新输入数据, 其次通过PCA主成分分析降维,控制特征数量。从而优化输入变量,改善训练模型,优化预测结果。
一、数据情况
103*8 前七列输入,最后一列输出
前80为训练集,后23为测试集。
%% 导入数据
res = xlsread('数据集.xlsx');
%% 划分训练集和测试集
temp =1:size(res,1);
P_train = res(temp(1: 80), 1: 7)';
T_train = res(temp(1: 80), 8)';
M = size(P_train, 2);
P_test = res(temp(81: end), 1: 7)';
T_test = res(temp(81: end), 8)';
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);
二、LSTM参数
layers = [
sequenceInputLayer(7) % 建立输入层
lstmLayer(4,'OutputMode','sequence') % LSTM层 , 'OutputMode', 'last'
reluLayer % Relu激活层
fullyConnectedLayer(1) % 全连接层
regressionLayer]; % 回归层
%% 参数设置
options = trainingOptions('adam', ... % Adam 梯度下降算法
'MiniBatchSize', 30, ... % 批大小
'MaxEpochs', 1200, ... % 最大迭代次数
'InitialLearnRate', 1e-2, ... % 初始学习率为
'LearnRateSchedule', 'piecewise', ... % 学习率下降
'LearnRateDropFactor', 0.5, ... % 学习率下降因子
'LearnRateDropPeriod', 800, ... % 经过 800 次训练后 学习率为 0.01 * 0.5
'Shuffle', 'every-epoch', ... % 每次训练打乱数据集
'Plots', 'none', ... % 画出曲线
'Verbose', 1);
三、LSTM运行结果
四、REMR-LSTM思路与运行结果
1.多次循环运行模型,设定循环次数。为了便于展示,循环次数设为5。
rounds=5;%循环次数5
2.建立训练模型 net
[network{j}]= LSTM_FUN(p_train,t_train);
3.初始化训练集与测试集输入变量权重
[Q_tr]= LSTM_w(LSTM,p_train'); %训练集模型输入权重
[Q_ts]= LSTM_w(LSTM,p_test'); %测试集模型输入权重
4.更新训练集与测试集输入变量
xtr=[ Q_tr tim1];
xts=[Q_ts tim2];
5.降维控制变量数量,得到最终变量
pca(xtr)
pca(xts)
6.带入新变量预测,得到评价结果
第三个子图可看出,训练集和测试集平均指标,在第五次循环结果最佳。
故选取第五次循环结果绘图。
与未优化前对比明显得到改善。
五、代码获取
后台私信回复“49期”可获取下载链接。