版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
历密毛了秤故欣孝
研究报告
题目支持向量机学习报告
学号___________________________
学生_________________________
支持向量机学习报告
支持向量机方法是建立在统计学习理论的VC维理论和结构风险最小原理基础上的,
根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度)和学习能力(即无错
误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力。支持向量机
SVM(SupportVectorMachine)是AT&TBell实验室的V.Vapnik提出的针对分类和回归问题
的统计学习理论。由于SVM方法具有许多优点和有前途的实验性能,该技术已成为机器学
习研究领域中的热点,并取得很理想的效果,如人脸识别、手写体数字识别和网页分类等。
1原理及方法
SVM根据问题的复杂性可以分为线性可分SVM和非线性可分SVM,其基本原理如下:
在进行文本分类的时候,每一个样本由一个向量(就是那些文本特征所组成的向量)和一个
标记(标示出这个样本属于哪个类别)组成。如下:Di=(xi,yi)xi就是文本向量(维数很高),
yi就是分类标记。在二元的线性分类中,这个表示分类的标记只有两个值,1和-1(用来
表示属于还是不属于这个类)。有了这种表示法,可以定义一个样本点到某个超平面的间隔:
yi(wxi+b)如果某个样本属于该类别的话,那么wxi+b>0(因为我们所选的g(x)=wx+b就通过
大于0还是小于0来判断分类),而yi也大于0;若不属于该类别的话,那么wxi+b<0,而
yi也小于0,这意味着yi(wxi+b)总是大于0的,而且它的值就等于|wxi+b|(也就是|g(xi)|)现
在把w和b进行一下归一化,用w/||w||和b/||w||分别代替原来的w和b,间隔就可以写成
4=3e叫
11*11
当用归一化的W和b代替原值之后的间隔叫做几何间隔,几何间隔所表示的正是点到
超平面的欧氏距离,简称几何间隔为“距离”。同样一个点的集合(就是一组样本)到某个超
平面的距离为此集合中离超平面最近的点的距离。下面这张图展示出了几何间隔的现实含
义:
H是分类面,而Hl和H2是平行于H,且过离H最近的两类样本的直线,H1与H,
H2与H之间的距离就是几何间隔。
间隔:8=y(wx+b)=|g(x)|
几何间隔:3而3
可以看出8=||W||^RM»几何间隔与||w||是成反比的,因此最大化几何间隔与最小化||w||
完全是一回事。而我们常用的方法并不是固定||w||的大小而寻求最大几何间隔,而是固定间
隔(例如固定为1),寻找最小固网|。
而凡是求一个函数的最小值(或最大值)的问题都可以称为寻优问题(也叫作一个规划
问题),又由于找最大值的问题总可以通过加一个负号变为找最小值的问题,因此我们下面
讨论的时候都针对找最小值的过程来进行。一个寻优问题最重要的部分是目标函数,顾名思
义,就是指寻优的目标。例如我们想寻找最小的||w||这件事,就可以用下面的式子表示:
但实际上对于这个目标,常常使用另一个完全等价的目标函数来代替,那就是:
当||w『到最小时,||w||也达到最小,反之亦然(前提当然是||w||描述的是向量的长度,
因而是非负的)。
2
min7Mb111^|I
s.t./)(皿,工⑴4-6)>1,i=1,...,m
将约束条件改写为:
^i(w)=—/(小工⑴4-6)4-1<0.
从KKT条件得知只有函数间隔是I(离超平面最近的点)的线性约束式前面的系数
%>°,也就是说这些约束式防(吟=°,对于其他的不在线上的点的(M<°),极值不会
在他们所在的范围内取得,因此前面的系数%=0.
实线是最大间隔超平面,假设x号的是正例,圆圈的是负例。在虚线上的点就是函数间
隔是1的点,那么他们前面的系数%>°,其他点都是叫二°。这三个点称作支持向量。构
造拉格朗日函数如下:
1m
£(w,6,a)=-||u?||2-52[严(苏]⑴+b)-1].
1=1
按照对偶问题的求解步骤来进行,
d*=maxmin£(w,a,/3)
ot,0:ai>Ow
首先求解£(出,儿。)的最小值,对于固定的,,£®,b,a)的最小值只与w和
b有关。对w和b分别求偏导数。
m
Vu£(w,b.a)=w-^2=0
i=l
Qm
沅£(-b,a)=£a涔⑴=0.
t=i
并得到
m
w=^2⑴工⑴.
t=l
将上式带回到拉格朗日函数中得到,此时得到的是该函数的最小值(目标函数是凸
函数)
代入后,化简过程如下:
m
2(or(x)
£(w,b,a)=^||w||—ax[y(wx4-h)—1]
i=l
mmm.
rT
=iww—〉:aty^wx«)-W。4《力+〉:%
i=li=li=l
mmmm
)T
=\wr):%丫(')%0—〉:aty^wx^—):ctty^b+):at
t=li=ii=it=i
mmmm
=wr):a»y(i)x")—T>ay(ox(o—W
w£aty^b+'at
i=lf=l1=1i=l
mmm
T,
—^-w、:%、(,)*(»)—、:aty^b+:ai
i=lt=li=l
mmm
-^WT2。少⑸“⑸一b»a,y")+£%
i=l4=1£=1
\Tmmtn
1a.y(,)4(,))2b):a'yG)+):a,
2/i=l4=1i=l
mmmm
=—eaty(O(x(0)r2%〃“)”)~b^,+>.
i=li=lf=li=l
mmm
=—):a»y")(""))「勺yS%5—b):a»y")+):
X=1J=1i=l*=1
mmm
yQ)yO)a©/(x(i))rxS—b):
t=l
最后得到
mATnm
£(w,b,a)=^27—5^2/)/4%(工⑴V工⑶—6^2。力⑴.
i=lij=li=l
由于最后一项是0,因此简化为
m1m
£(w,b.a)=^2I—5y⑴/4%(工⑴),](力.
i=lij=l
梏臼曷内和(n"V赤〒%(“"),/)》・
将向室内积',表不为''f
此时的拉格朗日函数只包含了变量°、然而我们求出了『才能得到W和b。
d*=maxmin£(w,a.0]
接着是极大化
a,0-.ai>Qw
m〔m
maxnIV(a)=6-5工^
t=lij=l
a,>0,£=1,,・,,m
m
⑴=0,
i=l
首先由于目标函数和线性约束都是凸函数,而且这里不存在等式约束h。存在w使得对
于所有的i,d色')<°。因此,一定存在w'a*使得k是原问题的解,&•是对偶问题的解。
w=^2
如果求出了%,根据,-1即可求出w(也是W,原问题的解)。然后
T(,)1
maxi.y(i)=_1w*x+migwiLiw*1⑴
b=--------------------------2------------------------•
即可求出bo即离超平面最近的正的函数间隔要等于离超平面最近的负的函数间隔。
由于前面求解中得到
IB
W=W,严
考虑+根据求解得到的%,代入前式得到
u^x+b=(>:62/。)工⑴)x+b
771
=):6y⑴(了⑴,力+b.
i=i
也就是说,以前新来的要分类的样本首先根据W和b做一次线性运算,然后看求的
结果是大于0还是小于0,来判断正例还是负例。现在有了,,我们不需要求出w,只需将新
来的样本和训练数据中的所有样本做内积和即可。我们从KKT条件中得到,只有支持向量
的%>°,其他情况%二°。因此,只需求新来的样本和支持向量的内积,然后运算即可。
希望将得到的特征映射后的特征应用于SVM分类,而不是最初的特征。这样,我们需
要将前面A公式中的内积从映射到将特征映射到
高维空间后,往往就可分了。将核函数形式化定义,如果原始特征内积是<x,z>,映射后
为那么定义核函数(Kernel)为
=0(x)p(z)
只需先计算O(x),然后计算OUAqG)即可,然而这种计算方式是非常低效的。比如最
初的特征是n维的,我们将其映射到n’维,然后再计算,这样需要0(屋)的时间。先看一个
例子,假设x和z都是n维的,
K(x,z)=(xTz)2
展开后,得
K(x,z)=GW==££
及工产巧
/\/=1//=!
■n
,=1J=1
可以只计算原始特征x和z内积的平方(时间复杂度是O(n)),就等价与计算映射后特
征的内积。也就是说我们不需要花O(M)时间了。
如果映射函数(n=3时),根据上面的公式,得到
工112
工同3
工211
。(工)=工212
工213
工311
工312
工313
也就是说核函数KU*)=只能在选择这样的♦作为映射函数时才能够等价于映
射后特征的内积。
再看一个核函数
K(1,z)=(xTz4-c)2
nn
=£(工十叼)(2乃)+y^(y/2cxj)(\/2czi)+c2.
ij=li=l
对应的映射函数(n=3时)是
工㈤
W2
工113
1212
工213
M*=工311
工312
13工3
\/2CTI
\/2cr2
\/2C^3
c
(n+d)
更一般地,核函数KG")=(1'2十°尸对应的映射后特征维度为'd二由于计算的
是内积,我们可以想到IR中的余弦相似度,如果x和z向量夹角越小,那么核函数值越大,
反之,越小。因此,核函数值是GOO和。G)的相似度。
再看另外一个核函数
值一z||)
K(工,z)=exp
2/J-
这时,如果x和z很相近(11«-1||*0);那么核函数值为1,如果X和z相差很大
(||xz||»0),那么核函数值约等于0。由于这个函数类似于高斯分布,因此称为高斯核
函数,也叫做径向基函数(RadialBasisFunction简称RBF)。它能够把原始特征映射到无穷
维。
既然高斯核函数能够比较x和z的相似度,并映射到0到1,下面的图说明在低维线性
不可分时,映射到高维后就可分了,使用高斯核函数。
注意,使用核函数后,怎么分类新来的样本呢?线性的时候我们使用SVM学习出w和
b,新来样本x的话,我们使用w'x+占来判断,如果值大于等于1,那么是正类,小于等
于是负类。在两者之间,认为无法确定。如果使用了核函数后,就变成了
wTx+b=($2工+b
m
=£/严(a•⑴㈤+b.
i=l
只需将(工⑴,*>替换成
给定m个训练样本卜⑴力二力…..7),每一个”)对应一个特征向量。那么,将任意两
个和X。)带入K中,计算得到吊户K(X(4W>)。i可以从1到m,j可以从1到m,这样
可以计算出m*m的核函数矩阵(KernelMatrix)。
如果假设K是有效地核函数,那么根据核函数定义
O=K(x®.W)=^(x»Mx^)=0(~)76叼=«2.即)=0
可见,矩阵K应该是个对称阵。首先使用符号单式0来表示映射函数@0)的第k维属性
值。那么对于任意向量z,得
ZTKZ=ZiKijZj
=££Zi0(工⑴)“(工。)区
=££zt£0k(工⑴)久(工⑶)Zj
ijk
=£££为0M]⑴)弥(工⑶)zj
kij
=.(z石"(叫)
>0.
最后一步和前面计算K(x,z)>时类似。如果K是个有效的核函数(即K(x,z)和
。0尸。(2)等价),那么,在训练集上得到的核函数矩阵K应该是半正定的(KN°)
这样得到一个核函数的必要条件:
K是有效的核函数==>核函数矩阵K是对称半正定的。
这个条件也是充分的,由Mercer定理来表达。
I----------------------------------------------------------------------------------
Mercer定理:
如果函数K是R=XR1sT工上的映射(也就是从两个n维向量映射到实数域)。那么如
果K是一个有效核函数(也称为Mercer核函数),那么当且仅当对于训练样例
卜"…五(7},其相应的核函数矩阵是对称半正定的。
Mercer定理表明为了证明K是有效的核函数,那么不用去寻找。,而只需要在训练集
上求出各个向,然后判断矩阵K是否是半正定(使用左上角主子式大于等于零等方法)即
可。
把一个本来线性不可分的文本分类问题,通过映射到高维空间而变成了线性可分的。就
像下图这样:
mar2in=2/
圆形和方形的点各有成千上万个。现在想象我们有另一个训练集,只比原先这个训练集
多了一篇文章,映射到高维空间以后(当然,也使用了相同的核函数),也就多了一个样本
点,但是这个样本的位置是这样的:
o
oo
□
o
就是图中黄色那个点,它是方形的,因而它是负类的一个样本,这单独的一个样本,使
得原本线性可分的问题变成了线性不可分的。这样类似的问题(仅有少数点线性不可分)叫
做“近似线性可分''的问题。
但这种对噪声的容错性是人的思维带来的。由于原本的优化问题的表达式中,确实要考
虑所有的样本点,在此基础上寻找正负类之间的最大几何间隔,而几何间隔本身代表的是距
离,是非负的,像上面这种有噪声的情况会使得整个问题无解。这种解法其实也叫做“硬间
隔”分类法,因为他硬性的要求所有样本点都满足和分类平面间的距离必须大于某个值0
仿照人的思路,允许一些点到分类平面的距离不满足原先的要求。由于不同的训练集各
点的间距尺度不太一样,因此用间隔(而不是几何间隔)来衡量有利于我们表达形式的简洁。
我们原先对样本点的要求是:
yi[(wXi^b]>\是样本数)
意思是说离分类面最近的样本点函数间隔也要比1大。如果要引入容错性,就给1这个
硬性的阈值加一个松弛变量,即允许
以0叫)+6]20=1,2,...,1)(1是样本数)
因为松弛变量是非负的,因此最终的结果是要求间隔可以比1小。但是当某些点出现这
种间隔比1小的情况时(这些点也叫离群点),意味着我们放弃了对这些点的精确分类,而
这对我们的分类器来说是种损失。但是放弃这些点也带来了好处,那就是使分类面不必向这
些点的方向移动,因而可以得到更大的几何间隔(在低维空间看来,分类边界也更平滑)。
显然我们必须权衡这种损失和好处。好处很明显,我们得到的分类间隔越大,好处就越多。
回顾我们原始的硬间隔分类对应的优化问题:
min
subjectto其[(叫)+叫-]>。修12…J)Q是样本数)
||w||2就是目标函数(当然系数可有可无),希望它越小越好,因而损失就必然是一个能
使之变大的量(能使它变小就不叫损失了,我们本来就希望目标函数值越小越好)。那如何
/
来衡量损失,£或
/=|
其中1都是样本的数目。把损失加入到目标函数里的时候,就需要一个惩罚因子(cost,
也就是libSVM的诸多参数中的C),原来的优化问题就变成了下面这样:
minA||w||24r£<
sabjedto乂[(叫))句*1一«[=1>2»…J)(1是样本数)(式1)
G。
一是并非所有的样本点都有一个松弛变量与其对应•实际上只有“离群点”才有,所有没
离群的点松弛变量都等于0(对负类来说,离群点就是在前面图中,跑到H2右侧的那些负
样本点,对正类来说,就是跑到H1左侧的那些正样本点)。
二是松弛变量的值实际上标示出了对应的点到底离群有多远,值越大,点就越远。
三是惩罚因子C决定了重视离群点带来的损失的程度,显然当所有离群点的松弛变量
的和一定时,定的C越大,对目标函数的损失也越大,此时就暗示着不愿意放弃这些离群
点,最极端的情况是把C定为无限大,这样只要稍有一个点离群,目标函数的值马上变成
无限大,问题变成无解,这就退化成了硬间隔问题。
四是惩罚因子C不是一个变量,整个优化问题在解的时候,C是一个必须事先指定的
值,指定这个值以后,解一下,得到一个分类器,然后用测试数据看看结果怎么样,如果不
够好,换一个C的值,再解一次优化问题,得到另一个分类器,再看看效果,如此就是一
个参数寻优的过程,但这和优化问题本身决不是一回事,优化问题在解的过程中,C一直是
定值。
从大的方面说优化问题解的过程,就是先试着确定一下W,也就是确定了前面图中的三
条直线,这时看看间隔有多大,又有多少点离群,把目标函数的值算一算,再换一组三条直
线(你可以看到,分类的直线位置如果移动了,有些原来离群的点会变得不再离群,而有的
本来不离群的点会变成离群点),再把目标函数的值算一算,如此往复(迭代),直到最终找
到目标函数最小时的W。
松弛变量也就是解决线性不可分问题的方法,核函数的引入也是为了解决线性不可分的
问题。其实两者还有些不同。以文本分类为例。在原始的低维空间中,样本相当的不可分,
无论怎么找分类平面,总会有大量的离群点,此时用核函数向高维空间映射一下,虽然结果
仍然是不可分的,但比原始空间里的要更加接近线性可分的状态(就是达到了近似线性可分
的状态),此时再用松弛变量处理那些少数“冥顽不化”的离群点,更加简单有效。
对比复杂的推导过程,SVM的思想确实简单。是在样本中去找分隔线,为了评判哪条
分界线更好,引入了几何间隔最大化的目标。之后解决目标函数的最优化问题。在解决最优
化的过程中,发现了w可以由特征向量内积来表示,进而发现了核函数,仅需要调整核函
数就可以将特征进行低维到高维的变换,在低维上进行计算,实质结果表现在高维上。由于
并不是所有的样本都可分,为了保证SVM的通用性,进行了软间隔的处理,导致的结果就
是将优化问题变得更加复杂,然而惊奇的是松弛变量没有出现在最后的目标函数中。最后的
优化求解问题,也被拉格朗日对偶和SMO算法化解,使SVM趋向于完美。
SVM有如下主要几个特点:
(1)非线性映射是SVM方法的理论基础,SVM利用内积核函数代替向高维空间的非线性映
射;
(2)对特征空间划分的最优超平面是SVM的目标,最大化分类边际的思想是SVM方法的核
心;
(3)支持向量是SVM的训练结果,在SVM分类决策中起决定作用的是支持向量。
(4)SVM是一种有坚实理论基础的新颖的小样本学习方法。它基本上不涉及概率测度及大数
定律等,因此不同于现有的统计方法。从本质上看,它避开了从归纳到演绎的传统过程,实现了
高效的从训练样本到预报样本的“转导推理”,大大简化了通常的分类和回归等问题。
(5)SVM的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,
而不是样本空间的维数,这在某种意义上避免了“维数灾难”。
(6)少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,
而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。这种“鲁棒”性主要体现在:
①增、删非支持向量样本对模型没有影响;
②支持向量样本集具有一定的鲁棒性;
③有些成功的应用中,SVM方法对核的选取不敏感
两个不足:
(1)SVM算法对大规模训练样本难以实施
由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为
样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间。
针对以上问题的主要改进有有J.Platt的SMO算法、T.Joachims的SVM、C.J.C.Burges
等的PCGC、张学工的CSVM以及OLMangasarian等的SOR算法
(2)用SVM解决多分类问题存在困难
经典的支持向量机算法只给出了二类分类的算法,而在数据挖掘的实际应用中,一般要解决
多类的分类问题。可以通过多个二类支持向量机的组合来解决。主要有一对多组合模式、一
对一组合模式和SVM决策树;再就是通过构造多个分类器的组合来解决。主要原理是克服
SVM固有的缺点,结合其他算法的优势,解决多类问题的分类精度。如:与粗集理论结合,
形成一种优势互补的多类问题的组合分类器。
2试验及分析
2.llibsvm自带例子
1用heart_scale测试
»loadheart_scale.mat
model=svmtrain(heart_scale_1abe1,heart_scale_inst,'-c1-g0.07,);
[predict_label,accuracy,dec_values]=svmpredict(heart_scale_label,heart_scale_inst,model);
Accuracy=86.6667%(234/270)(classification)
»model=svmtrain(heart_scale_label,heart一seale_inst,'-c1000-g0.07'):
[predict_label,accuracy,dec_values]=svmpredict(heart_scale_label,heart_scale_inst,model);
Accuracy=100%(270/270)(classification)
调整c,分类准确率会变化,但是,变为100%,我认为可能是测试数据和训练数据是
相同的数据集引起的。
2不同的参数t
I核函数类型:核函数设置类型(默认2)
0-线性:u'v
1-多项式:(r*u'v+coefO)Adegree
2-RBF函数:exp(-r|u-v|A2)
3-sigmoid:tanh(r*u'v+coefO)
不同的核函数对分类准确率的影响。
»loadheart_scale.mat
model=svmtrain(heart_scale_label,heart_scale_inst,'-c1-g0.07-tO');
[predict_label3accuracy,dec_values]=svmpredict(heart_scale_label,heart_scale_inst,model);
Accuracy=84.8148%(229/270)(classification)
»loadheart_scale.mat
model=svmtrain(heart_scale_label,heart_scale_inst,,-c1-g0.07-t1');
[predict_label,accuracy,dec_values]=svmpredict(heart_scale_label,heart_scale_inst,model):
Accuracy=85.5556%(231/270)(classification)
»model=svmtrain(heart_scale_label,heart_scale_inst,r-c1-g0.07-t2');
[predict_label,accuracy,dec_values]=svmpredict(heart_scale_label,heart_scale_inst,model);
Accuracy=86.6667%(234/270)(classification)
»model=svmtrain(heart_scale_label,heart_scale_inst,,-c1-g0.07-t3');
[predict_label3accuracy,dec_values]=svmpredict(heart_scale_label,heart_scale_inst,model);
Accuracy=85.1852%(230/270)(classification)
对于heart_scale不同的核函数对分类准确率的影响不大,rbf核函数的性能最好。
3调整c和g以找到最优的c和g使分类正确率最高
»bestcv=0;
forlog2c=-5:5,
forlog2g=-5:5,
cmd=U-v5-c7,num2str(2Alog2c),'-gnun2str(2*log2g)]:
cv=svmtrain(heart_scale_label,heart_scale_inst,cmd);
if(cv>=bestcv),
bestcv=cv;bestc=2*log2c;bestg=2*log2g;
end
end
end
fprintf(*%g%g%g(bestc=%g,g=%g,rate=%g)\n>,log2c,log2g,cv,bestc,bestg,bestcv);
cmd=-cnum2str(bestc),'-gnum2str(bestg)];
model=svmtrain(heart_scale_label,heart_scale_inst,cmd);
CrossValidationAccuracy=55.5556%
CrossValidationAccuracy=61.mix
CrossValidationAccuracy=63.7037X
CrossValidationAccuracy=55.5556%
CrossValidationAccuracy=55.5556%
CrossValidationAccuracy=55.5556%
CrossValidationAccuracy=55.5556%:
CrossValidationAccuracy=55.5556%
CrossValidationAccuracy=55.5556%
CrossValidationAccuracy=55.5556%
CrossValidationAccuracy=65.9259%
CrossValidationAccuracy=56.2963%
CrossValidationAccuracy=55.5556%
CrossValidationAccuracy=55.5556%
CrossValidationAccuracy=55.5556%
CrossValidationAccuracy=55.5556%
CrossValidationAccuracy=82.2222%
CrossValidationAccuracy=81.8519%
CrossValidationAccuracy=80.7407%
CrossValidationAccuracy=80%
CrossValidationAccuracy=79.6296%
CrossValidationAccuracy=75.1852%
CrossValidationAccuracy=63.3333%
CrossValidationAccuracy=57.037%
CrossValidationAccuracy=55.5556%
CrossValidationAccuracy=55.5556%
CrossValidationAccuracy=55.5556%
CrossValidationAccuracy=83.3333%
CrossValidationAccuracy=82.2222%
CrossValidationAccuracy=79.6296%
CrossValidationAccuracy=77.7778%
CrossValidationAccuracy=76.6667%
CrossValidationAccuracy=75.1852%
CrossValidationAccuracy=67.037%
CrossValidationAccuracy=61.1111%
CrossValidationAccuracy=57.4074%
CrossValidationAccuracy=55.5556%
CrossValidationAccuracy=77.7778%
CrossValidationAccuracy=76.2963%
CrossValidationAccuracy=75.9259%
CrossValidationAccuracy=75.5556%
CrossValidationAccuracy=74.8148%
CrossValidationAccuracy=74.8148%
CrossValidationAccuracy=71.1111%
CrossValidationAccuracy=67.037%
CrossValidationAccuracy=61.1111%
CrossValidationAccuracy=57.4074%
CrossValidationAccuracy=55.5556%
5555.5556(bestc=l,g=0.03125,rate=83.3333)
调整c和g得到c=l和g=0.03125,分类正确率最高。
2.2wine数据集实验
I测试
»loadwine_SVM
»train_wine=[wine(1:30,:):wine(60:95j:);wine(131:153,:)];
train_wine_labels=[wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)]:
test_wine=[wine(31:59,:);wine(96:130,:);wine(154:178,:)];
test_wine_labels=[wine_labels(31:59);wine_labels(96:130);wine_labels(154:178)];
»model=svmtrain(train_wine_labels,train_wine,'-c2-g0.02-t2'):
[predict_label,accuracy]=svmpredict(test_wine_labels,test_wine,model);
Accuracy=49.4382%(44/89)(classification)
wine数据标签有三类,各选取一半作为测试集,一半为训练集。准确率并不好。
2不同的参数t
t核函数类型:核函数设置类型(默认2)
0-线性:u,v
1-多项式:(r*u'v+coefO)八degree
2-RBF函数:exp(-r|u-v|A2)
3-sigmoid:tanh(r*u'v+coefl))
不同的核函数对分类准确率的影响。
»model=svmtrain(train_wine_labels,train_wine,'-c2-g0.02-tO');
[predict_label,accuracy]=svmpredict(test_wine_labels,test_vine,model):
Accuracy=86.5169%(77/89)(classification)
»model=svmtrain(train_wine_labels,train_wine,'-c2-g0.02-t2');
[predict_label,accuracy]=svmpredict(test_wine_labels,test.wine,model);
Accuracy=86.5169%(77/89)(classification)
»model=svmtrain(train_wine_labels,train_wine,'-c2-g0.02-t1');
[predict_label,accuracy]=svmpredict(test_wine_labels,test—Wine,model);
Accuracy=74,1573%(66/89)(classification)
»model=svmtrain(train_wine_labels,train_wine,'-c2-g0.02-t3'):
[predict_label,accuracy]=svmpredict(test_wine_labels,test_wine,model);
Accuracy=71.9101%(64/89)(classification)
多项式和sigmoid函数的训练结果最差。
3调整c和g以找到最优的c和g使分类正确率最高。
»bestcv=0;
forlog2c=-10:10,
forlog2g=-10:10j
cmd=f-v5-cnuni2str(2*log2c),'-gnum2str(2"log2g)];
cv=svmtrain(train_wine_labels,train.wine,cmd);
if(cv>=bestcv),
bestcv=cv;bestc=2*log2c;bestg=2*log2g;
end
end
end
yvuI、>上▲——、4WA、AAVyj-JAvaAAVAZV
CrossValidationAccuracy=40.4494%
CrossValidationAccuracy=40.4494%
CrossValidationAccuracy=40.4494%
CrossValidationAccuracy=40.4494%
CrossValidationAccuracy=40.4494%
CrossValidationAccuracy=40.4494%
CrossValidationAccuracy=40.4494%
(bestc=64,g=0.000976563,rate=94.382)
Accuracy=86.5169%(77/89)(classification)
调整c和g得到c=64和g=0.00097,分类正确率最高。
3图形化
3结论及改进
SVM有如下主要几个特点:(1)非线性映射是SVM方法的理论基础,SVM用内积核函
数代替向高维空间的非线性映射;(2)对特征空间划分的最优超平面是SVM的目标,最大化
分类间隔是SVM方法的核心;(3)支持向量是SVM的训练结果,在SVM分类决策中起决定
作用(4)SVM是一种有坚实理论基础的小样本学习方法。它基本上不涉及概率测度及大数
定律等,因此不同于现有的统计方法。从本质上看,它避开了从归纳到演绎的传统过程,实现了
高效的从训练样本到预报样本的“转导推理”,大大简化了通常的分类和回归等问题;(5)SVM
的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样
本空间的维数,这在某种意义上避免了“维数灾难”。(6)少数支持向量决定了最终结果,这不
但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且
具有较好的“鲁棒”性。
SVM不足:(1)训练好SVM分类器后,得到的支持向量被用来构成决策分类面。对于
大规模样本集问题,SVM训练得到的支持向量数目很大,则进行分类决策时的计算代价很大。
(2)用SVM解决多分类问题存在困难,经典的支持向量机算法只给出了二类分类的算法,
要解决多类的分类问题。可以通过多个二类支持向量机的组合来解决。
要针对不同的问题选择不同的核函数。标准的SVM对噪声是不具有鲁棒性的,如何选
择合适的目标函数以实现鲁棒性是至关重要的。要根据具体问题选择合适的核函数及惩罚因
子,多次实验选择最好的结果。一个好的分类器固然重要,但前期的数据预处理亦很重要。
当数据预处理的好的话,特征提取的好的话,分类器的影响不会占很大比重。SVM算法参数选
择可能是凭借经验、实验对比、大范围的搜寻或者利用软件包提供的交互检验功能进行寻优。
参考文献
IChih-JenLinDepartmentofComputerScienceNationalTaiwanUniversityAPracticalGuideto
SupportVectorClassification
2Chih-ChungChangandChih-JenLinDepartmentofComputerScienceNationalTaiwan
University,Taipe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年风景园林快题教学设计
- 高中信息技术 信息技术说课模板教案 沪教版选修3
- 2026年数学教师个人工作总结(2篇)
- 人事部实习报告范文(5篇)
- 21我不能失信(教学设计)语文三年级下册统编版
- 多彩统计图可视化图表集模板
- 2025-2026学年超格教学设计谁讲的好
- 2026年经济师资格考试经济基础知识综合检测题(含答案)
- 2026年理货员技能认定(高级)考模拟题(含答案)
- 2026年卫生计生培训模拟试题及答案详解
- 2026年秋人教版新八年级英语上册 八年级英语上册 Unit 2(单元测试卷)
- GB/T 6480-2026凿岩用钎头和连接钎杆
- 2025~2026学年北京市海淀区七年级上学期期中考试英语试卷
- 《教育管理》专业考试题及答案
- 制度修订情况汇报
- 公司显示屏管理制度
- GJB9001C-2017标准介绍及不符合项案例分析试题与答案
- 中华民族共同体概论课件专家版10第十讲 中外会通与中华民族巩固壮大(明朝时期)
- 小儿重症肺炎合并心衰呼衰护理查房
- 世界现代设计史 课件
- 诊疗科目、床位(牙椅)等执业登记项目以及卫生技术人员、业务科室变更情况和大型医用设备变更情况
评论
0/150
提交评论