在前面兩篇我們講到了線性可分svm的硬間隔最大化和軟間隔最大化的演算法,它們對線性可分的資料有很好的處理,但是對完全線性不可分的資料沒有辦法。本文我們就來**svm如何處理線性不可分的資料,重點講述核函式在svm中處理線性不可分資料的作用。
如何將多項式回歸轉化為線性回歸。
比如乙個只有兩個特徵的p次方多項式回歸的模型:
我們令x0=1,x1=x1,x2=x2,x3=x21,x4=x22,x5=x1x2 ,這樣我們就得到了下式:
可以發現,我們又重新回到了線性回歸,這是乙個五元線性回歸,可以用線性回歸的方法來完成演算法。對於每個二元樣本特徵(x1,x2),我們得到乙個五元樣本特徵(1,x1,x2,x21,x22,x1x2),通過這個改進的五元樣本特徵,我們重新把不是線性回歸的函式變回線性回歸。
也就是說,對於二維的不是線性的資料,我們將其對映到了五維以後,就變成了線性的資料。
這給了我們啟發,也就是說對於在低維線性不可分的資料,在對映到了高維以後,就變成線性可分的了。這個思想我們同樣可以運用到svm的線性不可分資料上。也就是說,對於svm線性不可分的低維特徵資料,我們可以將其對映到高維,就能線性可分,此時就可以運用前兩篇的線性可分svm的演算法思想了。
注意到上式低維特徵僅僅以內積xi∙xj的形式出現,如果我們定義乙個低維特徵空間到高維特徵空間的對映ϕ(比如上一節2維到5維的對映),將所有特徵對映到乙個更高的維度,讓資料線性可分,我們就可以繼續按前兩篇的方法來優化目標函式,求出分離超平面和分類決策函式了。也就是說現在的svm的優化目標函式變成:
可以看到,和線性可分svm的優化目標函式的區別僅僅是將內積xi∙xj替換為ϕ(xi)∙ϕ(xj)。
看起來似乎這樣我們就已經完美解決了線性不可分svm的問題了,但是事實是不是這樣呢?我們看看,假如是乙個2維特徵的資料,我們可以將其對映到5維來做特徵的內積,如果原始空間是三維,可以對映到到19維空間,似乎還可以處理。但是如果我們的低維特徵是100個維度,1000個維度呢?那麼我們要將其對映到超級高的維度來計算特徵的內積。這時候對映成的高維維度是**性增長的,這個計算量實在是太大了,而且如果遇到無窮維的情況,就根本無從計算了。
怎麼辦?似乎我們剛提出了一種好的解決線性不可分的辦法,接著就把自己否決了。
好吧,核函式該隆重出場了!
假設ϕ是乙個從低維的輸入空間χ(歐式空間的子集或者離散集合)到高維的希爾伯特空間的h對映。那麼如果存在函式k(x,z),對於任意x,z∈χ,都有:
那麼我們就稱k(x,z)為核函式。
從上面的式子乍一看還是不明白核函式怎麼幫我們解決線性不可分的問題的。仔細觀察上式可以發現,k(x,z)的計算是在低維特徵空間來計算的,它避免了在剛才我們提到了在高維維度空間計算內積的恐怖計算量。也就是說,我們可以好好享受在高維特徵空間線性可分的紅利,卻避免了高維特徵空間恐怖的內積計算量。
至此,我們總結下線性不可分時核函式的引入過程:
我們遇到線性不可分的樣例時,常用做法是把樣例特徵對映到高維空間中去(如上一節的多項式回歸)但是遇到線性不可分的樣例,一律對映到高維空間,那麼這個維度大小是會高到令人恐怖的。此時,核函式就體現出它的價值了,核函式的價值在於它雖然也是將特徵進行從低維到高維的轉換,但核函式好在它在低維上進行計算,而將實質上的分類效果(利用了內積)表現在了高維上,這樣避免了直接在高維空間中的複雜計算,真正解決了svm線性不可分的問題。
事實上,核函式的研究非常的早,要比svm出現早得多,當然,將它引入svm中是最近二十多年的事情。對於從低維到高維的對映,核函式不止乙個。那麼什麼樣的函式才可以當做核函式呢?這是乙個有些複雜的數學問題。這裡不多介紹。由於一般我們說的核函式都是正定核函式,這裡我們直說明正定核函式的充分必要條件。乙個函式要想成為正定核函式,必須滿足他裡面任何點的集合形成的gram矩陣是半正定的。也就是說,對於任意的xi∈χ,i=1,2,3...m, k(xi,xj)對應的gram矩陣k=[k(xi,xj)] 是半正定矩陣,則k(x,z)是正定核函式。
從上面的定理看,它要求任意的集合都滿足gram矩陣半正定,所以自己去找乙個核函式還是很難的,怎麼辦呢?還好牛人們已經幫我們找到了很多的核函式,而常用的核函式也僅僅只有那麼幾個。下面我們來看看常見的核函式, 選擇這幾個核函式介紹是因為scikit-learn中預設可選的就是下面幾個核函式。
3.1 線性核函式線性核函式(linear kernel)其實就是我們前兩篇的線性可分svm,表示式為:
也就是說,線性可分svm我們可以和線性不可分svm歸為一類,區別僅僅在於線性可分svm用的是線性核函式。
3.2 多項式核函式多項式核函式(polynomial kernel)是線性不可分svm常用的核函式之一,表示式為:
其中,γ,r,d都需要自己調參定義。
3.3 高斯核函式高斯核函式(gaussian kernel),在svm中也稱為徑向基核函式(radial basis function,rbf),它是非線性分類svm最主流的核函式。libsvm預設的核函式就是它。表示式為:
其中,γ大於0,需要自己調參定義。
3.4 sigmoid核函式sigmoid核函式(sigmoid kernel)也是線性不可分svm常用的核函式之一,表示式為:
其中,γ,r都需要自己調參定義。
引入了核函式後,我們的svm演算法才算是比較完整了。現在我們對分類svm的演算法過程做乙個總結。不再區別是否線性可分。
輸入是m個樣本(x1,y1),(x2,y2),...,(xm,ym),,其中x為n維特徵向量。y為二元輸出,值為1,或者-1.
輸出是分離超平面的引數w∗和b∗和分類決策函式。
演算法過程如下:
支援原創:支援向量機原理(三)線性不可分支援向量機與核函式
機器學習演算法 支援向量機
適用問題 二分類問題 模型型別 判別模型 模型特點 分離超平面 核技巧 學習策略 極小化正則化合頁損失 軟體額最大化 學習演算法 概率計算公式 em演算法 定義 支援向量機 support vector machine,svm 是一類按監督學習方式對資料進行二元分類的廣義線性分類器,其決策邊界是對學...
機器學習之支援向量機演算法 二
上面其實已經得出最終的表示式了,下面我們會根據一些具體的點來求解 的值。資料 3個點,其中正例 x1 3,3 x2 4,3 負例x3 1,1 如下圖所示 我們需要求解下式的極小值 注意約束條件 在這裡不要忘記了yi代表的是資料的類別,1代表正例,1代表負例 代入資料,通過化簡可以得到如下約束條件的表...
機器學習之支援向量機
描述 用於處理二分類問題,對於二維線性可分的問題,尋找決策邊界 分割線 使得支撐向量到決策邊界的距離盡可能的大.對於線性不可分的問題,則首先將樣本特徵對映到更高維度,再尋找乙個超平面,使得支撐向量到超平面的距離盡可能的小.通過核函式得展開達到這一目的.常用的核函式有線性核,多項式核,高斯核.引入正則...