原文博客傳送門:核函數與支持向量機入門。
理解支持向量機(Support Vector Machine, SVM)的角度很多。從分類問題入手,由最小化訓練錯誤導出限制條件下的凸優化問題的解,進而由線性可分的硬邊界泛化爲利用鬆弛變量放寬限制條件的軟邊界問題;從一般性的損失函數出發,由線性迴歸的0-1損失函數換成hinge損失函數,進而加上針對模型複雜度的L2懲罰項;亦或是從支持向量的角度,由核函數的一般應用到稀疏核的支持向量,進而分析SVM的核技巧。後者學習曲線相對來說比較大,卻有助於深入理解SVM。
(不知是從哪來的先入爲主,以前提到SVM,腦中總是出現一些非常confusing的概念,什麼最大邊際,Lagrange對偶性,最小最大化一系列公式,本來打印好好的論文,沒看到優化目標函數呢,就放之一旁等着畢業賣廢紙了。山人也覺得沒得治了。好吧,從此篇開始就自稱山人了:
(,但當山人看到下面關於一個SVM的段子時,對它的熱情又從新燃起了。)
關於這個同學舉牌子的典故我知道,我也是CMU的。這是在2009年在Pittsburgh舉行的G20峯會現場外面。很多反對G20的,支持G20的都來湊熱鬧。我們這位同學也來了,魚目混珠的高舉Support Vector Machine的牌子。很多老美就暈了,你說你支持加強控制二氧化碳排放我懂,你支持的的這個Vector Machine是個什麼東西啊?然後這個同學搞笑的目的就達到了。
I- 非線性變換
很多算法在處理輸入空間的樣本時,會把輸入空間的生數據樣本轉換成特徵空間的樣本表達。有時這是一種顯式的的特徵選擇,如去噪或提取更高層表達能力的特徵。有時這是爲了解決樣本在生輸入空間不可分,而進行的高維空間變換,從而把原本不可分的數據變換成在高緯可分的特徵點。而這個映射便是通過非線性變換來實現的。一個直觀的例子:
如上圖所示,原始的二維平面上是遍佈生數據的輸入點,其類別標籤用紅點和藍點來區分。由左圖中平面上點的分佈來看,在輸入的二維空間是線性不可分的。但我們可以通過一個尋找一個特徵映射函數
II- 核方法
核方法便是基於非線性特徵映射,定義如下:
核函數恰恰就像連接低維空間和高維空間的蟲洞,我們可以通過它,在低位空間直接計算高維空間。正如時空中的蟲洞由於星體旋轉和引力作用飄忽不定,在算法上使用核函數也是有限制條件的。如上述定義(1)所述,算法必須能表示成兩個變量的非線性映射的點積。
核函數也有其重要的屬性,如連續,對稱,一般情況下需要是半正定的Gram矩陣。而正定核能夠保證是凸優化問題,且有唯一解。
實際應用中可選擇的內核函數有很多,如線性內核,多項式內核,高斯內核,sigmoid內核等。就如內核函數本身一樣,如何根據實際的數據集特徵選擇合適的內核也是非常tricky的事。我們往往需要根據樣本數,特徵數,數據可視化後數據特徵與類別的關係來綜合選擇。
1.線性內核
使用線性內核,其實就等價於沒有內核,特徵映射的過程是簡單的線性變換。公式如下所示:
常量C便是非線性內核的可選參數。通常情況下,線性內核的適用場景很多,很多線性可分,甚至線性不可分的數據集,使用線性的效果往往比非線性的要好。尤其是在數據集很大,且特徵很多,或是特徵遠大於數據集時,線性內核便往往能夠取得很不錯的效果。且其相對於其他非線性內核,訓練時要快的多。
2.多項式內核
當維度
3.高斯(RBF)內核
4.Sigmoid 內核
關於各個內核的對比,quora上有一篇從parametric和nonparametric角度的問答,相當經典。
III- 從稀疏內核機到SVM
定義(1)中提到的基於非線性映射的內核方法是基於所有
如果我們想正確的劃分出紅點和藍點,我們只要保證分割的線在左邊的兩個綠點和右邊的一個綠點之間便可以,而無需去考慮所有其他的紅點和藍點,因爲他們對於我們能否正確分類,沒有任何決定性作用。那麼我們爲何苦費時費力的計算所有的數據點呢?答案當然是沒有必要。我們在覈方法上進行稀疏特徵選擇便是稀疏內核機。而最大分類邊際便是其特徵選擇方法。
當然哪些特徵點能夠產生最大分類邊際不是我們看到這幅圖就能憑空想出來的。據說最初做SVM分類時,選的也是定義(4)所用的高斯內核。他們沒有直接使用最小化誤分類率的決策平面,而是通過最小化學習到的密度模型的錯誤概率來確定最優超平面。結果發現,當
參考
[1] Kernel
Functions for ML Applications.
[2] A
Practise Guide to SVM Classification.
[3] Pattern
Recognition and Machine Learning.