人工智能大作業_第1頁
人工智能大作業_第2頁
人工智能大作業_第3頁
人工智能大作業_第4頁
人工智能大作業_第5頁
已閱讀5頁,還剩37頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

歷密毛了秤故欣孝

研究報告

題目支持向量機學習報告

學號___________________________

學生_________________________

支持向量機學習報告

支持向量機方法是建立在統計學習理論的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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論