700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码

基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码

时间:2021-10-12 14:02:50

相关推荐

基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码

基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码

文章目录

基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码1 GWO-SVM 模型1.1 灰狼优化器GWO1.2 支持向量机分类SVM2 基于GWO-SVM 的分类算法2.1 优化变量与目标函数的选取2.2 GWO-SVM 建模步骤3 GWO-SVM 的参数设置4 运行结果5 参考文献MATLAB代码与数据下载地址

1 GWO-SVM 模型

摘要:在工业生产与日常生活中,存在着一系列的分类算法问题,比如变压器故障诊断,轴承故障诊断,企业指标评级,河流水质等级检测等。这些问题中,原始的特征数据大多是高维复杂且为非线性关系,难以根据特征数据直接获得相应样本的类型,而支持向量机算法建立在统计学习理论的基础上,可解决高维非线性分类的问题。针对支持向量机参数对分类结果影响较大的问题,本文构建了一种基于灰狼优化算法的支持向量机类型识别与诊断的模型。对比SVM模型,该混合优化算法具有诊断精度高,泛化能力强的优点。

1.1 灰狼优化器GWO

灰狼优化器算法(Grey Wolf Optimizer,GWO)是一种群体智能优化算法,由 Mirjalili [1] 等人于提出。该算法受到了灰狼群体协作捕食猎物行为的启发,GWO具有结构简单,可调参数少,收敛性强等优点。

1.1.1 GWO数学模型

社会等级分层

GWO将灰狼群体划分为α、β、γ 和ω 4 种等级。按适应度的大小排序金字塔如图1所示:

将狼群中适应度最好的三匹灰狼依次标记为α、β、δ\alpha、\beta、\deltaα、β、δ、其余的灰狼标记为ω\omegaω。在狼群中,其他灰狼必须听从和执行α 狼做出的决策,α\alphaα狼也被称为支配狼。β\betaβ 狼协助α\alphaα 狼做出正确的决策,并听从于α\alphaα狼,δ\deltaδ 狼支配剩余层级的狼,并听从α\alphaα和β\betaβ狼。ω\omegaω狼等级最低,服从于前3 等级的狼,起到平衡狼群内部关系的作用,ω\omegaω狼跟随α、β、δ\alpha、\beta、\deltaα、β、δ狼进行追踪和围捕,猎物的位置便是目标函数的最优解。

包围机制

D⃗=∣C⃗⋅Xp→(t)−X⃗(t)∣,(1)\vec{D}=\left|\vec{C} \cdot \overrightarrow{X_{p}}(t)-\vec{X}(t)\right| ,(1) D=∣∣∣​C⋅Xp​​(t)−X(t)∣∣∣​,(1)

X⃗(t+1)=Xp→(t)−A⃗⋅D⃗,(2)\vec{X}(t+1)=\overrightarrow{X_{p}}(t)-\vec{A} \cdot \vec{D} ,(2)X(t+1)=Xp​​(t)−A⋅D,(2)

式中,Xp→(t)\overrightarrow{X_{p}}(t)Xp​​(t)是猎物的位置向量,X→(t)\overrightarrow{X}(t)X(t)是灰狼的位置向量。式(1)为灰狼与猎物的距离,式(2)为灰狼依据距离而发生的位置更新公式。系数向量A→\overrightarrow{A}A、C→\overrightarrow{C}C的计算公式如下:

A⃗=2a⃗⋅r1→−a⃗,(3)\vec{A}=2 \vec{a} \cdot \overrightarrow{r_{1}}-\vec{a} ,(3)A=2a⋅r1​​−a,(3)

C⃗=2⋅r2→,(4)\vec{C}=2 \cdot \overrightarrow{r_{2}},(4) C=2⋅r2​​,(4)

式中,aaa 是收敛因子,随迭代次数的增加从2线性减小到0,r1、r2r_1、r_2r1​、r2​是[0,1] 之间的随机数。

狩猎机制

{D⃗α=∣C⃗1⋅X⃗α−X⃗∣D⃗β=∣C⃗2⋅X⃗β−X⃗∣D⃗δ=∣C⃗1⋅X⃗δ−X⃗∣,(5)\left\{\begin{array}{l} \vec{D}_{\alpha}=\left|\vec{C}_{1} \cdot \vec{X}_{\alpha}-\vec{X}\right| \\ \vec{D}_{\beta}=\left|\vec{C}_{2} \cdot \vec{X}_{\beta}-\vec{X}\right| \\ \vec{D}_{\delta}=\left|\vec{C}_{1} \cdot \vec{X}_{\delta}-\vec{X}\right| \end{array}\right.,(5) ⎩⎪⎪⎪⎨⎪⎪⎪⎧​Dα​=∣∣∣​C1​⋅Xα​−X∣∣∣​Dβ​=∣∣∣​C2​⋅Xβ​−X∣∣∣​Dδ​=∣∣∣​C1​⋅Xδ​−X∣∣∣​​,(5)

{X⃗1=X⃗a−A1⋅D⃗αX⃗2=X⃗β−A2⋅D⃗βX⃗3=X⃗δ−A3⋅D⃗δ,(6)\left\{\begin{array}{l} \vec{X}_{1}=\vec{X}_{a}-A_{1} \cdot \vec{D}_{\alpha} \\ \vec{X}_{2}=\vec{X}_{\beta}-A_{2} \cdot \vec{D}_{\beta} \\ \vec{X}_{3}=\vec{X}_{\delta}-A_{3} \cdot \vec{D}_{\delta} \end{array}\right.,(6) ⎩⎨⎧​X1​=Xa​−A1​⋅Dα​X2​=Xβ​−A2​⋅Dβ​X3​=Xδ​−A3​⋅Dδ​​,(6)

X⃗(t+1)=X⃗1+X⃗2+X⃗33,(7)\vec{X}(t+1)=\frac{\vec{X}_{1}+\vec{X}_{2}+\vec{X}_{3}}{3},(7) X(t+1)=3X1​+X2​+X3​​,(7)

根据以上公式得到α、β、δ\alpha、\beta、\deltaα、β、δ的最优位置后,其他狼就可

以据此进行位置更新,X⃗(t+1)\vec{X}(t+1)X(t+1) 是更新后灰狼的位置向量。

攻击与勘探

在式(3)中,收敛因子a的变化,会引起系数A的改变,改变的范围是[-a,a]。攻击猎物,确定猎物位置,通过|A| 的大小来确定是否找到猎物位置,当|A| ≤ 1时,算法收敛,可以得到猎物位置。当|A|>1时,GWO进行全局搜索。式(4)中的系数C,是在[0,2]上变化的随机数,作用是为灰狼搜索猎物提供随机权重,有助于优化算法避开局部最优。值得注意的是,随机系数A和C都不是线性下降的,对GWO算法的寻优性能会产生一定的影响。

1.2 支持向量机分类SVM

支持向量机的原理可参考:遗传算法/粒子群算法优化支持向量机分类 与 最小二乘支持向量机–LSSVM分类。

2 基于GWO-SVM 的分类算法

2.1 优化变量与目标函数的选取

针对支持向量机的惩罚参数c与RBF基函数的宽度参数g取值对SVM分类结果影响的问题,使用GWO算法进行参数的全局寻优。目标函数采用五折交叉验证的最佳准确率。目标函数公式如下:

Fitness=nN×100%,(8)\text { Fitness }=\frac{n}{N} \times 100 \%,(8) Fitness=Nn​×100%,(8)

式中, n为识别准确的样本统计个数, N为识别的样本总数。适应度越大,说明优化模型的识别准确率越高。

2.2 GWO-SVM 建模步骤

数据来源:采用意大利红酒数据集进行分类模型的实现。数据集大小为178组样本,每组样本都具有13个特征,3种标签类型。获取的类型一般采用01的索引编码:

使用支持向量机做分类时,不需要通过索引编码的方式,直接获取123等整数类别即可(各种神经网络分类模型需要在程序中通过编码与解码索引,实现较高的分类精度)。

为了方便操作,将特征与整数类型放到EXCEL中,读取代码的命令如下:

%% 读取数据data=xlsread('数据.xlsx','Sheet1','A1:N178'); %使用xlsread函数读取EXCEL中对应范围的数据即可 %输入输出数据input=data(:,1:end-1); %data的第一列-倒数第二列为特征指标output_labels=data(:,end); %data的最后面一列为标签类型

建模步骤:使用灰狼优化算法优化SVM的c、g参数,建立GWO-SVM 模型的步骤如下:

(1)将样本分为训练集和测试集,并进行归一化。

(2)用灰狼算法对其进行初始化操作,设置种群数量、最大迭代次数、优化变量范围等算法参数。

(3)采用灰狼优化算法,以目标函数取值最大作为寻优目标,获取最优参数。

(4)利用测试集数据对优化后的支持向量机进行测试。

(5)输出GWO-SVM的测试集分类结果。

3 GWO-SVM 的参数设置

% GWO的参数初始化gwo_option.maxgen = 100; %最大迭代次数gwo_option.popsize = 20;%种群大小gwo_option.cbound = [1e-5,1000]; %c的优化范围gwo_option.gbound = [1e-5,1000]; %g的优化范围gwo_option.v = 5;%交叉验证折数

GWO优化后的参数赋给SVM:

%% 利用最佳的参数进行SVM网络训练cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg)];model = libsvmtrain(train_output_labels,train_input,cmd);

4 运行结果

4.1 灰狼优化算法GWO的适应度曲线和优化后的c、g参数值,交叉验证CV准确率

4.2 灰狼优化算法优化后的实际类型与识别类型对比图像

5 参考文献

[1] Mirjalili S , Mirjalili S M , Lewis A . Grey Wolf Optimizer[J]. Advances in Engineering Software, , 69(3):46–61.

[2]熊军华, 师刘俊, 康义. 基于灰狼算法优化支持向量机的变压器故障诊断[J]. 信息技术与信息化(11):4.

MATLAB代码与数据下载地址

见博客主页

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。