时序预测 | Matlab实现SSA-GRU、GRU麻雀算法优化门控循环单元时间序列预测(含优化前后对比)

时序预测 | Matlab实现SSA-GRU、GRU麻雀算法优化门控循环单元时间序列预测(含优化前后对比)

预测效果

1
2
3

4

基本介绍

Matlab实现SSA-GRU、GRU麻雀算法优化门控循环单元时间序列预测(含优化前后对比)(完整程序和数据)
Matlab实现SSA-GRU、GRU麻雀算法优化门控循环单元时间序列预测对比(完整程序和数据)
单变量时间序列预测,运行环境Matlab2020及以上。
SSA-GRU优化得到的最优参数为:
SSA-GRU优化得到的隐藏单元数目为:31
SSA-GRU优化得到的最大训练周期为:62
SSA-GRU优化得到的InitialLearnRate为:0.027781SSA-GRU优化得到的L2Regularization为:0.021961
SSA-GRU结果:
SSA-GRU训练集MSE:0.0036759
SSA-GRU测试集MSE:0.064393
GRU结果:
GRU训练集MSE:0.00027715
GRU测试集MSE:0.45317

程序设计

%%
%创建GRU回归网络,指定GRU层的隐含单元个数96*3
%序列预测,因此,输入一维,输出一维
numFeatures = 1;
numResponses = 1;
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc      
————————————————
版权声明:本文为CSDN博主「机器学习之心」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kjm13182345320/article/details/130439025
%% 定义麻雀优化参数
pop=5; %种群数量
Max_iteration=10; %  设定最大迭代次数
dim = 4;%维度,即GRU网路包含的隐藏单元数目,最大训练周期,初始学习率,L2参数
lb = [2,2,10E-3,10E-3];%下边界
ub = [50,100,1,1];%上边界
fobj = @(x) fun(x,numFeatures,numResponses,XTrain,YTrain,XTest,YTest);
[Best_pos,Best_score,SSA_curve,netSSA]=SSA(pop,Max_iteration,lb,ub,dim,fobj); %开始优化
figure
plot(SSA_curve,'linewidth',1.5);
grid on
xlabel('迭代次数')
ylabel('适应度函数')
title('SSA-GRU收敛曲线')
%训练集测试
PredictTrainSSA = predict(netSSA,XTrain, 'ExecutionEnvironment','cpu');
%测试集测试
PredictTestSSA = predict(netSSA,XTest, 'ExecutionEnvironment','cpu');
%训练集mse
mseTrainSSA= mse(YTrain-PredictTrainSSA);
%测试集mse
mseTestSSA = mse(YTest-PredictTestSSA);
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc      
————————————————
版权声明:本文为CSDN博主「机器学习之心」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kjm13182345320/article/details/130439025

%% 基础GRU测试
numHiddenUnits = 100;
layers = [ ...
    sequenceInputLayer(numFeatures)
    gruLayer(numHiddenUnits)
    fullyConnectedLayer(numResponses)
    regressionLayer];
 
%指定训练选项
options = trainingOptions('adam', ...
    'MaxEpochs',500, ...
    'ExecutionEnvironment' ,'cpu',...
    'GradientThreshold',1, ...
    'InitialLearnRate',0.001, ...
    'L2Regularization',0.0001,...
    'Verbose',0);

参考资料

[1] https://blog.csdn.net/article/details/126072792?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/article/details/126044265?spm=1001.2014.3001.5502

猜你喜欢

转载自blog.csdn.net/kjm13182345320/article/details/130440776