基于蝗虫(蚱蜢)优化算法GOA优化的支持向量机分类模型SVM及其MATLAB实现-附代码

文章目录

  • 基于蝗虫(蚱蜢)优化算法GOA优化的支持向量机分类模型SVM及其MATLAB实现-附代码
  • 1. 模型与算法描述
    • 1.1 蝗虫优化算法原理介绍
    • 1.2 支持向量机分类介绍
  • 2. 蝗虫优化算法GOA优化支持向量机分类模型的构建过程
    • 2.1 优化模型的建立
    • 2.2 算法流程
  • 3. GOA-SVM数据分类模型的参数设置
  • 4. 运行结果
  • 5. MATLAB代码与数据下载地址

1. 模型与算法描述

1.1 蝗虫优化算法原理介绍

蝗 虫 优 化 算 法 ( Grasshopper Optimization Algorithm, GOA) 是一种新型的元启发式算法,由 Mirjalili 等人于2017年提出。该算法受幼虫和成年蝗虫大范围移动与寻找食物源的聚集行为启发,具有操作参数少,公式简单的特点。针对基准测试函数优化问题的实验结果表明,GOA的收敛性优于粒子群算法。

1.1.1 蝗虫群的位置移动

Xid=c(∑j=1,j≠iNcubd−lbd2s(∣xjd−xid∣)xj−xidij)+Td(1)X_{i}^{d}=c\left(\sum_{j=1,j \neq i}^{N} c \frac{u b_{d}-l b_{d}}{2} s\left(\left|x_{j}^{d}-x_{i}^{d}\right|\right) \frac{x_{j}-x_{i}}{d_{i j}}\right)+{T}_{d}(1) Xid​=c⎝⎛​j=1,j​=i∑N​c2ubd​−lbd​​s(∣∣​xjd​−xid​∣∣​)dij​xj​−xi​​⎠⎞​+Td​(1)

式中,ddd是表示变量维度,i,ji, ji,j表示蝗虫个体编号,ubd、lbdub_d、lb_dubd​、lbd​分别表示变量的上限与下限,TdT_dTd​表示最优的蝗虫个体位置,dijd_{ij}dij​是两个蝗虫个体之间的欧式距离,c是控制参数,用于平衡算法的全局探索和局部开发。函数s()s( )s()表示两个蝗虫个体之间的交互力影响。

控制参数 ccc 一般设计为线性递减,使得算法具有动态与不确定搜索能力:
c=cmax⁡−tcmax⁡−cmin⁡Tmax⁡(2)c=\mathrm{c}_{\max }-t \frac{\mathrm{c}_{\max }-\mathrm{c}_{\min }}{\mathrm{T}_{\max }}(2) c=cmax​−tTmax​cmax​−cmin​​(2)

式中,cmax、cminc_{max}、c_{min}cmax​、cmin​分别表示递减区间的最大值与最小值,ttt表示当前的迭代次数,TmaxT_{max}Tmax​表示最大迭代次数。

1.1.2 蝗虫个体之间的相互影响

s(r)=fe−rl−e−r(3)s(r)=f \mathrm{e}^{\frac{-r}{l}}-\mathrm{e}^{-r}(3) s(r)=fel−r​−e−r(3)

式中,f、lf、lf、l分别表示吸引强度参数与吸引尺度参数,取0.5和1.5。
s(r)>0s(r)>0s(r)>0时,rrr的取值范围表示吸引区.
s(r)<0s(r)<0s(r)<0时,rrr的取值范围表示排斥区.
s(r)=0s(r)=0s(r)=0时,蝗虫个体之间既不排除也不吸引,rrr的取值范围表示舒适区.

1.1.3 蝗虫优化算法的基本实现步骤

  1. 初始化最大迭代次数N,种群大小n,变量范围,控制参数的最大值最小值等参数。
  2. 初始化种群位置,计算初始的个体适应度,并得到最优蝗虫位置与适应度。
  3. 开始循环(K=1):使用公式(2)、(3)更新参数。使用公式(1)更新蝗虫个体的位置,并检查是否越界。
  4. 计算每个蝗虫的适应度,更新到目前为止找到的最优食物源(即最优个体位置与适应度)。
  5. 重复执行步骤3和4,直到满足最大迭代次数,结束循环(K=N)。
  6. 返回最优的参数取值和最优的适应度值。

1.2 支持向量机分类介绍

使用台湾林智仁教授开发的libsvm支持向量机库函数,可以进行支持向量机的多分类,并且能简单的设置支持向量机核函数属性,比如线性核函数,多项式核函数,RBF核函数。RBF核函数具有映射范围广、运算快速等特点,使用较为广泛。在libsvm的库函数中,CCC的值为1,σ\sigmaσ默认取1/k,k为总类别数。这两个参数的取值与支持向量机模型学习能力的关系如下图所示:

CCC取值 σ\sigmaσ取值 SVM模型的学习能力
欠学习
过学习

使用智能优化算法优化支持向量机分类时,大多通过优化惩罚参数CCC与核函数参数σ\sigmaσ来提高分类精度。

2. 蝗虫优化算法GOA优化支持向量机分类模型的构建过程

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

类型 编码
1 1 0 0
2 0 1 0
3 0 0 1

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

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

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

2.1 优化模型的建立

优化惩罚参数c与核参数σ\sigmaσ,目标函数采用五折交叉验证的最佳准确率。目标函数公式如下:
Fitness =nN×100%\text { Fitness }=\frac{n}{N} \times 100 \%  Fitness =Nn​×100%
式中,nnn为识别准确的样本统计个数,NNN为识别的样本总数。适应度越大,说明优化模型的识别准确率越高。

2.2 算法流程

3. GOA-SVM数据分类模型的参数设置

GOA算法的参数设置:

% GOA的参数选项初始化
goa_option.maxgen = 100;                     %最大迭代次数
goa_option.sizepop = 20;                %种群大小
goa_option.cbound = [1e-5,1000];         %惩罚参数C的优化范围
goa_option.gbound = [1e-5,1000];        %核参数g的优化范围
goa_option.v = 5;                %交叉验证折数%系数c的变化范围
cMax=1;
cMin=0.00004;
f=0.5;L=1.5;   %相互作用力公式的系数常量

GOA优化后的参数赋给SVM:

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

4. 运行结果

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


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


从适应度曲线来看,蝗虫优化算法的收敛速度很快,但后期发生聚群行为(可能陷入局部最优)。SVM对红酒数据集的分类准确率一般为97%上下,故起到了优化的效果。

参考文献: [1]Shahrzad, Saremi, Seyedali, et al. Grasshopper Optimisation Algorithm: Theory and application[J]. Advances in Engineering Software, 2017.

5. MATLAB代码与数据下载地址

见博客主页

1.支持向量机SVM分类

2.灰狼优化算法GWO优化支持向量机分类

3.遗传算法GA优化支持向量机分类

4.粒子群算法PSO优化支持向量机分类

5.蝗虫优化算法GOA优化支持向量机分类

基于蝗虫(蚱蜢)优化算法优化的支持向量机分类模型及其MATLAB实现-附代码相关推荐

  1. 基于粒子群优化算法的最小二乘支持向量机预测模型构建(MATLAB实现)

    先去下载matlab的lssvm工具箱,网上可以搜到.这里不细说 先用PSO算法进行参数寻优,也就是gamma和sig2两个参数,LS-SVM的原理不细说. pso.m clc; clear all; ...

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

    基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码 文章目录 基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码 1 GWO-SVM 模型 1.1 灰狼优化器GWO ...

  3. Python实现ABC人工蜂群优化算法优化支持向量机回归模型(SVR算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 人工蜂群算法(Artificial Bee Colony, AB ...

  4. Python实现ACO蚁群优化算法优化支持向量机回归模型(SVR算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 蚁群优化算法(Ant Colony Optimization, ...

  5. 基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码

    基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码 文章目录 基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码 1 蝙蝠算法与BP神经网络分类模型 1.1 蝙 ...

  6. Python实现ABC人工蜂群优化算法优化支持向量机分类模型(SVC算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 人工蜂群算法(Artificial Bee Colony, AB ...

  7. Python实现DE差分进化算法优化支持向量机分类模型(SVC算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 差分进化算法(Differential Evolution,DE ...

  8. 度量相似性数学建模_一种基于粒子群位置更新思想灰狼优化算法的K-Means文本分类方法与流程...

    技术特征: 1.一种基于粒子群位置更新思想灰狼优化算法的k-means文本分类方法,其特征在于:包括以下步骤: s1:对文本数据进行预处理,得到预处理后文本数据: s2:采用余弦角度为相似性度量,分别 ...

  9. Python实现GWO智能灰狼优化算法优化支持向量机分类模型(SVC算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 灰狼优化算法(GWO),由澳大利亚格里菲斯大学学者 Mirjal ...

最新文章

  1. logcat 结合 grep 过滤 log 日志信息
  2. android+高仿视频录制,android高仿微信视频编辑页
  3. JS学习笔记(一)DOM事件和监听
  4. 迈向成功的关键在于执行(摘自李开复博士的《做最好的自己》)
  5. 017_SpringBoot异常处理方式-自定义错误页面
  6. WPF canvas、基本图形、path几个示例
  7. Redis序列化、RedisTemplate序列化方式大解读,介绍Genericjackson2jsonredisserializer序列化器的坑
  8. ML之回归预测:利用九大类机器学习算法对无人驾驶汽车系统参数(2018年的data,18+2)进行回归预测值VS真实值
  9. RMAN 的备份保留策略
  10. Ionic3 通讯录索引的实现
  11. java类的设计技巧
  12. 谈谈重载(overload)覆盖(override)与隐藏
  13. 怎么看铜皮属性_阻抗匹配怎么做 及阻抗匹配的作用。
  14. Linux环境下安装单实例MySQL 5.7
  15. 有一种方法叫“重启”
  16. 中国移动亮相2012亚洲移动通信博览会
  17. 计算机软考初级工程资料,计算机软考数据库系统工程师考前练习300资料.doc
  18. 脉内分析从零开始(持续更新)
  19. 前端method常见请求方式
  20. 這是一位女生寫的 - 男生如何追求女生

热门文章

  1. 悼念乔布斯---他的产品改变了世界,思想影响了一代人,三个故事,勉励大家
  2. Servlet - 九大对象和四个作用域
  3. 解决Parallels Desktop网络初始化失败问题
  4. parallels安装linux命令行,Parallels desktop怎么安装linux系统
  5. python初中级开发面经(持续更新2020-3-7)
  6. 在Eclipse上整合SpringBoot、Orcale
  7. 如何设计出用户体验良好的登录/注册页面
  8. mac如何修改chrome的刷新及开发者工具等快捷键
  9. java 计算星座_Java根据出生日期计算星座
  10. 认购与申购的区别是什么