【SVM分类】基于matlab改进的人工蜂群算法优化SVM分类【含Matlab源码 1833期】

举报
海神之光 发表于 2022/05/29 00:08:06 2022/05/29
【摘要】 一、改进的人工蜂群算法优化SVM分类 近年来,对数据挖掘中高维数据的研究越来越多。而在数据分析中,分类是一种有效的方法。但随着数据维数的不断增多,包含的一些不相关或冗余特征会增加分类难度。所以,在分类问...

一、改进的人工蜂群算法优化SVM分类

近年来,对数据挖掘中高维数据的研究越来越多。而在数据分析中,分类是一种有效的方法。但随着数据维数的不断增多,包含的一些不相关或冗余特征会增加分类难度。所以,在分类问题中,特征子集的选择和参数优化成为提高分类性能的两个重要因素。智能优化算法作为新兴的算法,通过模拟群体行为来解决复杂的实际问题。例如,人工蜂群算法通过模拟蜜蜂群体寻找优质蜜源的行为来解决问题,该算法借助启发式搜索策略,不仅有效进行局部搜索,还具有全局寻优能力。由于智能算法具有实现简单、适用性强的优点,因此,被广泛应用于模式识别、智能控制等领域。因此,本文提出基于人工蜂群算法的特征选择和支持向量机参数同步优化的算法,其目的是既能提高分类率又能减少特征维数。将提出的算法在UCI数据库上验证,结果表明提出的算法具有特征选择的能力,降低了数据维数,并能明显提高分类能力。与其他算法相比,本文提出的算法在特征选择和分类方面具有较好的结果。鉴于人工蜂群算法初始解的随机性,引入整数帐篷映射的概念对初始阶段和侦查蜂生成解的方式进行改进,并用标准测试函数验证算法性能,得出改进的算法加快了收敛速度同时提高了算法精度。同样也将改进的算法用于特征选择和参数优化,运用相同的数据集验证结果,发现改进后的算法分类率更高且选择的特征数目更少。最后,运用多目标人工蜂群算法对分类器进行设计,把分类率和特征选择作为两个目标,不设置权重。并对数据进行分类,优化得到的结果较前两种方法有所提升,而且决策者也可根据需要选择分类率高的结果或是特征数目少的结果。

本小结内容包括ABC算法中的参数设计和适应度函数设计, 以及ABC-SVM算法的整体流程设计。

1 ABC算法参数设计
在运用ABC算法对问题进行优化时, 首先应确定待优化的参数有哪些, 如何对其进行设计才能达到所需要的效果。
在本课题中主要运用ABC算法对特征子集进行选择以及对SVM的参数进行优化。在对SVM进行参数优化时, 首先应确定有哪些参数需要优化, 选择不同的核函数就需要优化不同的参数,因此,在优化参数前应确定核函数的类型。通过众多研究者实验和研究可知,径向基核函数是首选核函数,因此,本课题选择径向基函数(Radial basis function, RBF) 作为SVM的核函数, 它之所以受研究者的青睐,主要是因为它处理高维数据的能力较好,适用性强,并且优化的参数
个数较少。
对于RBF核函数, 参数包含两个:惩罚因子c和核函数参数y。取不同的数值,会获得不同分类结果。惩罚因子c用于控制模型的复杂度和错分样本的惩罚力度,c过大时,会出现训练阶段分类精度高而测试阶段差的现象;c过小,得到的结果很难令人满意。而参数y会影响样本在高维空间中的分布情况,它决定了分类面的复杂度, 而且参数y对SVM分类精度的影响远远大于惩罚因子c对分类的影响,取值过大会产生“过学习”问题,过小则会出现“欠学习”的问题。所以,优化c和y对提高分类器性能起着重要的作用。
此外, 还需进行特征选择, 特别是高维数据。因此ABC算法中待优化的参数包括特征个数和SVM参数c和y, 如表3.1所示参数的设置, 其中n表示原始特征数目,由于每个数据集的情况不同,所以算法中参数的维数也会变化,应根据具体情况设计。
在这里插入图片描述
2 适应度函数的设计
ABC-SVM算法是通过优化特征子集和SVM的参数来提高分类性能, 因此, 把分类率和选择的特征个数作为适应度函数。当获得高分类率且较少特征数目时,适应度应该较好。综合以上考虑,本课题中适应度设计如式(3.1)所示
fitness=wx svm_accuracy+w, XN(3.1)式中, svm_accuracy表示交叉验证分类率, N表示选择的特征数。w.和w, 分别表示这两个目标在适应度中占的比例,满足w.+w,=1。运用时可根据实际情况进行设置,例如,当不考虑特征选择,只考虑分类率时,可以设置w=1.

3 ABC-SVM算法
ABC算法同时优化特征子集和SVM参数的流程图如图3.1所示, 主要步骤描述如下:
1)输入数据集
输入数据,并分成训练集和测试集,训练集和测试集的分配方式不同得到的结果也不同。本课题中设置训练集是总数据的2/3,测试集是总数据的1/3,为了使训练得到的SVM模型更完善, 保证每一类都能够正确分类到所属类别, 因此, 训练集中每一类的数量占其所在类的2/3,而测试集中的每一类则是1/3。
2)数据预处理
有关于数据的实验操作中,为了使最终得到的实验结果理想,在进行实验前,都需对数据进行处理,运用不同的数据处理方式,得到的结果都会有所不同。尤其是存在奇异数据(数据中会出现过大或过小的数据),为了清除数据之间的差异性,必须要对原始数据进行处理。原数据经过预处理之后,就会缩小数据之间的差距,在对数据进行分类操作或是其他的实验时,能够缩短运行时间同时加快算法收敛的速度。数据归一化的方法也有很多种。在实际操作中,考虑是否运用数据标准化,运用哪一种数据标准化,这都需要根据具体情况而定。
本课题中采用公式(3.2)进行归一化处理
f:x→y=-A-Lm_(3.2)
Xm a.-xmi
其中, x, yeR", x为原始数据, y是归一化后的数据。归一化后的效果是原始数据被规整到[-1,1].
在这里插入图片描述
3) SVM参数和特征子集
数据集分成训练集和测试集并进行预处理后,接下来就是对分类器的设计,也就是ABC算法对特征子集和SVM参数的优化, 主要步骤如下:
Step l:根据特征数目和SVM的参数确定参数的维度和参数的上下界, 接着初始化种群,计算每个蜜源的适应度:根据特征选择的方法,选择出需要的特征子集,用含有特征子集的数据集和初始化得到的SVM参数c和y构造分类器模型并进行分类, 得到的分类精度svm_accuracy, 再代入公式3.1就是所得适应度。
Step 2:雇佣蜂在食物源附近开采, 并评价候选解。
Step 3:根据概率选择公式求得每个食物源被选择的机率, 观察蜂依据贪婪原则挑选质量较好的食物源,并在其邻域内开采,通过适应度函数再一次获取邻域新解的数值。
Step 4:当一个食物源经过一定次数的搜索后, 依然没有发现较优的蜜源, 就认为该蜜源进入局部极值,侦查蜂就会随机生成一个新的食物源来代替此位置。
Step 5:判断算法是否达到停止条件, 没达到停止条件, 就会转入Step 2重新搜索;反之,过程结束并输出优化的特征子集和参数c和y。

二、部分代码

三、运行结果

在这里插入图片描述
在这里插入图片描述

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]张谦.基于人工蜂群算法的分类算法研究[J].中原工学院河南省

文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。

原文链接:qq912100926.blog.csdn.net/article/details/123869528

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。