作者在前面的文章中介绍了粒子群算法的原理及其2种改进算法,本文将基于这三种优化方法,应用于支持向量机进行分类,并对比改进算法与标准粒子群算法的分类性能,结果显示改进后的方法能够得到更佳的分类效果。(在对PSO-SVR的代码分享里我少加了适应度函数,现已补上,在公众号后台回复PSO-SVR即可)
00 文章目录
1 支持向量机
2 粒子群优化算法及其改进
3 支持向量机分类模型建立
4 代码目录
5 仿真
6 源码获取
01 支持向量机
支持向量机(SVM) 及其改进算法是一种典型的分类模 型机器学习算法。SVM以结构风险最小化为目标,在解决非线性、小样本及高维模式识别中具有泛化能力和全局寻优强的优点,在分类评价中具有较高的精度和计算效率。通常,多分类评价是一个典型的非线性分类问题。SVM 通过映射函数 φ( x) 、核函数 k( xi,xj) = φ( xi ) ·φ( xj) 将输入样本映射到高维特征空间,根据拉格朗日对偶性,将非线性支持向量机转为求解如下凸二次规划问题:
其中: αi 为拉格朗日乘子。利用二次规划方法和 KKT 条件,得 到拉格朗日乘子的特解 α* ,即可得到分类决策函数为:
若采用高斯径向基核函数, 则最终决策分类函数为:
其中: g>0为高斯核的带宽,即核函数参数。
02 粒子群优化算法及其改进
粒子群算法及其实现
自适应混沌粒子群算法及其实现
量子粒子群算法及其实现
03 支持向量机分类模型建立
显然,多分类评价SVM的优劣主要由参数惩罚因子C与高斯核函数宽度g的取值决定。将元启发式算法用于SVM参数的选择,是标准的做法,因此本文采用PSO对 SVM 参数进行寻优,对惩罚因子 C 和核函数参数 g 进行寻优组合,构建 PSO-SVM 多分类模型。同时引入作者介绍过的两种改进粒子群算法以期提升其分类性能。
同时,为量化分类性能以比较算法优劣,本文从混淆矩阵、准确率、精确率、召回率、F1-score这些方面进行衡量。
1、混淆矩阵
混淆矩阵是一种可视化工具,混淆矩阵的每一列代表的是预测类别,其总数是分类器预测为该类别的数据总数,每一行代表了数据的真实类别,其总数是该类别下的数据实例总数。主对角线的元素即为各类别的分类准确的个数,通过混淆矩阵能够直观地看出多分类模型的分类准确率。
2、准确率
最为简单判断 SVM 多分类效果的方法就是用以下公式进行准确率r 的计算
其中 ncorrect代表正确分类的样本个数, N代表测试集中的样本总数。
3、精确度
精度计算的是正类预测正确的样本数,占预测是正类的样本数的比例,公式如下
其中,TP表示的是正样本被预测为正样本的个数,FP表示的是负样本被预测为 正样本的个数。
4、召回率
召回率计算的是预测正类预测正确的样本数,占实际是正类的样本数的比例,公式如下:
其中, FN 表示的是正样本被判定为负样本的个数。
5、F1-score
F1 score是精度和召回率的调和平均值, F1 score越高说明模型越稳健,计算公式为
6、宏平均(macro-averaging)
宏平均(macro-averaging)是指所有类别的每一个统计指标值的算数平均值, 也就是宏精确率(macro precision),宏召回率( macro recall ),宏 F1 值 (macro F1 score),其计算公式如下:
04 代码目录
IPSO-SVM:
main_ipso.m的部分源码:
QPSO-SVM:
main_qpso.m部分源码:
PSO-SVM:
main_pso.m部分源码:
05 仿真
由于量子粒子群与自适应混沌粒子群的改进方向大相径庭,量子粒子群省去了粒子群大部分的控制参数,调参简单,而自适应混沌粒子群则将粒子群的控制参数进一步非线性化,因此对于不同的应用问题必然有其不同的优势,故不将这两个算法一起比较,而是分开比较。
这里展示自适应混沌粒子群优化支持向量机(IPSO-SVM)
可以看到改进后的粒子群能够对SVM进行更有效的优化,其各项指标均好于SVM和PSO-SVM,因此该改进能够在一定程度上提升其分类性能。
06 源码获取
PSO-SVM:
在关注作者微信公众号 KAU的云实验台
后台回复: PSOSVM 即可(大写字母)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
IPSO-SVM:
https://mbd.pub/o/bread/mbd-ZJuTmJZp
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
QPSO-SVM:
https://mbd.pub/o/bread/mbd-ZJuTmJZq
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
如果这篇文章对你有帮助或启发,可以点击右下角的赞 (ง •̀_•́)ง(不点也行),若有定制需求,可私信作者。