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

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

1 GWO-SVM 模型

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

1.1 灰狼优化器GWO

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

1.1.1 GWO数学模型

  1. 社会等级分层
    GWO将灰狼群体划分为α、β、γ 和ω 4 种等级。按适应度的大小排序金字塔如图1所示:
    图1 灰狼的社会等级划分
    将狼群中适应度最好的三匹灰狼依次标记为 α 、 β 、 δ \alpha、\beta、\delta αβδ、其余的灰狼标记为 ω \omega ω。在狼群中,其他灰狼必须听从和执行α 狼做出的决策, α \alpha α狼也被称为支配狼。 β \beta β 狼协助 α \alpha α 狼做出正确的决策,并听从于 α \alpha α狼, δ \delta δ 狼支配剩余层级的狼,并听从 α \alpha α β \beta β狼。 ω \omega ω狼等级最低,服从于前3 等级的狼,起到平衡狼群内部关系的作用, ω \omega ω狼跟随 α 、 β 、 δ \alpha、\beta、\delta αβδ狼进行追踪和围捕,猎物的位置便是目标函数的最优解。

  2. 包围机制
    D ⃗ = ∣ C ⃗ ⋅ X p → ( 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 ) = X p → ( 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)
    式中, X p → ( 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 ⃗ = 2 a ⃗ ⋅ r 1 → − a ⃗ , ( 3 ) \vec{A}=2 \vec{a} \cdot \overrightarrow{r_{1}}-\vec{a} ,(3) A =2a r1 a ,(3)
    C ⃗ = 2 ⋅ r 2 → , ( 4 ) \vec{C}=2 \cdot \overrightarrow{r_{2}},(4) C =2r2 ,(4)
    式中, a a a 是收敛因子,随迭代次数的增加从2线性减小到0, r 1 、 r 2 r_1、r_2 r1r2是[0,1] 之间的随机数。

  3. 狩猎机制
    { 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 α= C 1X αX D β= C 2X βX D δ= C 1X δX ,(5)
    { X ⃗ 1 = X ⃗ a − A 1 ⋅ D ⃗ α X ⃗ 2 = X ⃗ β − A 2 ⋅ D ⃗ β X ⃗ 3 = X ⃗ δ − A 3 ⋅ 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) X 1=X aA1D αX 2=X βA2D βX 3=X δA3D δ,(6)
    X ⃗ ( t + 1 ) = X ⃗ 1 + X ⃗ 2 + X ⃗ 3 3 , ( 7 ) \vec{X}(t+1)=\frac{\vec{X}_{1}+\vec{X}_{2}+\vec{X}_{3}}{3},(7) X (t+1)=3X 1+X 2+X 3,(7)
    根据以上公式得到 α 、 β 、 δ \alpha、\beta、\delta αβδ的最优位置后,其他狼就可
    以据此进行位置更新, X ⃗ ( t + 1 ) \vec{X}(t+1) X (t+1) 是更新后灰狼的位置向量。

  4. 攻击与勘探
    在式(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  = n N × 100 % , ( 8 ) \text { Fitness }=\frac{n}{N} \times 100 \%,(8)  Fitness =Nn×100%,(8)

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

2.2 GWO-SVM 建模步骤

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

类型编码
11 0 0
20 1 0
30 0 1
使用支持向量机做分类时,不需要通过索引编码的方式,直接获取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的测试集分类结果。

图2 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准确率
图3 灰狼优化算法GWO的进化曲线图

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

图4 GWO-SVM模型预测类型和实际类型的对比图像

5 参考文献

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

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

MATLAB代码与数据下载地址

CSDN下载资源

https://download.csdn.net/download/qq_57971471/87730138

  • 7
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CJ-leaf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值