省略了很多公式和背景,不然要寫好久。感興趣的可以自己查閱相關(guān)背景書籍。
我們處理分類問題的常用方法一般是將特征向量映射到一個(gè)高維空間然后進(jìn)行切分,但這種方法的分類能力受限于映射模型本身的VC維,那是否存在一個(gè)映射模型,它可以將特征映射到無限維度的空間(希爾伯特空間)?
sklearn的SVC分類器中默認(rèn)的rbf核函數(shù)就是這樣一種方法。
Gauss 徑向基核函數(shù)(rbf)
有人有問,這不就是正態(tài)分布嗎,小學(xué)奧數(shù)題都會用呀。確實(shí),它的應(yīng)用范圍很廣,這也間接說明了它本身的維度很廣,那接下來我們會證明這個(gè)核函數(shù)有能力將特征向量逼近到無限維。
既然涉及到無限,毫無疑問,我們會使用到泰勒多項(xiàng)式。在這里,我們需要用到一個(gè)非常常用的泰勒展開:
為了好寫,我們令
,接下來,我們對高斯核函數(shù)進(jìn)行分解:
接下來,我們將
進(jìn)行泰勒展開:
當(dāng)n趨近于無窮時(shí),我們可以忽略余項(xiàng),便得到:
顯然,該式可以轉(zhuǎn)換為兩個(gè)向量的內(nèi)積形式,令
則
可以看到,核函數(shù)此時(shí)被分解成了特征函數(shù)
上兩個(gè)向量的內(nèi)積,而這個(gè)特征函數(shù)
具有無窮維度。
(限于篇幅, 本節(jié)省略了支持向量機(jī)公式推導(dǎo)、KKT條件說明拉格朗日對偶問題的證明以及核函數(shù)的推導(dǎo)證明,需要參考之前的章節(jié))
無窮維度下的維度災(zāi)難問題
可能有人會問,維度越高,樣本在特征空間中的分布越稀疏,那在無限維度中如何控制由于維度災(zāi)難導(dǎo)致的過擬合問題呢?
其實(shí)rbf核函數(shù)本身已經(jīng)通過正則因子控制了過擬合的問題,如高斯核的以及懲罰系數(shù)
均可以起到正則化的作用,這也是支持向量機(jī)的基本思想,既最大化約束(最小化結(jié)構(gòu)風(fēng)險(xiǎn))下的最大化自由。
支持向量機(jī)的表現(xiàn)
支持向量機(jī)本身就是一個(gè)追求極致的算法,在小規(guī)模數(shù)據(jù)下,它的表現(xiàn)是要優(yōu)于其他算法的,下圖為處理一些簡單數(shù)據(jù)集時(shí)SVM和多層神經(jīng)網(wǎng)絡(luò)的分類效果,可以發(fā)現(xiàn),此時(shí)SVM的分類效果以及對數(shù)據(jù)特征本質(zhì)的刻畫描述是要優(yōu)于神經(jīng)網(wǎng)絡(luò)的。非線性支持向量機(jī)分類實(shí)現(xiàn)
-
導(dǎo)入相關(guān)模塊
- 使用
make_moons生成一組線性不可分?jǐn)?shù)據(jù),可以看到生成的數(shù)據(jù)集合非常像月牙。
-
先定義一個(gè)簡單的高斯核函數(shù),這個(gè)高斯核只是為了看看先升維的效果
-
繪制二維空間點(diǎn)映射到三維空間后的效果圖
可以看到,長得和以前不一樣了,雖然感覺沒什么用,但也還行吧。
-
接下來sklearn 中 SVC 方法提供的 rbf 進(jìn)行實(shí)驗(yàn)。
可以看到,rbf處理非線性數(shù)據(jù)集的分類效果十分不錯(cuò)。
- 接下來看看懲罰系數(shù)
變化時(shí)決策邊界和支持向量的變化情況:
可以看到,懲罰系數(shù)越小,正則化效果越好,分類線越平滑。懲罰系數(shù)越大,分類越嚴(yán)格,但同時(shí)也犧牲了一定的泛化能力,增大了局限性和過擬合的風(fēng)險(xiǎn),尤其是懲罰系數(shù)增加到100000時(shí),出現(xiàn)了一些奇怪的線條,說明模型對懲罰過于敏感,此時(shí)已經(jīng)無法理性地處理離群數(shù)據(jù)點(diǎn),過于強(qiáng)調(diào)對個(gè)別離群數(shù)據(jù)的解釋,丟了西瓜撿芝麻。







