從今天開始整理一些關(guān)于支持向量機(jī)-Support Vector Machine 的相關(guān)知識(shí),大約發(fā)6-8篇的博客,敬請(qǐng)關(guān)注~歡迎推薦~
????????好了,由于這個(gè)東西本身就不好懂,要深入學(xué)習(xí)需要花費(fèi)較多的時(shí)間和理。雖然現(xiàn)在網(wǎng)上有較多的參考文xian寫的很不錯(cuò),但是自己在學(xué)習(xí)的時(shí)候感覺所描述的數(shù)學(xué)公式還不夠詳盡,所以,借助于網(wǎng)上的一些資料和自己的理解,嘗試整理一份比較適合初學(xué)者理解的資料。在這之前參考了較多的資料,有“支持向量機(jī)導(dǎo)論”,“統(tǒng)計(jì)學(xué)習(xí)方法”以及網(wǎng)上的一些博客,就不一一的詳細(xì)列出了。
還是那句話,有任何問題,請(qǐng)隨時(shí)不吝指正~
1 ?什么是支持向量機(jī)(SVM)
????????便于理解,從簡(jiǎn)單的分類說(shuō)氣,分類作為數(shù)據(jù)挖掘領(lǐng)域中一項(xiàng)非常重要的任務(wù),它的目的是學(xué)會(huì)一個(gè)分類函數(shù)或分類模型(或者叫做分類器),該模型能把數(shù)據(jù)庫(kù)中的數(shù)據(jù)項(xiàng)映射到給定類別中的某一個(gè),從而可以用于預(yù)測(cè)未知類別。
所謂支持向量機(jī),顧名思義,分為兩個(gè)部分了解:一,什么是支持向量(簡(jiǎn)單來(lái)說(shuō),就是支持或支撐平面上把兩類類別劃分開來(lái)的超平面的向量點(diǎn),下文將具體解釋);二,這里的“機(jī)(machine,機(jī)器)”便是一個(gè)算法。在機(jī)器學(xué)習(xí)領(lǐng)域,常把一些算法看做是一個(gè)機(jī)器,如分類機(jī)(當(dāng)然,也叫做分類器),而支持向量機(jī)本身便是一種監(jiān)督式學(xué)習(xí)的方法(至于具體什么是監(jiān)督學(xué)習(xí)與非監(jiān)督學(xué)習(xí),請(qǐng)參見此系列Machine Learning & Data Mining?第一篇),它廣泛的應(yīng)用于統(tǒng)計(jì)分類以及回歸分析中。
而支持向量機(jī)是90 年代中期發(fā)展起來(lái)的基于統(tǒng)計(jì)學(xué)習(xí)理論的一種機(jī)器學(xué)習(xí)方法,通過(guò)尋求結(jié)構(gòu)化風(fēng)險(xiǎn)最小來(lái)提高學(xué)習(xí)機(jī)泛化能力,實(shí)現(xiàn)經(jīng)驗(yàn)風(fēng)險(xiǎn)和置信范圍的最小化,從而達(dá)到在統(tǒng)計(jì)樣本量較少的情況下,亦能獲得良好統(tǒng)計(jì)規(guī)律的目的。
2 關(guān)于線性分類
在講SVM 之前,必須先弄清楚一個(gè)概念:線性分類器(也可以叫做感知機(jī))。
2-1 分類標(biāo)準(zhǔn)
未接簡(jiǎn)單起見,考慮的是一個(gè)兩類的分類問題(多分類問題類似,只是延拓一下),數(shù)據(jù)點(diǎn)用x 來(lái)表示,這是一個(gè)n 維向量,wT 上標(biāo)中的“T”代表轉(zhuǎn)置,而類別用y 來(lái)表示,可以取1 或者–1 ,分別代表兩個(gè)不同的類。一個(gè)線性分類器就是要在n 維的數(shù)據(jù)空間中找到一個(gè)超平面,其方程可以表示為:
wTx + b = 0 (1.2.1)
上面給出了線性分類的定義描述,但或許讀者沒有想過(guò):為何用y 取1 或者–1 來(lái)表示兩個(gè)不同的類別呢?其實(shí),這個(gè)1 或–1 的分類標(biāo)準(zhǔn)起源于Logistic 回歸,為了完整和過(guò)渡的自然性,咱們就再來(lái)看看這個(gè)Logistic 回歸。
2-2?1 或?1 分類標(biāo)準(zhǔn)的起源:Logistic 回歸
使用的結(jié)果標(biāo)簽是y = ?1,y = 1,替換在logistic 回歸中使用的y = 0 和y = 1。同時(shí)將 替換成w 和b。以前的
Tx = θ0 + θ1x1 + θ2x2 + · · · + θnxn,
其中認(rèn)為x0 = 1。現(xiàn)在我們替換θ0 為b,后面替換
θ1x1 + θ2x2 + · · · + θnxn?
為w1x1 + w2x2 + · · · + wnxn(即wTx)。這樣,我們讓Tx = wTx + b,進(jìn)一步
h(x) = g(Tx) = g(wTx + b)。
也就是說(shuō)除了y 由y = 0 變?yōu)閥 = ?1,只是標(biāo)記不同外,與logistic 回歸的形式化表示沒區(qū)別。
????????再明確下假設(shè)函數(shù)
hw;b(x) = g(wTx + b)
上面提到過(guò)我們只需考慮Tx 的正負(fù)問題,而不用關(guān)心g(z),因此我們這里將g(z) 做一個(gè)簡(jiǎn)化,將其簡(jiǎn)單映射到y(tǒng) = ?1 和y = 1 上。映射關(guān)系如下:
g(z) = ? ? ?1, z ≥ 0
? ? ? ? ? ? ?1, z < 0
于此,想必已經(jīng)解釋明白了為何線性分類的標(biāo)準(zhǔn)一般用1 或者–1 來(lái)表示。
2-3 線性分類的一個(gè)實(shí)例
下面舉個(gè)簡(jiǎn)單的例子,一個(gè)二維平面(一個(gè)超平面,在二維空間中的例子就是一條直線),如下圖所示,平面上有兩種不同的點(diǎn),分別用兩種不同的顏色表示,一種為紅顏色的點(diǎn),另一種則為藍(lán)顏色的點(diǎn),紅顏色的線表示一個(gè)可行的超平面。
我們可以看出,這條紅顏色的線把紅顏色的點(diǎn)和藍(lán)顏色的點(diǎn)分開來(lái)了。而這紅顏色的線就是我們上面所說(shuō)的超平面,也就是說(shuō),這個(gè)所謂的超平面的的確確便把這兩種不同顏色的數(shù)據(jù)點(diǎn)分隔開來(lái),在超平面一邊的數(shù)據(jù)點(diǎn)所對(duì)應(yīng)的y 全是–1,而在另一邊全是1。接著,我們令分類函數(shù)
f(x) = wTx + b?
顯然,如果f(x) = 0,那么x 是位于超平面上的點(diǎn)。我們不妨要求對(duì)于所有滿足f(x) < 0 的點(diǎn),其對(duì)應(yīng)的y 等于–1,而f(x) > 0 則對(duì)應(yīng)y = 1 的數(shù)據(jù)點(diǎn)。
當(dāng)然,有些時(shí)候,或者說(shuō)大部分時(shí)候數(shù)據(jù)并不是線性可分的,這個(gè)時(shí)候滿足這樣條件的超平面就根本不存在,這里先從最簡(jiǎn)單的情形開始推導(dǎo),就假設(shè)數(shù)據(jù)都是線性可分的,亦即這樣的超平面是存在的。更進(jìn)一步,我們?cè)谶M(jìn)行分類的時(shí)候,將數(shù)據(jù)點(diǎn)x 代入f(x) 中,如果得到的結(jié)果小于0,則賦予其類別–1,如果大于0 則賦予類別1。如果f(x) = 0,則很難辦了,分到哪一類都不是。
(1)?咱們就要確定上述分類函數(shù)f(x) = w · x+b(w · x 表示w 與x 的內(nèi)積)中的兩個(gè)參數(shù)w 和b,通俗理解的話w 是法向量,b 是截距(再次說(shuō)明:定義特征到結(jié)果的輸出函數(shù)u = ?w · ?x? b,與我們最開始定義的f(x) = wTx + b 實(shí)質(zhì)是一樣的)。
(2)?那如何確定w 和b 呢?答案是尋找兩條邊界端或極端劃分直線中間的最大間隔(之所以要尋最大間隔是為了能更好的劃分不同類的點(diǎn),下文你將看到:為尋最大間隔,導(dǎo)出1/2∥w∥^2,繼而引入拉格朗日函數(shù)和對(duì)偶變量,化為對(duì)單一因數(shù)對(duì)偶變量 的求解,當(dāng)然,這是后話),從而確定最終的最大間隔分類超平面和分類函數(shù);
(3)?進(jìn)而把尋求分類函數(shù)f(x) = w · x + b 的問題轉(zhuǎn)化為對(duì)w、b 的最優(yōu)化問題,最終化為對(duì)偶因子的求解。
總結(jié)成一句話即是:從最大間隔出發(fā)(目的本就是為了確定法向量w),轉(zhuǎn)化為求對(duì)變量w 和b 的凸二次規(guī)劃問題。亦或如下所示。
3 函數(shù)間隔與幾何間隔
一般而言,一個(gè)點(diǎn)距離超平面的遠(yuǎn)近可以表示為分類預(yù)測(cè)的確信或準(zhǔn)確程度。在超平面w · x + b 確定的情況下,|w · x + b| 能夠相對(duì)的表示點(diǎn)x 到距離超平面的遠(yuǎn)近,而w · x + b 的符號(hào)與類標(biāo)記y 的符號(hào)是否一致表示分類是否正確,所以,可以用量y · w · x + b 的正負(fù)性來(lái)判定或表示分類的正確性和確信度。
于此,我們便引出了定義樣本到分類間隔距離的函數(shù)間隔的概念。
3-1 函數(shù)間隔
我們定義函數(shù)間隔為
^γ = y(wTx + b) = yf(x)
接著,我們定義超平面(w, b) 關(guān)于訓(xùn)練數(shù)據(jù)集T 的函數(shù)間隔為超平面(w, b) 關(guān)于T 中所有樣本點(diǎn)(xi, yi) 的函數(shù)間隔最小值,其中x 是特征,y 是結(jié)果標(biāo)簽,i 表示第i 個(gè)樣本,有
^γ = min ^γi, i = 1, 2, · · · , n?
然與此同時(shí),問題就出來(lái)了。上述定義的函數(shù)間隔雖然可以表示分類預(yù)測(cè)的正確性和確信度,但在選擇分類超平面時(shí),只有函數(shù)間隔還遠(yuǎn)遠(yuǎn)不夠,因?yàn)槿绻杀壤母淖僿 和b,如將他們改變?yōu)?w 和2b,雖然此時(shí)超平面沒有改變,但函數(shù)間隔的值yf(x) 卻變成了原來(lái)的4 倍。其實(shí),我們可以對(duì)法向量w 加些約束條件,使其表面上看起來(lái)規(guī)范化,如此,我們很快又將引出真正定義點(diǎn)到超平面的距離——幾何間隔的概念。
3-2 幾個(gè)間隔
在給出幾何間隔的定義之前,咱們首先來(lái)看下,如圖1.4所示,對(duì)于一個(gè)點(diǎn)x,令其垂直投影到超平面上,對(duì)應(yīng)的為x0,由于w 是垂直于超平面的一個(gè)向量,γ 為樣本x 到分類間隔的距離,我們有
x = x0 + γ*w /?∥w∥
又由于x0 是超平面上的點(diǎn),滿足f(x0) = 0,代入超平面的方程即可算出
γ =(wTx + b)/∥w∥=f(x)/∥w∥
不過(guò)這里的γ 是帶符號(hào)的,我們需要的只是它的絕對(duì)值,因此類似地,也乘上對(duì)應(yīng)的類別y 即可,因此實(shí)際上我們定義幾何間隔為
~γ = yγ =^γ/∥w∥
換而言之,函數(shù)間隔y(wTx + b) = yf(x) 實(shí)際上就是|f(x)|,只是人為定義的一個(gè)間隔度量;而幾何間隔|f(x)|/∥w∥才是直觀上的點(diǎn)到超平面距離。