【MATLAB第65期】基于LSTM长短期记忆网络的多输入单输出数据预测未来思路介绍(短期预测)

【MATLAB第65期】基于LSTM长短期记忆网络的多输入单输出数据预测未来思路介绍(短期预测)

往期第13期已实现多输入单输出滑动窗口回归预测
多输入单输出滑动窗口回归预测
往期第54期已实现多输入多输出滑动窗口回归预测
多输入多输出滑动窗口回归预测

一、实现效果

本次实现多输入单输出数据预测未来思路,针对短期预测。

1.训练过程:
在这里插入图片描述

2.测试集拟合效果:
在这里插入图片描述
“RMSE2” “1.4041”
“MAPE2” “0.059405”


3.预测未来效果:

在这里插入图片描述

二、数据构造与处理:

构造原则:滑动窗口数=预测未来数量

原数据:
198行(代表198天),21列数据,其中前20列为变量,第21列为因变量。
若预测未来因变量, 需要构造现在时刻的输入,未来时刻的输出数据。
假设预测未来18个数据,则第一个样本可以为:
输入day1-18的 X1-X20数据(数据矩阵:18×20),输出day19-36的 Y19-Y36(18×1)
最后一个样本为:
输入day163-180的 X1-X20数据(数据矩阵:18×20),输出day181-198的 Y181-Y198(18×1)

前90%数据训练(146个),后10%数据测试(17个)
预测集输入数据为:
输入day181-198的 X1-X20数据(数据矩阵:18×20),输出day199-216的Y199-Y216(18×1)

三、LSTM参数设置

inputSize = size(input,1);   %数据输入x的特征维度
outputSize = k;  %数据输出y的特征维度  
numhidden_units1=100;
numhidden_units2=100;
% lstm
layers = [ ...
    sequenceInputLayer(inputSize,'name','input')                             %输入层设置
   % lstmLayer(numhidden_units1,'Outputmode','sequence')                     %学习层设置(cell层)
    lstmLayer(numhidden_units1,'Outputmode','sequence','name','hidden1')     %隐藏层1
    dropoutLayer(0.3,'name','dropout_1')                                     %隐藏层1权重丢失率,防止过拟合
    lstmLayer(numhidden_units2,'Outputmode','last','name','hidden2')         %隐藏层2
     dropoutLayer(0.3,'name','dropout_2')                                    %隐藏层2权重丢失率,防止过拟合
    fullyConnectedLayer(outputSize,'name','fullconnect')                     %全连接层设置(outputsize:预测值的特征维度)
    regressionLayer('name','out')];                                          %回归层(因为负荷预测值为连续值,所以为回归层) 

% trainoption
opts = trainingOptions('adam', ...        %优化算法
    'MaxEpochs',50, ...                   %遍历样本最大循环数
    'GradientThreshold',1,...             %梯度阈值
    'ExecutionEnvironment','cpu',...      %运算环境
    'InitialLearnRate',0.001, ...         %初始学习率
    'LearnRateSchedule','piecewise', ...  % 学习率计划
    'LearnRateDropPeriod',2, ...          %2个epoch后学习率更新
    'LearnRateDropFactor',0.9, ...        %学习率衰减速度
    'MiniBatchSize',1,...             % 批处理样本大小
    'Verbose',0, ...                      %命令控制台是否打印训练过程
    'Plots','training-progress'...        % 打印训练进度
    );

四、代码获取

后台私信回复“65期”可获得下载链接。

猜你喜欢

转载自blog.csdn.net/qq_29736627/article/details/132173448