1. 程式人生 > >臺灣大學林軒田機器學習技法課程學習筆記1 -- Linear Support Vector Machine

臺灣大學林軒田機器學習技法課程學習筆記1 -- Linear Support Vector Machine

關於臺灣大學林軒田老師的《機器學習基石》課程,我們已經總結了16節課的筆記。這裡附上基石第一節課的部落格地址:

本系列同樣分成16節課,將會介紹《機器學習基石》的進階版《機器學習技法》,更深入地探討機器學習一些高階演算法和技巧。

Large-Margin Separating Hyperplane

回顧一下我們之前介紹了linear classification,對於線性可分的情況,我們可以使用PLA/pocket演算法在平面或者超平面上把正負類分開。

這裡寫圖片描述

例如對平面2D這種情況,我們可以找到一條直線,能將正類和負類完全分開。但是,這樣的直線通常不止一條,如下圖所示。那麼,下圖中的三條分類線都能將資料分開,但是哪條線更好呢?

這裡寫圖片描述

這三條直線都是由PLA/pocket演算法不斷修正錯誤點而最終產生的,整個確定直線形狀的過程是隨機的。單從分類效果上看,這三條直線都滿足要求,而且都滿足VC bound要求,模型複雜度Ω(H)是一樣的,即具有一定的泛化能力。但是,如果要選擇的話,憑第一感覺,我們還是會選擇第三條直線,感覺它的分類效果更好一些。那這又是為什麼呢?

先給個簡單解釋,一般情況下,訓練樣本外的測量資料應該分佈在訓練樣本附近,但與訓練樣本的位置有一些偏差。若要保證對未知的測量資料也能進行正確分類,最好讓分類直線距離正類負類的點都有一定的距離。這樣能讓每個樣本點附近的圓形區域是“安全”的。圓形區域越大,表示分類直線對測量資料誤差的容忍性越高,越“安全”。

這裡寫圖片描述

如上圖所示,左邊的點距離分類直線的最小距離很小,它的圓形區域很小。那麼,這種情況下,分類線對測量資料誤差的容忍性就很差,測量資料與樣本資料稍有偏差,很有可能就被誤分。而右邊的點距離分類直線的最小距離更大一些,其圓形區域也比較大。這種情況下,分類線對測量資料誤差的容忍性就相對來說大很多,不容易誤分。也就是說,左邊分類線和右邊分類線的最大區別是對這類測量誤差的容忍度不同。

那麼,如果每一筆訓練資料距離分類線越遠的話,就表示分型別可以忍受更多的測量誤差(noise)。我們之前在《機器學習基石》中介紹過,noise是造成overfitting的主要原因,而測量誤差也是一種noise。所以,如果分類線對測量誤差的容忍性越好的話,表示這是一條不錯的分類線。那麼,我們的目標就是找到這樣一條最“健壯”的線,即距離資料點越遠越好。

這裡寫圖片描述

上面我們用圓形區域表示分類線能夠容忍多少誤差,也就相當於計算點到直線的距離。距離越大,表示直線越“胖”,越能容忍誤差;距離越小,表示直線越“瘦”,越不能容忍誤差。越胖越好(像楊貴妃那樣的哦~)。

這裡寫圖片描述

如何定義分類線有多胖,就是看距離分類線最近的點與分類線的距離,我們把它用margin表示。分類線由權重w決定,目的就是找到使margin最大時對應的w值。整體來說,我們的目標就是找到這樣的分類線並滿足下列條件:

  • 分類正確,即ynwTxn>0

  • margin最大化

這裡寫圖片描述

Standard Large-Margin Problem

要讓margin最大,即讓離分類線最近的點到分類線距離最大,我們先來看一下如何計算點到分類線的距離。

首先,我們將權重w(w0,w1,,wd)中的w0拿出來,用b表示。同時省去x0項。這樣,hypothesis就變成了h(x)=sign(wTx+b)

這裡寫圖片描述

下面,利用圖解的方式,詳細推導如何計算點到分類平面的距離:

這裡寫圖片描述

如上圖所示,平面上有兩個點:x’和x”。因為這兩個點都在分類平面上,所以它們都滿足:

wTx+b=0 wTx+b=0

同時可以得到:wTx=bwTx=b,則有:

wT(xx)=wTxwTx=b(b)=0

(x”-x’)是平面上的任一向量,(x”-x’)與w內積為0,表示(x”-x’)垂直於w,那麼w就是平面的法向量。

現在,若要計算平面外一點x到該平面的距離,做法是隻要將向量(x-x’)投影到垂直於該平面的方向(即w方向)上就可以了。那麼,令(x”-x’)與w的夾角為θ,距離就可以表示為:

distance(x,b,w)=|(xx)cos(θ)|=|||xx||(xx)w||xx||||w|||=1||w|||wTxwTx|

代入wTx=b,可得: