MATLAB实现PSO_LSSVM粒子群算法优化最小二乘支持向量机多输入单输出。
Matlab实现PSO-LSSVM粒子群算法优化最小二乘支持向量机多变量回归预测
1.为数据集,输入6个特征,输出一个变量。
2.PSO_LSSVM.m为主程序主文件,其余为函数文件无需运行。
3.命令窗口输出MAE、MSE、R2、RMSEP和RPD,可在下载区获取数据和程序内容。
4.粒子群算法优化最小二乘支持向量机,优化RBF 核函数gam和sig。
注意程序和数据放在一个文件夹,运行环境为Matlab2018及以上.
LSSVM参数优化问题没有确定或通用的共识方法。由于智能算法在预测模型参数的选取确定方面具有稳健性和通用性,预测模型参数最优化过程中主要采用了遗传算法、果蝇优化算法、萤火虫算法、粒子群算法(PSO)、网格搜索算法、神经网络等智能算法。粒子群算法不断调整自身和种群最优位置关系,具有更强寻优能力。因此,为进一步得到可靠的模型参数,可沿用粒子群算法进行尝试验证。
%% 参数设置
pop = 5; % 种群数目
Max_iter = 50; % 迭代次数
dim = 2; % 优化参数个数
lb = [10, 10]; % 下限
ub = [1000, 1000]; % 上限%% 优化函数
fobj = @(x)fitnessfunclssvm(x, p_train, t_train);%% 优化
[Best_pos, Best_score, curve] = PSO(pop, Max_iter, lb, ub, dim, fobj);%% LSSVM参数设置
type = 'f'; % 模型类型 回归
kernel = 'RBF_kernel'; % RBF 核函数
proprecess = 'preprocess'; % 是否归一化%% 建立模型
gam = Best_score(1);
sig = Best_score(2);
model = initlssvm(p_train, t_train, type, gam, sig, kernel, proprecess);%% 训练模型
model = trainlssvm(model);%% 模型预测
t_sim1 = simlssvm(model, p_train);
t_sim2 = simlssvm(model, p_test);%% 数据反归一化
T_sim1 = mapminmax('reverse', t_sim1, ps_output);
T_sim2 = mapminmax('reverse', t_sim2, ps_output);
%% 定义粒子群算法参数
% N 种群 T 迭代次数
%% 随机初始化种群
D=dim; %粒子维数
c1=1.5; %学习因子1
c2=1.5; %学习因子2
w=0.8; %惯性权重Xmax=ub; %位置最大值
Xmin=lb; %位置最小值
Vmax=ub; %速度最大值
Vmin=lb; %速度最小值
%%
%%%%%%%%%%%%%%%%初始化种群个体(限定位置和速度)%%%%%%%%%%%%%%%%x=rand(N,D).*(Xmax-Xmin)+Xmin;
v=rand(N,D).*(Vmax-Vmin)+Vmin;
%%%%%%%%%%%%%%%%%%初始化个体最优位置和最优值%%%%%%%%%%%%%%%%%%%
p=x;
pbest=ones(N,1);
for i=1:Npbest(i)=fobj(x(i,:));
end
%%%%%%%%%%%%%%%%%%%初始化全局最优位置和最优值%%%%%%%%%%%%%%%%%%
g=ones(1,D);
gbest=inf;
for i=1:Nif(pbest(i)Vmax) | (v(j,ii)< Vmin)v(j,ii)=rand * (Vmax-Vmin)+Vmin;endif (x(j,ii)>Xmax) | (x(j,ii)< Xmin)x(j,ii)=rand * (Xmax-Xmin)+Xmin;endend elsefor ii=1:Dif (v(j,ii)>Vmax(ii)) | (v(j,ii)< Vmin(ii))v(j,ii)=rand * (Vmax(ii)-Vmin(ii))+Vmin(ii);endif (x(j,ii)>Xmax(ii)) | (x(j,ii)< Xmin(ii))x(j,ii)=rand * (Xmax(ii)-Xmin(ii))+Xmin(ii);endendendend%%%%%%%%%%%%%%%%%%%%记录历代全局最优值%%%%%%%%%%%%%%%%%%%%%Convergence_curve(i)=gbest;%记录训练集的适应度值
[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