機器學習技法 Lecture3: Kernel Support Vector Machine
Kernel Trick
回顧一下SVM的對偶形式。使用對偶形式的目的是為了拜託對映到新的空間之後假設空間VC維
對於演算法的影響。但是進行了對偶之後發現,解對偶的SVM的時候也有跟
有關的計算。
如果使用的是簡單的二次項對映,那麼計算對映之後的向量內積可以使用一種簡化的形式:
通過簡單的變換我們發現能夠將這個二次對映之後的內積寫為一種更簡單的形式,而且是需要消耗
級別的計算量。
如果把這種對映變換與內積的結合形式寫到一起,我們就得到了一個核函式。對應每一個不同的對映變換都有一個不同的核函式。如果我們使用上面所說的二次對映的形式,那麼就能夠把當初解對偶SVM問題中用到的內積都是用核函式表示:
特別地,因為演算法的解裡面將係數
帶入之後也能夠得到一個內積形式,因此我們甚至可以不用求解係數
而是直接在結果裡帶入核函式即可。引入了核方法,最終就消除了
的影響。
於是引入了核方法的SVM演算法如下:
最終得到的解法裡,計算複雜度只與樣本量
有關,而且結果裡也只需要用到支援向量。
Polynomial Kernel
我們再來仔細看之前提到的二次對映以及對應的核函式。加入我們在每個一次項和二次項之前加上不同的係數,那麼就能得到不同的核函式。而我們最常用的一種二次多項式的核函式如下:
因為這個形式的核函式容易計算,而且兼顧了係數的靈活性。
在實際的應用中,如果核函式裡對應的係數發生了變化,得到的結果也會有不同程度的改變。因為係數代表的是不同對映的放縮,因此可能會導致最終得到的空間裡支援向量的不同和邊界的不同。
而且如果我們將固定的指數2改為其它的數字,常數項改為一個任意大於等於0的常數,那麼就得到了一個更一般形式的多項式的核函式。
這樣加入了多項式核函式的SVM就叫polynomial SVM。
其中一般化常數項的目的是為了把線性對映統一進來。因為當常數項為0而指數選擇1的時候,那麼這個結果與原來的線性SVM是一樣的。一般來說我們還是需要優先選擇線性方法。
Gaussian Kernel
多項式核函式對應的變化可能有著不同的維度,而實際上我們甚至可以計算出無限維度情況下對應的核函式。如果核函式是一個指數形式,那麼可以看做是一種無限維度對映所對應的核函式。
這樣的核函式叫做高斯核函式。而這樣的核函式得到的結果如下圖推導:
這個結果的意義相當於是以每個支援向量x為中心的高斯分佈的線性組合。而高斯核又叫做RBF核。所以高斯SVM方法得到的結果就相當於找到支援向量
和對應的係數
並且在無限維度的空間中找到一個最大的margin。
加入了核函式方法的SVM演算法相當於是在利用核方法進行高維對映之後的空間裡找到間隔最大的分隔面。與原來的方式相比有兩點變化:1.把原來需要明確寫出的對映函式改為用核方法隱式表示。 2.把原來需要求解的w改為儲存支援向量和對應的係數。
而對於高斯SVM演算法來說,雖然對映到了無限維空間,但是演算法的泛化效能還是能夠通過最大化margin來保證。
下面來看幾個實際使用高斯核的SVM演算法的例子:
從圖上我們可以看出係數
可以很大程度地影響演算法的泛化效能。回憶起高斯SVM的結果是以支援向量為中心的高斯分佈的線性組合,而越大的係數
對應著越尖的高斯分佈,因此越大的
一般就越容易過擬合。
Comparison of Kernels
最後來分析一下不同核方法的優劣。首先是線性核:
優點是安全快速可解釋,缺點是有時候解決不了複雜情形。但是一般還是記得從線性情況開始做起。
對於多項式核來說,優點是比線性情況更強大,能夠解決複雜一些的問題,而且能夠通過Q來進行比較強的物理意義上的控制。但是缺點是高次指數的時候計算容易溢位,而且對應的係數太多很難調參。
高斯核的優點在於它更加強大,能夠處理非常複雜的情況。而且不會像多項式一樣遇到溢位的問題。同時它只需要調節一個引數。但是缺點是有時候因為沒法表示
而難以解釋。計算起來比線性的慢,而且容易過擬合。但是高斯核也是一個最受歡迎的方法。
除了這三種核方法之外,還有很多其它型別的核函式。核函式本身需要表示的是一個空間對映之後的內積。但是如論如何這些核函式需要滿足兩個條件,一個就是需要具有對稱性,即
。另外一個就是當它的結果組成一個矩陣時必須是半正定的。