APP下载

基于SVM的分类问题的研究

2013-04-29李欢欢

网友世界 2013年9期
关键词:支持向量机分类

李欢欢

【摘 要】支持向量机(SVM)具有适合处理小样本、非线性和高维数问题,利用核函数且泛化能力强等多方面的优点。文章简要介绍了SVM的基本原理,然后利用支持向量机(SVM)进行两类分类和多类分类实验,比较不同核函数的结果。实验证明支持向量机的分类效果比较好。

【关键词】支持向量机(SVM);分类;核函数;参数选择

支持向量机SVM(Support Vector Machines)是Vapnike等人在上世纪九十年代初建立的一种新型的学习机器,它是在以解决小样本机器学习问题为目标的统计学习理论(SLT)的基础上发展起来的。SVM建立在SLT的VC维理论和结构风险最小化原理的基础上,根据有限的样本信息在模型的复杂度和学习能力之间寻求最佳折中,获得最好的推广能力。与传统方法相比,SVM能够有效地避免过学习、欠学习、维数灾难以及陷入局部极小值等问题,所以它成为机器学习的一个新研究热点。

1.支持向量机

1.1 支持向量机的基本思想

首先通过非线性变换将输入空间变换到一个高维空间,然后在这个新空间中求取最优线性分类面,而这种非线性变换是通过定义适当的内积函数实现的。根据结构风险最小化准则,在使训练样本分类误差极小化的前提下,尽量提高分类器的泛化推广能力。从实施的角度看,训练支持向量机等价于解一个线性约束的二次规划问题,使得分隔特征空间中两类模式点的两个超平面之间距离最大,而且它能保证得到的解为全局最优解,使得基于支持向量机的分类器能够适应解决实际问题,从而具有较好的泛化和推广能力,当然这也就是所谓的“核函数”、“大间隔”思想。

1.2 支持向量机的分类

线性支持向量机是从线性可分情况下的最优分类超平面发展而来,由于最优超平面的解最终是完全由支持向量决定的,所以这种方法后来被称为支持向量机(support vector machines)。线性支持向量机分为线性可分和线性不可分两种情况。

在实际问题中,分类问题往往是非线性问题,因此我们需要而最优分类面也应该是非线性的。支持向量机是通过引入特征变换来将原空间的非线性问题转化为新空间的线性问题,同时利用核函数来解决非线性分类问题,将特征进行非线性映射,将低维空间映射到高维空间,在高维空间找到一种线性关系,构造出最优分类超平面。核函数不仅简化了运算,而且我们不需要知道非线性映射的具体形式。因此理论上只要选取一个满足条件的核函数,就可以构造非线性的支持向量机。

常用的核函数有:

线性核函数(linear function):

多项式核函数(polynomial function):

径向基核函数(radial basis function):

Sigmoid核函数(Sigmoid function):

1.3 支持向量机的分类方法

支SVM最初是为两类问题设计的,当处理多类问题时,就需要构造合适的多类分类器。构造SVM多类分类器的方法主要有两种:一是直接法,直接在目标函数上修改,将多个分类面的参数求解合并到一个最优化问题中,通过求解该最优化问题“一次性”的实现多类分类(但计算复杂度高,只适合小型问题);二是间接法,主要是通过组合多个二分类器来实现多分类器的构造。常见的方法有一对一法:个类别需要个支持向量机,当对某个未

知类别的样本进行分类时,最后得票最多的类别即为该未知样本的类别。一对多法,训练时依次把某个类别的样本归为一类,其他剩余的样本归为另一类,这样个类别的样本就构造出个SVM,分类时将未知样本分类为具有最大分类函数值的那一类。

2.实验过程

2.1 两类分类

随机产生服从正态分布的两个矩阵,利用SVM的两类分类思想进行分类。

例:x1=randn(2,50)+1;

x2=randn(2,50)+7;

所用命令[nsv,alpha,bias]=svc(X,Y,ker,C)

svcplot(X,Y,ker,alpha,bias,aspect,mag,xais,yais,input)

Variable Poly

global P1=1 P1=2 P1=2 P1=1

C C=100 C=1000 C=100 C=1000

Execution time 0.2s 0.2s 0.2s 0.2s

|w0|^2 6.453708 0.946768 1.125460 5.890548

Margin 0.787273 2.055456 1.885233 0.824047

Sum alpha 6.453708 0.946768 1.125460 5.890548

Support Vectors 3(3.0%) 2(2.0%) 6(6.0%) 3(3.0%)

Variable rbf

global P1=1 P1=2 P1=3 P1=4

C C=1000 C=1000 C=1000 C=1000

Execution time 0.2s 0.2s 0.2s 0.2s

|w0|^2 10.338001 5.847233 4.670641 5.046583

Margin 0.622031 0.827094 0.925426 0.890290

Sum alpha 10.338001 5.847233 4.670641 5.046583

Support Vectors 24(24.0%) 10(10.0%) 7(7.0%) 5(5.0%)

2.2 多类分类

实验环境是matlab2010b,利用svm进行分类。使用libsvm工具箱自带的测试数据heart-scale进行分类,先建立分类模型,然后利用得到的这个模型来进行分类预测。

选取前200个数据作为训练集合,后70个数据作为测试集合。

利用训练集合建立分类模型

model=svmtrain(trainlabel,traindata,-s0–t2–c 1.2–g 2.8)

利用建立的模型看其在训练集合上的分类效果

[ptrain,acctrain]=svmpredict(trainlabel,traindata,model);

预测测试集合标签

[ptest,acctest]=svmpredict(testlabel,testdata,model)

输出结果

label=1 -1;nr_class=2;total SV=197;nSV=89 108;

Accuracy=99.5%(199/200)(Classific-

ation)

Accuracy=68.5714%(48/70)(Classifi-

cation)

2.3 结果分析

由以上实验结果可知:

(1)由多项式核函数和径向基核函数对比可知,在高维情况下径向基核函数比多项式核函数的分类效果要好,分类间隔更大。

(2)当全局变量取值相同时,C的取值就很重要。C是对错分的点所加的惩罚,惩罚函数就是这个错分的点到其正确位置的距离。C越大,错分的点就会越少,但是过拟合的情况比较严重,C较小时,错分的点会很多,模型就会不准确。

(3)由多类分类结果可知,支持向量机的训练和预测样本时分类效果很明显,是一种良好的分类器。

3.结论

支持向量机的分类效果非常明显,选用不同的核函数会有不同的效果,一般我们根据具体情况选择合适的核函数,对于高维情况一般选择径向基核函数,参数的选择也是很重要的。支持向量机是是通过非线性变换将原空间的非线性问题转化为新空间的线性问题,同时利用核函数来解决非线性分类问题,具有很好的分类功能,实验也表明了支持向量机的分类效果比较好。

参考文献:

[1]V.N.Vapnik.TheNatureofStatisticalLearningTheory[M].NewYork:Springer-Verlag,1995.

[2]张学工.模式识别[M].北京:清华大学出版社(第三版),

2010.

[3]彭开毅.基于PCA和SVM的刑侦人脸识别系统研究[D].四川师范大学计算机科学学院,2012,3:43-45.

[4]廉飞宇,付麦霞,张元.给予支持向量机的车辆牌照识别的研究[J].计算机工程与设计,2006,27(21):4034-4035.

猜你喜欢

支持向量机分类
分类算一算
分类讨论求坐标
数据分析中的分类讨论
教你一招:数的分类
动态场景中的视觉目标识别方法分析
论提高装备故障预测准确度的方法途径
基于熵技术的公共事业费最优组合预测
基于支持向量机的金融数据分析研究