遗传算法_粒子群算法优化支持向量机分类预测-附代码
遗传算法/粒子群算法优化支持向量机分类预测-附代码
文章目录
- 遗传算法/粒子群算法优化支持向量机分类预测-附代码
- 1. 支持向量机简介与参数优化的原理
- 1.1 支持向量机SVM简介
- 1.2 优化参数的选取
- 1.3 交叉验证(CV)
- 2. 数据集介绍和采用的优化算法
- 2.1 遗传算法GA优化SVM
- 2.2 粒子群算法PSO优化SVM
- 3. 程序结果和算法的对比
- 3.1 SVM
- 3.2 遗传算法GA优化SVM
- 3.3 粒子群算法PSO优化SVM
- 3.4 算法结果的对比
- 4. 小结
- 5. MATLAB代码
1. 支持向量机简介与参数优化的原理
1.1 支持向量机SVM简介
SVM 通过建立输入特征向量和输出的标签向量间的映射模型,来实现分类。即在给定一个样本输入后,能够得到该映射关系下对应输出标签的估计类型。SVM建立模型,通过核函数将低维的输入x输出y转化为高维空间的内积。常见的核函数有线性核函数、RBF 核函数、多项式核函数。由于,相较于线性核函数和多项式核函数,RBF 核函数具有映射维度广、需确定参数少、运算相对简单等优点。所以RBF 核函数是应用最广的核函数。
1.2 优化参数的选取
优化SVM的参数通常是惩罚参数C与核函数参数gamma。惩罚参数 C 的选取可使模型复杂度和训练误差之间达到一种折中。核函数的参数 gamma主要反映训练样本数据的范围特性,直接影响支持向量机模型的学习能力。C的值一般取为1,对于gamma参数的取值,一般默认取1/k,k为总类别数。这两个参数的取值与支持向量机模型学习能力的关系如下图所示:
C取值 | gamma取值 | SVM模型的学习能力 |
---|---|---|
小 | 小 | 欠学习 |
大 | 大 | 过学习 |
为了提高支持向量机的学习能力,提升识别的准确率,通常会采用智能优化算法进行范围内的参数寻优。常用的优化SVM的智能算法比如遗传算法,粒子群算法,布谷鸟搜索算法,鲸鱼算法等。
1.3 交叉验证(CV)
交叉验证(cross validation)是机器学习中选择模型、评估模型好坏常用的一种方法,主要思想是 :在给定的训练样本中,利用其中大部分样本来建立模型,取剩下小部分的样本对建立的模型进行预测,得到这小部分预测结果的预测误差,最后选择预测误差小的模型作为最优的模型。
2. 数据集介绍和采用的优化算法
数据集源自意大利葡萄酒种类的数据,支持向量机为libsvm。采用SVM、遗传算法优化SVM、粒子群算法优化SVM优化c、g参数,进行分类识别的结果对比。
读取EXCEL数据的代码:
%% 读取数据
data=xlsread('数据.xlsx','Sheet1','A1:N178'); %使用xlsread函数读取EXCEL中对应范围的数据即可 %输入输出数据
input=data(:,1:end-1); %data的第一列-倒数第二列为特征指标
output_labels=data(:,end); %data的最后面一列为标签类型
2.1 遗传算法GA优化SVM
选取惩罚参数C与核参数g作为优化变量,用5折交叉验证,得到不同模型的最佳准确率作为适应度函数。
GA参数设置:
ga_option = struct('maxgen',50,'sizepop',20,'ggap',0.9,...'cbound',[0,100],'gbound',[0,1000],'v',5);
% maxgen:最大的进化代数,默认为50,一般取值范围为[100,500]
% sizepop:种群最大数量,默认为20,一般取值范围为[20,100]
% cbound = [cmin,cmax],参数c的变化范围,默认为(0,100]
% gbound = [gmin,gmax],参数g的变化范围,默认为[0,1000]
% v:SVM Cross Validation交叉验证参数,默认为5
GA优化后的c、g参数给到SVM:
%% 利用最佳的参数进行SVM网络训练
cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg)];
model = libsvmtrain(train_output_labels,train_input,cmd);
建立遗传算法GA优化的SVM模型,流程图如下:
2.2 粒子群算法PSO优化SVM
选取惩罚参数C与核参数g作为优化变量,用5折交叉验证,得到不同模型的最佳准确率作为适应度函数。
PSO参数设置:
pso_option = struct('c1',1.5,'c2',1.7,'maxgen',100,'sizepop',20, ...'k',0.6,'wV',1,'wP',1,'v',5, ...'popcmax',10^2,'popcmin',10^(-1),'popgmax',10^3,'popgmin',10^(-2));
% c1:初始为1.5,pso参数局部搜索能力
% c2:初始为1.7,pso参数全局搜索能力
% maxgen:初始为200,最大进化数量
% sizepop:初始为20,种群最大数量
% k:初始为0.6(k belongs to [0.1,1.0]),速率和x的关系(V = kX)
% wV:初始为1(wV best belongs to [0.8,1.2]),速率更新公式中速度前面的弹性系数
% wP:初始为1,种群更新公式中速度前面的弹性系数
% v:初始为5,SVM Cross Validation参数
% popcmax:初始为100,SVM 参数c的变化的最大值.
% popcmin:初始为0.1,SVM 参数c的变化的最小值.
% popgmax:初始为1000,SVM 参数g的变化的最大值.
% popgmin:初始为0.01,SVM 参数g的变化的最小值.
PSO优化后的c、g参数给到SVM:
%% 利用最佳的参数进行SVM网络训练
cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg)];
model = libsvmtrain(train_output_labels,train_input,cmd);
建立粒子群算法PSO优化的SVM模型,流程图如下:
3. 程序结果和算法的对比
3.1 SVM
3.2 遗传算法GA优化SVM
- 遗传算法的收敛曲线和优化后的c、g参数值,交叉验证CV准确率
- 遗传算法优化后的实际类型与识别类型对比图像和准确率
3.3 粒子群算法PSO优化SVM
粒子群算法的收敛曲线和优化后的c、g参数值,交叉验证CV准确率
粒子群算法优化后的实际类型与识别类型对比图像和准确率
3.4 算法结果的对比
SVM | GA-SVM | PSO-SVM | |
---|---|---|---|
准确率 | 97.7528% | 98.8764% | 98.8764% |
收敛代数 | - | 16 | 10 |
对比算法的结果,SVM准确率为97.7528%,遗传算法GA与粒子群算法PSO都起到了一定的优化效果,优化后准确率都是98.8764%。优化时采用的交叉验证方法,降低了结果的偶然性。相较于遗传算法GA,粒子群算法PSO在第10代达到了收敛,收敛后的CV准确率为98.8764%,说明PSO收敛速度更快,在SVM的优化过程中寻优能力(体现为优化速度)也更强。
4. 小结
- 优化的本质是选取准确率最高的时候对应的c、g参数,抓住这点,可以用任意智能优化算法来寻优做对比。
- SVM也可以用来做回归预测,其优化原理与分类一致,都归于使用算法求解两个决策变量+一个目标函数的问题。
利用遗传算法等智能优化算法,优化支持向量机回归预测的设计原理与算法步骤,请参考我的另一篇博客:基于麻雀搜索算法优化的支持向量机回归预测
5. MATLAB代码
以下介绍了常用的支持向量机分类和预测模型及编写相应的代码,相关模型原理和代码见博客主页。
支持向量机回归预测模型 |
---|
支持向量机回归预测MATLAB程序 |
粒子群算法优化支持向量机回归预测的MATLAB代码 |
遗传算法优化支持向量机回归预测的MATLAB代码 |
麻雀搜素算法SSA优化支持向量机回归预测的MATLAB代码 |
支持向量机分类模型 |
---|
最小二乘支持向量机分类模型 |
最小二乘支持向量机分类MATLAB代码 |
遗传算法GA优化最小二乘支持向量机分类MATLAB代码 |
灰狼优化算法GWO优化最小二乘支持向量机分类MATLAB代码 |
支持向量机分类及优化算法模型 |
支持向量机分类算法MATLAB代码 |
粒子群优化算法PSO优化支持向量机分类MATLAB代码 |
遗传算法GA优化支持向量机分类MATLAB代码 |
鲸鱼优化算法WOA优化支持向量机分类MATLAB代码 |
麻雀搜索算法SSA优化支持向量机分类MATLAB代码 |
蝗虫优化算法GOA优化支持向量机分类MATLAB代码 |
灰狼优化算法GWO优化支持向量机分类MATLAB代码 |
代码见博客主页
遗传算法_粒子群算法优化支持向量机分类预测-附代码相关推荐
- 基于粒子群算法改进的DELM预测 -附代码
粒子群算法改进的深度极限学习机DELM的回归预测 文章目录 粒子群算法改进的深度极限学习机DELM的回归预测 1.ELM原理 2.深度极限学习机(DELM)原理 3.粒子群算法 4.粒子群算法改进DE ...
- 【Matlab电力负荷预测】粒子群算法优化支持向量机预测电力负荷【含源码 1225期】
一.代码运行视频(哔哩哔哩) [Matlab电力负荷预测]粒子群算法优化支持向量机预测电力负荷[含源码 1225期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [ ...
- 【ELM数据预测】基于matlab粒子群算法优化ELM数据预测(含前后对比)【含Matlab源码 449期】
一.粒子群算法优化极限学习机ELM简介 PSO-ELM优化算法预测模型 ELM模型在训练之前可以随机产生ω和b, 只需要确定隐含层神经元个数及隐含层神经元激活函数, 即可实现ELM预测模型的构建.在E ...
- 【SVM分类】基于粒子群算法优化支持向量机实现葡萄酒数据分类附matlab代码
1 简介 在机器学习领域,要处理的数据的规模越来越大,而学习算法在数据的特征过多的时候,往往会产生性能上的下降.作为解决这个问题的有效手段,特征选择一直以来都得到了广泛的关注.粒子群优化算法作为一种优 ...
- 【优化预测】粒子群算法优化BP神经网络预测温度matlab源码
一.粒子群算法及RBF简介 1 粒子群算法简介 1.1 引言 自然界中的鸟群和鱼群的群体行为一直是科学家的研究兴趣所在.生物学家Craig Reynolds在1987年提出了一个非常有影响的鸟群聚集模 ...
- 【预测模型】基于粒子群算法优化BP神经网络预测风电功率matlab源码
1 模型 针对于BP神经网络预测模型,收敛速度慢,精度较低,容易陷入局部极小值等缺点,提出了一种粒子群优化BP神经网络预测模型的算法.在该算法中,粒子群优化BP神经网络预测模型的初始权值和阈值,然后训 ...
- 【预测模型-ELM预测】基于蚁群算法优化极限学习机预测matlab代码
1 简介 针对变压器故障的特征,结合变压器油中气体分析法以及三比值法.提出了基于蚁群算法改进极限学习机的故障诊断方法.由于输入层与隐含层的权值和阈值是随机产生.传统的极限学习机可能会使隐含层节点过多, ...
- 【粒子群算法优化支持向量机——回归预测】
先介绍一下优化分类支持向量机 导入需要的库: import numpy as np import random from sklearn.model_selection import train_te ...
- 【SVM时序预测】基于粒子群算法优化支持向量机PSO-SVM实现期贷时序数据预测附matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
最新文章
- OpenCV(项目)车牌识别2 -- 车牌字符分割(直方图)
- Python RE库的贪婪匹配和最小匹配
- [Swust OJ 404]--最小代价树(动态规划)
- 深入浅出 Java 微服务视频
- 【PHP】 数组分页函数、根据字段排序并分页
- VTK:PolyData之ExtractSelectionOriginalId
- js数组中的引用类型
- 哦豁?这个程序员…… 有、东西!
- php - MySQL创建新用户并授权
- redhat 6.4 mysql_redhat6.4 安装 MySQL 5.6.27
- 计算机硬盘不识别u盘启动,PE识别不了硬盘是怎么回事?
- 计算机 64虚拟内存设置方法,win7 64位系统虚拟内存设置及虚拟内存太小的影响...
- 如何使用Topcoder
- [BBC纪录片][2009][自然界最惊异的事件][Nature's.Most.Amazing.Events][中英字幕][蓝光720P高清][全6集][17.77GB]
- [Android 4.4.4] Oppo Find7 MIUI 4.8.8 by crazyi
- 一个简单的UDP回显服务器
- 一文了解二进制和CPU工作原理
- 如何给电脑安装双系统
- 如何正确地给固态硬盘(SSD)分区
- 只是一个文件节点类为了项目的数据处理
热门文章
- Learning Lightroom CC 学习Lightroom CC Lynda课程中文字幕
- 卓有成效的程序员---自动化
- safari苹果浏览器对日期格式不支持的解决办法
- wordpress后台管理(七)说说管理:发表说说、所有说说
- 知帆科技创始人叶茂: 链上数据分析将大有作为
- 青岛啤酒12星座铝瓶星耀公开 啤酒也有自己的朋友圈
- 基于帝企鹅算法优化BP神经网络实现数据预测matlab代码
- 异常中的异常——借助系统异常处理特例实现匪夷所思的漏洞利用
- 路漫漫其修远兮···VB 来15个数尝尝咸淡
- 360公司2016校园招聘笔试题大题一