关于svm
名詞解釋:
(1) SVM(Support Vector Machine)是從瓦普尼克(Vapnik)的統(tǒng)計(jì)學(xué)習(xí)理論發(fā)展而來的,主要針對小樣本數(shù)據(jù)進(jìn)行學(xué)習(xí)、分類和預(yù)測(有時(shí)也叫回歸)的一種方法,能解決神經(jīng)網(wǎng)絡(luò)不能解決的過學(xué)習(xí)問題。作者以為,類似的根據(jù)樣本進(jìn)行學(xué)習(xí)的方法還有基于案例的推理(Case-Based Reasoning),決策樹歸納算法C4.5等,以后將詳細(xì)闡述這兩種方法。
(2)過學(xué)習(xí)問題:訓(xùn)練誤差過小導(dǎo)致推廣能力下降,即真實(shí)風(fēng)險(xiǎn)的增加。
(3)推廣能力:generalization ability,也可以說是泛化能力,就是對未知樣本進(jìn)行預(yù)測時(shí)的精確度。
原文:A practical guide to support vector classification.
libsvm中的樣本預(yù)處理的原則有2個(gè):
1 非數(shù)值屬性(Categorical Feature)
???? 由于SVM要求被處理的數(shù)據(jù)都是實(shí)數(shù),因此對于屬性值為類別的屬性要進(jìn)行轉(zhuǎn)換。例如{red, green, blue},可以轉(zhuǎn)換成3個(gè)屬性
red??? (1, 0, 0)
green? (0, 1, 0)
blue?? (0, 0, 1)
來表示。經(jīng)驗(yàn)表明當(dāng)這樣的非數(shù)值屬性的取值不是太多(這個(gè)具體數(shù)字不明確)的時(shí)候,這種編碼比用一個(gè)數(shù)字來表示屬性的類別要穩(wěn)定的多,比如用1, 2, 3來分別表示red, green, blue就不太合適了。目前,這個(gè)過程沒有實(shí)現(xiàn)自動處理,需要使用者根據(jù)屬性取值的多少自己動手去修改。
2 縮放(scaling)
??? 進(jìn)行縮放的原因和使用神經(jīng)網(wǎng)絡(luò)時(shí)的考慮是一樣的,由于RBF網(wǎng)絡(luò)中采用樣本數(shù)據(jù)的歐式距離來計(jì)算。主要優(yōu)點(diǎn)就是避免數(shù)值范圍較大的屬性控制數(shù)值范圍較小的屬性。另一個(gè)優(yōu)點(diǎn)就是避免計(jì)算時(shí)的numerical difficulties. 因?yàn)楹酥低ǔR蕾囂卣飨蛄康膬?nèi)積(inner product),而較大的屬性值可能導(dǎo)致numerical問題。因此推薦把每個(gè)屬性縮放到[-1, 1]或者[0, 1]之間,而且前一個(gè)范圍要比后一個(gè)好,即對列向量進(jìn)行規(guī)范化,其詳細(xì)解釋和計(jì)算公式見http://www.faqs.org/faqs/ai-faq/neural-nets/part2/中的“Should I standardize the input variables (column vectors)?”。libsvm中沒有考慮屬性的類型(效益、成本、固定、偏離、區(qū)間、偏離區(qū)間 6 種不同的屬性類型的規(guī)范化計(jì)算公式是不一樣的,詳見:徐澤水,《不確定多屬性決策方法及應(yīng)用》,清華大學(xué)出版社,2004。)而采用了統(tǒng)一的線性縮放,作者以為此處可以改進(jìn)一下。
??? 需要注意的是,在進(jìn)行測試之前,要對測試數(shù)據(jù)進(jìn)行同樣的縮放操作。其實(shí)在libsvm中有程序(svmscale.exe)來進(jìn)行縮放操作,也可以不用手工縮放,只要用easy.py來對(經(jīng)過非數(shù)值的歸一化處理之后的)原始數(shù)據(jù)直接操作即可。
??? 上面這兩種方法基本上可以完成所有的樣本的預(yù)處理了。其實(shí)只有原則 1 是需要自己手工改動的,其他工作在libsvm中的tool文件夾下都由現(xiàn)成的python程序處理。
??
“推廣能力”是分類問題(classification,也稱為模式識別問題,在概率統(tǒng)計(jì)中則稱為判別分析問題)的一個(gè)指標(biāo)。所謂推廣就是在求得決策函數(shù)f(x)后,對一個(gè)新的輸入x,按照y=f(x)推斷出x相應(yīng)的輸出y。“推廣能力”就是描述推廣優(yōu)劣的一種度量。
那么,決策函數(shù)f(x)是怎么回事?這要從分類問題的(數(shù)學(xué)語言描述的)定義說起,參見(鄧乃揚(yáng)等人的《數(shù)據(jù)挖掘中的新方法——支持向量機(jī)》,科學(xué)出版社,2005)。通俗的講。就是一個(gè)表示x,y之間關(guān)系的函數(shù),而x,y就是樣本中的一對數(shù)據(jù)。其中x代表輸入,y代表類別。分類問題就是找到這個(gè)決策函數(shù)f(x),而對于新的輸入x,能夠判斷其所屬類別y則是個(gè)預(yù)測(回歸)問題。
?
名詞解釋1——支持向量機(jī):“機(jī)(machine,機(jī)器)”實(shí)際上是一個(gè)算法。在機(jī)器學(xué)習(xí)領(lǐng)域,常把一些算法看作是一個(gè)機(jī)器(又叫學(xué)習(xí)機(jī)器,或預(yù)測函數(shù),或?qū)W習(xí)函數(shù))。“支持向量”則是指訓(xùn)練集中的某些訓(xùn)練點(diǎn)的輸入 xi 。它是一種有監(jiān)督(有導(dǎo)師)學(xué)習(xí)方法,即已知訓(xùn)練點(diǎn)的類別,求訓(xùn)練點(diǎn)和類別之間的對應(yīng)關(guān)系,以便將訓(xùn)練集按照類別分開,或者是預(yù)測新的訓(xùn)練點(diǎn)所對應(yīng)的類別。
?
名詞解釋2——符號函數(shù):sgn(a) = 1, a >= 0;sgn(a) = -1, a < 0.
?
一般地,考慮 n 維空間上的分類問題,它包含 n 個(gè)指標(biāo)和 l 個(gè)樣本點(diǎn)。記這 l 個(gè)樣本點(diǎn)的集合為 T = {(x1,y1),...,(xl,yl)},其中 xi 是輸入指標(biāo)向量,或稱輸入,或稱模式,其分量稱為特征,或?qū)傩?#xff0c;或輸入指標(biāo);yi?是輸出指標(biāo)向量,或稱輸出,i = 1,...,l。 這 l 個(gè)樣本點(diǎn)組成的集合稱為訓(xùn)練集,所以我們也稱樣本點(diǎn)位訓(xùn)練點(diǎn)。
?
對于訓(xùn)練集來說,有線性可分、近似線性可分和線性不可分等三種情況,這就是分類問題的三種類型。其實(shí),無論是哪類問題,都有對應(yīng)的分類機(jī),這將在以下的內(nèi)容中進(jìn)行詳細(xì)闡述。那么,有人可能會問,什么叫線性可分?通俗地講,就是可以用一條或幾條直線把屬于不同類別的樣本點(diǎn)分開。實(shí)際上,求解分類問題,就是要求出這條或這幾條直線!那么,問題是:怎么求?這里先以二維兩類線性可分的分類問題為例,做個(gè)詳細(xì)的說明,然后再過渡到多類分類問題。
?
首先,回憶一下平面(二維)坐標(biāo)系中某條直線的方程。還記得直線的一般方程
Ax + By +?C = 0 (公式一)
吧,我們引入向量的概念,則該方程可以寫成{x,y}與{A,B}的內(nèi)積加上C等于0,即
{A,B}·{x,y} + C = 0
你還記得法向量和方向向量的概念嗎?其實(shí){A,B}就是法向量,而{B,-A}就是方向向量了。那么我們可以把直線的一般方程簡化成為
w·x + b = 0 (公式二)
的形式(因?yàn)檫@個(gè)式子是大家最常用的嘛)。注意:(公式二)中的 x 和(公式一)中的 x 不同,前者一個(gè)二維向量,后者是一個(gè)實(shí)數(shù)。
?
對于兩類問題,如果將某一直線兩側(cè)的樣本點(diǎn)分為正類和負(fù)類,則用符號函數(shù)的方式推斷點(diǎn) x 所對應(yīng)的類別 y 的決策函數(shù)如下:
y? = f(x) = sgn((w·x) + b) (公式三)
根據(jù)符號函數(shù)的定義,很明顯 y 的取值要么是 1 ,要么是 -1,也就是說樣本點(diǎn)的類別只有 1 和 -1 兩類。此時(shí)的分類問題是:對于任意給定的一個(gè)新的模式 x ,根據(jù)訓(xùn)練集推斷它所對應(yīng)的輸出 y 是 1 還是 -1。這就是線性可分的分類問題,也是一個(gè)模式識別問題,我們要做的工作就是要求出 w 和 b 。
?
直接求這兩個(gè)參數(shù)基本上不太可能,除了訓(xùn)練集我們又沒有別的信息可以利用,這可如何是好?前輩們給出了一個(gè)絕妙的方法——就是所求得的預(yù)測函數(shù)?f(x) 對原有樣本的分類錯(cuò)誤率最小。那么,問題又出來了,這個(gè)錯(cuò)誤率咋算?損失函數(shù)就是專門用來評價(jià)預(yù)測準(zhǔn)確程度的一種度量,而且模式識別問題使用的正是“0-1損失函數(shù)”。根據(jù)我的上一篇學(xué)習(xí)體會——《從機(jī)器學(xué)習(xí)到支持向量機(jī)》http://axywestwind.bokee.com/viewdiary.14525093.html中的闡述,使(公式三)中的 f(x) 的預(yù)測誤差最小的問題轉(zhuǎn)化成期望誤差最小、經(jīng)驗(yàn)風(fēng)險(xiǎn)最小,最后在統(tǒng)計(jì)學(xué)習(xí)理論中又轉(zhuǎn)化為結(jié)構(gòu)風(fēng)險(xiǎn)最小(Structural Risk Minimization, SRM)。而實(shí)現(xiàn)SRM的思路之一就是設(shè)計(jì)預(yù)測函數(shù)集的某種結(jié)構(gòu)使每個(gè)子集中都能取得最小的經(jīng)驗(yàn)風(fēng)險(xiǎn)(如使訓(xùn)練誤差為0),然后只需選擇適當(dāng)?shù)淖蛹怪眯欧秶钚?#xff0c;則這個(gè)子集中使經(jīng)驗(yàn)風(fēng)險(xiǎn)最小的函數(shù)就是最優(yōu)函數(shù)。SVM方法實(shí)際上就是這種思想的具體實(shí)現(xiàn),它是對SRM的近似。說了半天,終于和上次的內(nèi)容連接上了。但是,為了求解SRM這個(gè)最小化問題,還得將它轉(zhuǎn)化成數(shù)學(xué)形式。
?
SVM方法是從線性可分情況下的最優(yōu)分類面提出的,它是實(shí)現(xiàn)統(tǒng)計(jì)學(xué)習(xí)理論思想的方法。什么是最優(yōu)分類面呢?這要從最優(yōu)分類線說起。所謂最優(yōu)分類線就是要求分類線不但能將兩類無錯(cuò)誤地分開,而且要使兩類的分類間隔最大。前者是保證經(jīng)驗(yàn)風(fēng)險(xiǎn)最小(如使訓(xùn)練誤差為0),而使分類間隔最大實(shí)際上就是使推廣性的界中的置信范圍最小,從而使真實(shí)風(fēng)險(xiǎn)最小。推廣到高維空間,最優(yōu)分類線就成為最優(yōu)分類面。
?
那么如何構(gòu)造這個(gè)最優(yōu)分類面呢?方法有 2 個(gè):平分最近點(diǎn)法和最大間隔法。有趣的是,這兩個(gè)方法殊途同歸,它們求解得到的是同一個(gè)超平面(由三個(gè)定理聯(lián)合起來證明了這個(gè)結(jié)論)。由這三個(gè)定理可知,這兩個(gè)方法與一個(gè)最優(yōu)化問題求解方法等價(jià),這個(gè)方法就稱為“線性可分支持向量分類機(jī)”。其實(shí),這個(gè)分類機(jī)是將最大間隔法求解最優(yōu)分類面的最優(yōu)化問題轉(zhuǎn)化為其對偶問題,從而通過求解相對簡單的對偶問題來求解原分類問題的算法。隨后引入松弛變量和懲罰因子來解決非線性分類問題,并且允許一定的分類錯(cuò)誤(軟間隔),最終得到非線性軟間隔的標(biāo)準(zhǔn)的 C-支持向量機(jī)(C-SVC)。其中的巧妙之處就在于把一個(gè)復(fù)雜的最優(yōu)化問題的求解簡化為對原有樣本數(shù)據(jù)的內(nèi)積運(yùn)算。我們要做的就是選擇適當(dāng)?shù)暮撕瘮?shù)及其參數(shù)、懲罰因子就可以了。
?
概括地說,SVM就是首先通過用內(nèi)積函數(shù)定義的非線性變換將輸入空間變換到一個(gè)高維空間,然后再在這個(gè)空間中求(廣義)最優(yōu)分類面的分類方法。
?
svm處理流程:
???? svm主要做分類或者回歸的.以分類為例,一般情況下,數(shù)據(jù)不是線性可分的,因此如果要分類非線性數(shù)據(jù),就必須將數(shù)據(jù)映射為線性可分的空間,但是這會伴隨著數(shù)據(jù)維數(shù)的增加,甚至?xí)綗o窮的情況.那這樣就沒法計(jì)算了.幸虧svm的特點(diǎn)決定了并不需要考慮數(shù)據(jù)的維數(shù),它的相關(guān)計(jì)算只與兩個(gè)數(shù)據(jù)的內(nèi)積有關(guān),當(dāng)數(shù)據(jù)映射到高維空間后,需要計(jì)算數(shù)據(jù)的內(nèi)積,但是又不知道映射函數(shù)以及數(shù)據(jù)的具體維數(shù)時(shí).核函數(shù)很好的解決了這個(gè)矛盾,它使計(jì)算高維空間的內(nèi)積轉(zhuǎn)換為在原來空間數(shù)據(jù)點(diǎn)的核函數(shù)計(jì)算.可以這樣理解,核函數(shù)就是高維空間數(shù)據(jù)點(diǎn)的內(nèi)積,但它的計(jì)算是原來空間計(jì)算的.這個(gè)特點(diǎn)是svm成功的基礎(chǔ),也是svm的核心內(nèi)容,相當(dāng)?shù)耐昝?要真正理解這個(gè)概念,需要一些泛函的知識,但是開始的時(shí)候你無須知道所有細(xì)節(jié),什么mercer條件你都不要管.現(xiàn)在研究的核函數(shù)只有那么幾種,先用他們再說.
總結(jié)
- 上一篇: 2008年最受欢迎的资源TOP100
- 下一篇: 科研人员必须知道的SCI知识