【MATLAB第51期】基于MATLAB的WOA-ORELM-LSTM多输入单输出回归预测模型,鲸鱼算法WOA优化异常鲁棒极限学习机ORELM超参数,修正LSTM残差
一、效果展示
1.鲸鱼算法优化ORELM隐含层节点及C值2超参。
2.ORELM优化前后对比
3.WOA-ORELM修正LSTM残差效果。
二、数据展示
一列数据,案例数据为541个样本,测试最后30个样本。
数据标准化处理。
data=xlsread('数据.xls');
data1=data';
N=30;%预测个数
N1=size(data,1)-N;
numTimeStepsTrain = floor(N1);%N1数据训练 ,剩余30用来测试
dataTrain = data(1:numTimeStepsTrain+1,:);% 训练数据
dataTest = data(numTimeStepsTrain:end,:); % 预测数据
%标准化处理
mu = mean(dataTrain,'ALL');
sig = std(dataTrain,0,'ALL');
dataTrainStandardized = (dataTrain - mu) / sig;
XTrain = dataTrainStandardized(1:end-1,:);%训练输入
YTrain = dataTrainStandardized(2:end,:);%训练输出
三、LSTM模型结果
LSTM采用默认参数,测试集预测结果如下:
四、WOA-ORELM模型
1.WOA-ORELM优化LSTM残差。
error=YPred-YTest;% 残差
ELMXTrain = error(:,1:end-1);%训练输入
ELMYTrain = error(:,2:end,:);%训练输出
2.鲸鱼算法WOA参数设置:
SearchAgents_no=100; % Number of search agents 种群数量
Max_iteration=20; % Maximum numbef of iterations 设定最大迭代次数
lb=[0.1,10]; % C值 和 隐含层神经元数
ub=[2^30,200];
dim=2;
fobj=@minerror;
3.最终结果
-----------1------------
ORELM_LSTM均方根误差(RMSE):0.003523
ORELM_LSTM平均绝对误差(MAE):0.0025534
ORELM_LSTM平均相对百分误差(MAPE):0.37779%
ORELM_LSTM R-square决定系数(R2):0.98497
-----------2------------
WOA-ORELM-LSTM均方根误差(RMSE):0.0019373
WOA-ORELM-LSTM平均绝对误差(MAE):0.0017745
WOA-ORELM-LSTM平均相对百分误差(MAPE):0.26036%
WOA-ORELM-LSTM R-square决定系数(R2):0.99873
五、分析总结
- 残差修正一般适用于LSTM参数较好,数据集较好的情况。在此基础上,若通过进化算法优化LSTM参数会增加运行工作量。
- 而残差修正一般适用于时间序列预测,用进化算法优化残差修正模型比深度学习模型的收敛速度快不少。
- 残差修正后的结果,也可以对未来进行修正预测,但是研究意义大于实用意义。
六、代码获取
私信回复“51期”可获取下载链接,因链接为人工发送,请耐心等待。