对SVM的个人理解
之前以為SVM很強(qiáng)大很神秘,自己了解了之后發(fā)現(xiàn)原理并不難,不過(guò),“大師的功力在于將idea使用數(shù)學(xué)定義它,使用物理描述它”,這一點(diǎn)在看SVM的數(shù)學(xué)部分的時(shí)候已經(jīng)深刻的體會(huì)到了,最小二乘法、梯度下降法、拉格朗日乘子、對(duì)偶問(wèn)題等等被搞的焦頭爛額。在培樂(lè)園聽(tīng)了講課之后才算比較清晰的了解了整個(gè)數(shù)學(xué)推導(dǎo)的來(lái)龍去脈。
1. 為什么一定要研究線性分類?
首先說(shuō)一下為什么對(duì)數(shù)據(jù)集一定要說(shuō)線性可分或線性不可分,難道不可以非線性分開(kāi)嗎?想要非線性分開(kāi)當(dāng)然可以,實(shí)際上SVM只是把原來(lái)線性不可分的數(shù)據(jù)點(diǎn)映射到一個(gè)新的空間,轉(zhuǎn)換為在新空間中線性可分?jǐn)?shù)據(jù)來(lái)進(jìn)行分類的。如果返回到原來(lái)數(shù)據(jù)的空間中,其實(shí)還是非線性分開(kāi)的。但是,那為什么不直接在原數(shù)據(jù)空間中進(jìn)行非線性分開(kāi),而是非要轉(zhuǎn)到新的空間進(jìn)行線性分開(kāi)呢?首先,非線性分開(kāi)比線性分開(kāi)要復(fù)雜很多。線性分開(kāi)只要一條直線或一個(gè)平面之類的就可以了,可以說(shuō)是曲線中最簡(jiǎn)單的表現(xiàn)形式。而非線性分開(kāi)的情況就多了去了。僅就二維空間而言,曲線、折線、雙曲線、圓錐曲線、波浪線,以及毫無(wú)規(guī)律的各種其他曲線太多,沒(méi)有辦法進(jìn)行統(tǒng)一的處理。即便能夠針對(duì)某一個(gè)具體問(wèn)題處理得到了非線性分類結(jié)果,也無(wú)法很好的推廣到其他情形,這樣,每針對(duì)一個(gè)具體問(wèn)題就要數(shù)學(xué)家專門來(lái)建個(gè)曲線模型,太麻煩而且也沒(méi)有那么多時(shí)間精力。因此,采用線性分類一是因?yàn)樗?jiǎn)單,性質(zhì)很容易研究透徹;二是因?yàn)樗茝V能力強(qiáng),研究透了之后,其他所有問(wèn)題都迎刃而解,無(wú)需建立其他模型。所以,雖然SVM多了將原始數(shù)據(jù)映射到新空間這一步驟,看起來(lái)增加了工作量,而且如何去尋找新的映射空間看著也不是很容易,但是,總體來(lái)說(shuō),研究透了之后就會(huì)比其他方法省很多力氣。
2. SVM的思想是什么?
2.1 硬間隔支持向量機(jī)
SVM中最關(guān)鍵的思想之一就是引入和定義了“間隔”這個(gè)概念。這個(gè)概念本身很簡(jiǎn)單,以二維空間為例,就是點(diǎn)到分類直線之間的距離。假設(shè)直線為y=wx+b,那么只要使所有正分類點(diǎn)到該直線的距離與所有負(fù)分類點(diǎn)到該直線的距離的總和達(dá)到最大,這條直線就是最優(yōu)分類直線。這樣,原問(wèn)題就轉(zhuǎn)化為一個(gè)約束優(yōu)化問(wèn)題,可以直接求解。這叫做硬間隔最大化,得到的SVM模型稱作硬間隔支持向量機(jī)。
2.2 軟間隔支持向量機(jī)
但是新問(wèn)題出現(xiàn)了,在實(shí)際應(yīng)用中,我們得到的數(shù)據(jù)并不總是完美的線性可分的,其中可能會(huì)有個(gè)別噪聲點(diǎn),他們錯(cuò)誤的被分類到了其他類中。如果將這些特異的噪點(diǎn)去除后,可以很容易的線性可分。但是,我們對(duì)于數(shù)據(jù)集中哪些是噪聲點(diǎn)卻是不知道的,如果以之前的方法進(jìn)行求解,會(huì)無(wú)法進(jìn)行線性分開(kāi)。是不是就沒(méi)辦法了呢?假設(shè)在y=x+1直線上下分為兩類,若兩類中各有對(duì)方的幾個(gè)噪點(diǎn),在人的眼中,仍然是可以將兩類分開(kāi)的。這是因?yàn)樵谌四X中是可以容忍一定的誤差的,仍然使用y=x+1直線分類,可以在最小誤差的情況下進(jìn)行最優(yōu)的分類。同樣的道理,我們?cè)赟VM中引入誤差的概念,將其稱作“松弛變量”。通過(guò)加入松弛變量,在原距離函數(shù)中需要加入新的松弛變量帶來(lái)的誤差,這樣,最終的優(yōu)化目標(biāo)函數(shù)變成了兩個(gè)部分組成:距離函數(shù)和松弛變量誤差。這兩個(gè)部分的重要程度并不是相等的,而是需要依據(jù)具體問(wèn)題而定的,因此,我們加入權(quán)重參數(shù)C,將其與目標(biāo)函數(shù)中的松弛變量誤差相乘,這樣,就可以通過(guò)調(diào)整C來(lái)對(duì)二者的系數(shù)進(jìn)行調(diào)和。如果我們能夠容忍噪聲,那就把C調(diào)小,讓他的權(quán)重降下來(lái),從而變得不重要;反之,我們需要很嚴(yán)格的噪聲小的模型,則將C調(diào)大一點(diǎn),權(quán)重提升上去,變得更加重要。通過(guò)對(duì)參數(shù)C的調(diào)整,可以對(duì)模型進(jìn)行控制。這叫做軟間隔最大化,得到的SVM稱作軟間隔支持向量機(jī)。
2.3 非線性支持向量機(jī)
之前的硬間隔支持向量機(jī)和軟間隔支持向量機(jī)都是解決線性可分?jǐn)?shù)據(jù)集或近似線性可分?jǐn)?shù)據(jù)集的問(wèn)題的。但是如果噪點(diǎn)很多,甚至?xí)斐蓴?shù)據(jù)變成了線性不可分的,那該怎么辦?最常見(jiàn)的例子是在二維平面笛卡爾坐標(biāo)系下,以原點(diǎn)(0,0)為圓心,以1為半徑畫圓,則圓內(nèi)的點(diǎn)和圓外的點(diǎn)在二維空間中是肯定無(wú)法線性分開(kāi)的。但是,學(xué)過(guò)初中幾何就知道,對(duì)于圓圈內(nèi)(含圓圈)的點(diǎn):x^2+y^2≤1,圓圈外的則x^2+y^2>1。我們假設(shè)第三個(gè)維度:z=x^2+y^2,那么在第三維空間中,可以通過(guò)z是否大于1來(lái)判斷該點(diǎn)是否在圓內(nèi)還是圓外。這樣,在二維空間中線性不可分的數(shù)據(jù)在第三維空間很容易的線性可分了。這就是非線性支持向量機(jī)。
這是SVM非常重要的思想。對(duì)于在N維空間中線性不可分的數(shù)據(jù),在N+1維以上的空間會(huì)有更大到可能變成線性可分的(但并不是一定會(huì)在N+1維上線性可分。維度越高,線性可分的可能性越大,但并不完全確保)。因此,對(duì)于線性不可分的數(shù)據(jù),我們可以將它映射到線性可分的新空間中,之后就可以用剛才說(shuō)過(guò)的硬間隔支持向量機(jī)或軟間隔支持向量機(jī)來(lái)進(jìn)行求解了。這樣,我們將原問(wèn)題變成了如何對(duì)原始數(shù)據(jù)進(jìn)行映射,才能使其在新空間中線性可分。在上面的例子中,通過(guò)觀察可以使用圓的方程來(lái)進(jìn)行映射,但在實(shí)際數(shù)據(jù)中肯定沒(méi)有這么簡(jiǎn)單。如果都可以觀察出規(guī)律來(lái),那就不需要機(jī)器來(lái)做SVM了。。
實(shí)際中,對(duì)某個(gè)實(shí)際問(wèn)題函數(shù)來(lái)尋找一個(gè)合適的空間進(jìn)行映射是非常困難的,幸運(yùn)的是,在計(jì)算中發(fā)現(xiàn),我們需要的只是兩個(gè)向量在新的映射空間中的內(nèi)積結(jié)果,而映射函數(shù)到底是怎么樣的其實(shí)并不需要知道。這一點(diǎn)不太好理解,有人會(huì)問(wèn),既然不知道映射函數(shù),那怎么能知道映射后在新空間中的內(nèi)積結(jié)果呢?答案其實(shí)是可以的。這就需要引入了核函數(shù)的概念。核函數(shù)是這樣的一種函數(shù):仍然以二維空間為例,假設(shè)對(duì)于變量x和y,將其映射到新空間的映射函數(shù)為φ,則在新空間中,二者分別對(duì)應(yīng)φ(x)和φ(y),他們的內(nèi)積則為<φ(x),φ(y)>。我們令函數(shù)Kernel(x,y)=<φ(x),φ(y)>=k(x,y),可以看出,函數(shù)Kernel(x,y)是一個(gè)關(guān)于x和y的函數(shù)!而與φ無(wú)關(guān)!這是一個(gè)多么好的性質(zhì)!我們?cè)僖膊挥霉堞站唧w是什么映射關(guān)系了,只需要最后計(jì)算Kernel(x,y)就可以得到他們?cè)诟呔S空間中的內(nèi)積,這樣就可以直接帶入之前的支持向量機(jī)中計(jì)算!真是媽媽再也不用擔(dān)心我的學(xué)習(xí)了。。
得到這個(gè)令人歡欣鼓舞的函數(shù)之后,我們還需要冷靜一下,問(wèn)問(wèn):這個(gè)Kernel函數(shù)從哪來(lái)?他又是怎么得到的?真的可以解決所有映射到高維空間的問(wèn)題嗎?
這個(gè)問(wèn)題我試著回答一下,如果我理解對(duì)的話。核函數(shù)不是很好找到,一般是由數(shù)學(xué)家反向推導(dǎo)出來(lái)或拼湊出來(lái)的。現(xiàn)在知道的有多項(xiàng)式核函數(shù)、高斯核函數(shù)、字符串核函數(shù)等。其中,高斯核函數(shù)對(duì)應(yīng)的支持向量機(jī)是高斯徑向基函數(shù)(RBF),是最常用的核函數(shù)。
RBF核函數(shù)可以將維度擴(kuò)展到無(wú)窮維的空間,因此,理論上講可以滿足一切映射的需求。為什么會(huì)是無(wú)窮維呢?我以前都不太明白這一點(diǎn)。后來(lái)老師講到,RBF對(duì)應(yīng)的是泰勒級(jí)數(shù)展開(kāi),在泰勒級(jí)數(shù)中,一個(gè)函數(shù)可以分解為無(wú)窮多個(gè)項(xiàng)的加和,其中,每一個(gè)項(xiàng)可以看做是對(duì)應(yīng)的一個(gè)維度,這樣,原函數(shù)就可以看做是映射到了無(wú)窮維的空間中。這樣,在實(shí)際應(yīng)用中,RBF是相對(duì)最好的一個(gè)選擇。當(dāng)然,如果有研究的話,還可以選用其他核函數(shù),可能會(huì)在某些問(wèn)題上表現(xiàn)更好。但是,RBF是在對(duì)問(wèn)題不了解的情況下,對(duì)最廣泛?jiǎn)栴}效果都很不錯(cuò)的核函數(shù)。因此,使用范圍也最廣。
這樣,對(duì)于線性不可分的數(shù)據(jù),也可以通過(guò)RBF等核函數(shù)來(lái)映射到高維,甚至無(wú)窮維的空間中而變得線性可分,通過(guò)計(jì)算間隔和松弛變量等的最大化,可以對(duì)問(wèn)題進(jìn)行求解。當(dāng)然,在求解中,還有一些數(shù)學(xué)的技巧來(lái)簡(jiǎn)化運(yùn)算,例如,使用拉格朗日乘子來(lái)將原問(wèn)題變換為對(duì)偶問(wèn)題,可以簡(jiǎn)化計(jì)算。這些在實(shí)驗(yàn)中用不到,而且數(shù)學(xué)原理有點(diǎn)困難,就先不講了。
總結(jié)
- 上一篇: 电容屏:为什么带手套无法进行操作手机?
- 下一篇: 使用libsvm对MNIST数据集进行实