1 简介
预测模型参数的选取对其泛化能力和预测准确度,起着至关重要作用.基于径向基核函数的最小二乘支持向量机参数主要涉及惩罚因子和核函数参数,这两个参数的选择将直接影响最小二乘支持向量机的学习和泛化能力.为了提高最小二乘支持向量机的预测结果,文章用灰狼优化算法对其参数寻优,建立数据分类模型.通过实验证明了该模型,对数据分类表现出很好的效果.
2014年,Mirjalili等提出灰狼优化(G rey Wolf Optimizer,GWO)算法,GWO算法通过模拟自然界灰狼的等级制度和捕食策略,寻找最优值。GWO算法以快速收敛性、调节参数少,在求解函数优化问题中表现出更加优越性而备受关注。该方法在全局搜索性、收敛性等方面优于粒子群优化算法、差分进化算法和引力搜索算法,并在特征子集选择、表面波参数优化等领域广泛应用。
2 部分代码
function [Newpop] = crossover_gwo(pop, lb,ub)
%将灰狼算法种群中适应度交叉的一半个体执行交叉操作
%pop请输入为按照适应度排序后的个体
length = 40;%设定四进制编码长度
[Navr,Lind] = size(pop);
pt = 1;
Min = lb;
Max = ub;
%下面将十进制转换为四进制
CF = CtoE(pop,Min,Max,length);
E = CtoE2(CF,length);
%下面执行交叉操作
%交叉操作设置为置换操作
E2 = E;
D = size(E,2);
for i=1:1:Navr
temp=rand;
if temp<=pt
n11(1)=ceil(D*rand);
n11(2)=ceil(D*rand);
while n11(2)==n11(1)
n11(2)=ceil(D*rand);
end
[n11,~]=sort(n11);
location=ceil(rand*Navr);
while location==i
location=ceil(rand*Navr);
end
E2(i,n11(1):n11(2))=E(location,n11(1):n11(2));
else
E2(i,:)=E(i,:);
end
end
%下面进行反编译
[rulepara]=uncode(E2,1,length);
[Newpop]=uniformity(rulepara,Max,Min,length);
end
%下面将十进制转换为四进制下的表示
function CF = CtoE(C,Min,Max,L)
[N,M] = size(C);
CF = zeros(size(C));
Fmax = 4.^L - 1;
for i = 1:M
ub = Max(i);
lb = Min(i);
scale = ub - lb;
for j = 1:N
CF(j,i) = ((C(j,i) - lb)/scale)*Fmax;
end
end
end
function Cnew = CtoE2(C,L)
[N,M] = size(C);
Cnew = zeros(N,L*M);
for i = 1:N
for j = 1:M
t = C(i,j);
for k = 1:L
Cnew(i,(j-1)*L+L-k+1) = mod(t,4);
t = fix(t/4);
end
end
end
end
3 仿真结果
4 参考文献
[1]李鹏飞, 王青青, 毋建宏, & 樊怡彤. (2020). 基于灰狼优化算法的最小二乘支持向量机红枣产量预测研究. 安徽农业科学, 48(6), 5.
[2]朱家元等. "基于优化最小二乘支持向量机的小样本预测研究." 航空学报 25.6(2004):4.
5 MATLAB代码与数据下载地址
见博客主页