目录
1.内容介绍
2.部分代码
3.实验结果
4.内容获取
1内容介绍
粒子群优化(PSO)是一种启发式全局优化方法,灵感来源于鸟群觅食行为。在PSO中,每个“粒子”代表一个可能的解,并在搜索空间内通过迭代更新自己的位置和速度来寻找最优解。粒子的位置更新受到其个人最好位置(pbest)以及整个群体的全局最好位置(gbest)的影响。
利用PSO优化回声状态网络(ESN)超参数的方法。ESN作为一类高效的递归神经网络,在处理时间序列数据方面表现出色,但其性能高度依赖于超参数的选择。PSO用于探索最优的ESN超参数组合,包括但不限于输入权重、反馈权重等。通过这种方式,不仅能够自动调整这些复杂的参数,还能显著提升ESN在预测任务中的表现。实验结果表明,该方法能有效提高模型的泛化能力和预测准确性。
2部分代码
warning off % 关闭报警信息
close all % 关闭开启的图窗
clear % 清空变量
clc % 清空命令行
tic
load bwand
%% 导入数据
x=bwand;
[r,s] = size(x);
output=x(:,s);
input=x(:,1:s-1); %nox
%% 训练模型
net = esn_train(p_train, t_train, hidden, lr, Init, reg);
%% 预测
t_sim1 = esn_sim(net, p_train);
t_sim2 = esn_sim(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);
%% 绘图
%% 测试集结果
figure;
plotregression(T_test,T_sim2,['回归图']);
figure;
ploterrhist(T_test-T_sim2,['误差直方图']);
%%
%决定系数
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;
%%
%均方误差 MSE
mse1 = sum((T_sim1 - T_train).^2)./M;
mse2 = sum((T_sim2 - T_test).^2)./N;
%%
%RPD 剩余预测残差
SE1=std(T_sim1-T_train);
RPD1=std(T_train)/SE1;
SE=std(T_sim2-T_test);
RPD2=std(T_test)/SE;
%% 平均绝对误差MAE
MAE1 = mean(abs(T_train - T_sim1));
MAE2 = mean(abs(T_test - T_sim2));
%% 平均绝对百分比误差MAPE
MAPE1 = mean(abs((T_train - T_sim1)./T_train));
MAPE2 = mean(abs((T_test - T_sim2)./T_test));
%% 预测集绘图
figure
plot(1:N,T_test,'r-*',1:N,T_sim2,'b-o','LineWidth',1.5)
legend('真实值','PSO-ESN预测值')
xlabel('预测样本')
ylabel('预测结果')
string={'测试集预测结果对比';['(R^2 =' num2str(R2) ' RMSE= ' num2str(error2) ' MSE= ' num2str(mse2) ' RPD= ' num2str(RPD2) ')']};
title(string)
3实验结果
4内容获取
主页简介欢迎自取,点点关注,非常感谢!