支持向量機(SVM)
1. 推導及理解
借鑑於邏輯迴歸的代價函數,我們給出了支持向量機的整個優化的目標函數如下:
當最小化這個代價函數,我們會得到參數 ,然後用這個參數 來預測 的值爲1還是0。當 大於或者等於0時,假設預測爲1;否則,預測爲0.
支持向量機常被稱作大間距分類器,其實就是引入了安全的間距因子。如下圖:
當 我們希望 ,當 我們希望 ,不再以0爲邊界,增強了限制,相當於嵌入了一個額外的安全因子!然後代價函數左邊這一項會爲0,只剩下右邊這一項!按照這種方式優化,我們可以得到一個很有意思的邊界!
我們可以通過一個圖像來更加直觀的來看,對於下面這樣一個數據集,其中有正樣本也有負樣本,我們能否找到一條直線將正負樣本分開呢?
沒錯,我們可以找到如下圖很多直線來將正負樣本分開。
可是,這條黑色的線比其他線要好很多,看起來像是更穩定的決策邊界。如下圖,
黑色的決策邊界有和訓練樣本之間有更大的最短距離,這個距離我們稱爲間距(margin)。支持向量機的基本思想就是努力將正樣本和負樣本用最大的間距分開,因而也被成爲最大間距分類器。
當上面代價函數左邊爲0時,支持向量機的最小化問題就變成:
補充小知識:向量的內積等與一個向量到另一個向量的投影乘以另一個向量的範數。
即 ,注意投影 可能爲負。
那麼我們就可以讓 對參數向量 作投影得到 ,然後使用 代替代價函數中的 ,得到:
下面來直觀的理解支持向量機如何能有效的產生大分類器的原因。
當邊距比較小時,投影 會很小,由於我們需要 那麼需要的 會很大;對於負樣本也是同樣的道理, 的範數也會很大,所以這看起來不是一個好的參數向量 的選擇。
再看下圖,當投影長度更長時,會有一個好一點的參數向量 的選擇。
2.核函數
我們可以使用核函數構建一個更復雜的非線性的分類器。比如如下圖所示的分類邊界,
我們可以使用核函數計算出新的特徵。
給定一個訓練實例 ,利用 的各個特徵與我們預先選定的地標(landmarks) ,的近似程度來選取新的特徵 。
這個例子中的 就是高斯核函數(Gaussian Kernel)。(這個函數和正態分佈沒什麼關係,只是看上去像而已)
這些地標(landmark)的作用是什麼?如果訓練集 與地標 的之間的距離近似於0,則新特徵 近似於 ;如果訓練集 與地標之間的距離較遠,則 近似於 .
對於上述選取三個地標的例子,我們得到了以下邊界。在邊界區域內我們預測爲1,不在邊界區域內我們預測爲0.
預測時我們採用的特徵不是訓練實例本身的特徵,而是通過核函數計算出來的新特徵。
那麼怎麼去選取地標呢?
我們通常是根據訓練集的數量來選取地標的數量,即如果訓練集中有m個實例,則我們選取m個地標,並且令 。這樣做的好處在於:現在我們得到的新特徵是建立在原有特徵與訓練集中所有其他特徵之間距離的基礎之上的,即,
另外,支持向量機也可以不使用核函數,不使用核函數又稱爲線性核函數(linear kernel),當我們不採用非常複雜的函數,或者我們的訓練集特徵非常多而實例非常少時,可以採用這種不帶核函數的支持向量機。
注意:這裏沒有講最小化支持向量機的代價函數的方法,可以參考使用現有的軟件包liblinear,libsvm。
參考資料:
[1]course機器學習筆記
[2]周志華機器學習
[3]一文解析支持向量機(帶公式推導)