基于PSO算法的SVM参数优化方法研究
- 格式:pdf
- 大小:430.74 KB
- 文档页数:8
基于PSO与GA的SVM特征选择与参数优化算法作者:温海标来源:《软件导刊》2017年第05期摘要摘要:支持向量机(SVM)在处理大样本特征维数较多的数据集时,算法消耗时间长而且容易陷入局部最优解,选择不合适的SVM算法参数会影响SVM模型分类性能。
为了提高SVM性能,提出了基于粒子群算法(PSO)和遗传算法(GA)相结合的SVM特征选择与参数同步优化算法PGS。
在UCI标准数据集上的实验表明,PGS算法能有效地找出合适的特征子集及SVM算法参数,提高收敛速度并能在较小的特征子集获得较高的分类准确率。
关键词关键词:粒子群算法;遗传算法;支持向量机;特征选择;参数优化DOIDOI:10.11907/rjdk.171267中图分类号:TP312文献标识码:A文章编号文章编号:16727800(2017)0050021030引言分类问题主要是分类器模型的选择、分类样本的特征选择以及分类器参数优化等问题,是模式识别领域的基础问题。
Vapnik等[1]在1995年提出一种新型有监督的统计学习方法——支持向量机(Support Vector Machines,SVM),在文本分类、图像分类、人脸识别等诸多领域得到了成功应用,成为机器学习领域的研究热点。
研究表明,SVM分类器的参数例如核函数参数、惩罚参数C与SVM 的分类性能有很大关系[2],选择合适的参数能显著提高SVM的分类精度。
特征选择是根据某种评估标准从样本的原始特征中选择部分特征作为特征子集[3]。
大数据时代下,样本冗余特征不断出现,如何从大样本特征中去除冗余、选取有利特征是机器学习的重要研究课题。
样本特征选择合理,不但可以消除冗余,而且可以降低算法时间复杂度,加快算法运行速度,提高分类器的准确率。
粒子群优化算法(Particle Swarm Optimization,PSO)是根据鸟群扑食行为产生的仿生设计算法,属于一种简单有效的全局优化算法,已在许多领域得到应用,如用于参数选择[4]。
舰船装备维修费用预测的PSO-LSSVM方法研究
李哲龙
【期刊名称】《舰船电子工程》
【年(卷),期】2013(033)008
【摘要】提出了一种基于粒子群优化的最小二乘支持向量机(PSO-LSSVM)模型的舰船装备维修费用预测方法,该方法利用PSO算法的收敛速度快和全局收敛能力,优化LSSVM模型的惩罚因子和核函数参数,避免了人为选择参数的盲目性,提高了LSSVM模型的预测精度.以某舰船装备维修费用为例进行实例验证,计算结果表明,这种方法比其他方法有更好的预测精度.
【总页数】4页(P129-131,173)
【作者】李哲龙
【作者单位】中国人民解放军91315部队大连116041
【正文语种】中文
【中图分类】TP181
【相关文献】
1.基于灰色理论的舰船装备维修保障费用预测研究 [J], 李哲龙
2.基于改进PSO-LSSVM的军用工程机械研制费用预测模型 [J], 徐波
3.基于PSO-LSSVM的飞机维修保障费用预测模型 [J], 陈高波
4.舰船装备维修保障基础数据体系建设及维护方法研究 [J], 于风竺;张博;高骞
5.舰船装备维修性设计要求生成方法研究 [J], 魏国东;朱石坚;俞翔
因版权原因,仅展示原文概要,查看原文内容请购买。
%% 清空环境clcclearload wine;train = [wine(1:30,:);wine(60:95,:);wine(131:153,:)];train_label = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)];test = [wine(31:59,:);wine(96:130,:);wine(154:178,:)];test_label = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178)];[train,pstrain] = mapminmax(train');pstrain.ymin = 0;pstrain.ymax = 1;[train,pstrain] = mapminmax(train,pstrain);[test,pstest] = mapminmax(test');pstest.ymin = 0;pstest.ymax = 1;[test,pstest] = mapminmax(test,pstest);train = train';test = test';%% 参数初始化%粒子群算法中的两个参数c1 = 1.6; % c1 belongs to [0,2]c2 = 1.5; % c2 belongs to [0,2]maxgen=300; % 进化次数sizepop=30; % 种群规模popcmax=10^(2);popcmin=10^(-1);popgmax=10^(3);popgmin=10^(-2);k = 0.6; % k belongs to [0.1,1.0];Vcmax = k*popcmax;Vcmin = -Vcmax ;Vgmax = k*popgmax;Vgmin = -Vgmax ;% SVM参数初始化v = 3;%% 产生初始粒子和速度for i=1:sizepop% 随机产生种群pop(i,1) = (popcmax-popcmin)*rand+popcmin; % 初始种群pop(i,2) = (popgmax-popgmin)*rand+popgmin;V(i,1)=Vcmax*rands(1); % 初始化速度V(i,2)=Vgmax*rands(1);% 计算初始适应度cmd = ['-v ',num2str(v),' -c ',num2str( pop(i,1) ),' -g ',num2str( pop(i,2) )];fitness(i) = svm train(train_label, train, cmd);fitness(i) = -fitness(i);end% 找极值和极值点[global_fitness bestindex]=min(fitness); % 全局极值local_fitness=fitness; % 个体极值初始化global_x=pop(bestindex,:); % 全局极值点local_x=pop; % 个体极值点初始化tic%% 迭代寻优for i=1:maxgenfor j=1:sizepop%速度更新wV = 0.9; % wV best belongs to [0.8,1.2]V(j,:) = wV*V(j,:) + c1*rand*(local_x(j,:) - pop(j,:)) + c2*rand*(global_x - pop(j,:));if V(j,1) > VcmaxV(j,1) = Vcmax;endif V(j,1) < VcminV(j,1) = Vcmin;endif V(j,2) > VgmaxV(j,2) = Vgmax;endif V(j,2) < VgminV(j,2) = Vgmin;end%种群更新wP = 0.6;pop(j,:)=pop(j,:)+wP*V(j,:);if pop(j,1) > popcmaxpop(j,1) = popcmax;endif pop(j,1) < popcminpop(j,1) = popcmin;endif pop(j,2) > popgmaxpop(j,2) = popgmax;endif pop(j,2) < popgminpop(j,2) = popgmin;end% 自适应粒子变异if rand>0.5k=ceil(2*rand);if k == 1pop(j,k) = (20-1)*rand+1;endif k == 2pop(j,k) = (popgmax-popgmin)*rand+popgmin;endend%适应度值cmd = ['-v ',num2str(v),' -c ',num2str( pop(j,1) ),' -g ',num2str( pop(j,2) )];fitness(j) = svmtrain(train_label, train, cmd);fitness(j) = -fitness(j);end%个体最优更新if fitness(j) < local_fitness(j)local_x(j,:) = pop(j,:);local_fitness(j) = fitness(j);end%群体最优更新if fitness(j) < global_fitnessglobal_x = pop(j,:);global_fitness = fitness(j);endfit_gen(i)=global_fitness;endtoc%% 结果分析plot(-fit_gen,'LineWidth',5);title(['适应度曲线','(参数c1=',num2str(c1),',c2=',num2str(c2),',终止代数=',num2str(maxgen),')'],'FontSize',13);xlabel('进化代数');ylabel('适应度');bestc = global_x(1)bestg = global_x(2)bestCVaccuarcy = -fit_gen(maxgen)cmd = ['-c ',num2str( bestc ),' -g ',num2str( bestg )];model = svmtrain(train_label,train,cmd);[trainpre,trainacc] = svmpredict(train_label,train,model);trainacc[testpre,testacc] = svmpredict(test_label,test,model);testacc。
基于PSO算法的SVM参数优化方法研究基于粒子群优化算法(Particle Swarm Optimization, PSO)的支持向量机(Support Vector Machine, SVM)参数优化是近年来机器学习领域中的热门研究方向。
本文将探讨PSO算法在SVM参数优化中的应用,并介绍其原理和优势。
首先,我们需要介绍一下支持向量机(SVM)。
SVM是一种常用的监督学习算法,可用于分类和回归问题。
其核心思想是在特征空间中找到一个最优的超平面来使不同类别的样本尽可能地分开。
SVM参数优化包括核函数选择、惩罚参数(C)以及其他控制参数的选择。
然而,SVM参数优化是一个复杂的优化问题,传统方法通常需要进行大量的计算和试验。
为了降低计算复杂度,提高参数优化效率,近年来研究者开始引入PSO算法来求解SVM参数优化问题。
PSO算法是一种启发式优化算法,模拟了鸟群捕食的行为。
在PSO算法中,每个解(粒子)都有一个速度和位置,并与其他粒子共享信息。
通过不断更新速度和位置,粒子会向全局最优解靠近。
在使用PSO算法进行SVM参数优化时,需要将SVM参数作为优化目标函数的参数。
PSO算法通过不断更新粒子的速度和位置来优化SVM参数,使得SVM模型在训练集上的性能最优。
具体而言,PSO算法的每个粒子可以看作是一个SVM的参数组合,包括核函数选择、惩罚参数(C)等。
每个粒子通过评估其对应的SVM模型在训练集上的性能来计算适应度值。
然后,粒子根据自己的当前最优位置和全局最优位置来更新速度和位置,以期望找到更好的解。
PSO算法有以下几个优势适合用于SVM参数优化。
首先,PSO算法具有全局能力,能够在参数空间中找到最优解。
其次,PSO算法不依赖于问题的具体形式,适用于各种类型的SVM参数优化。
而且,PSO算法不需要计算梯度,因此能够避免陷入局部最优解。
目前,PSO算法在SVM参数优化中得到了广泛的应用,并取得了较好的结果。