吳恩達公開課心得——支持向量機

支持向量機(Support Vector Machine,SVM)是Corinna Cortes和Vapnik等於1995年首先提出的,它在解決小樣本、非線性及高維模式識別中表現出許多特有的優勢,並能夠推廣應用到函數擬合等其他機器學習問題中。

在機器學習中,支持向量機(SVM,還支持矢量網絡)是與相關的學習算法有關的監督學習模型,可以分析數據,識別模式,用於分類和迴歸分析。

所謂支持向量是指那些在間隔區邊緣的訓練樣本點。

SVM與邏輯迴歸的關係

吳恩達公開課心得——支持向量機

吳恩達公開課心得——支持向量機

y=1時,代價函數的第二項為0,第一項就簡化為左圖中的函數,機器學習的目的就是讓代價函數最小,所以我們希望z的取值越大越好,這樣簡化後的函數就會越小,代價函數就會越小。

同理,y=0時,代價函數的第一項為0,第二項簡化為右圖的函數,顯然z取值越小越好。

這裡我們定義左圖的兩段線性函數為cost1(z),右圖的兩段線性函數定義為cost0(z)。那麼最終的代價函數如下所示:

吳恩達公開課心得——支持向量機

這裡C=1/lambda,所以注意C和lambda的意義剛好相反。根據該優化目標得到theta之後,就可以用如下的假設來做預測了。即z>=1時,可以認為y=1;z<=-1時,認為y=0。那麼z在(-1,1)之間時呢?什麼都不是。這就導致theta在它所在的空間出現了一個間距,因此SVM又稱為大間距分類器。

svm的計算過程

假如我們要解決的是一個非線性問題,我們可以把特徵值增加很多高階項。這也是以前常用的技巧。但是數學家們覺得這還不夠。考慮到SVM最終是求解一個線性方程,運算量實在太低了,數學家們就給它加了難度。特徵的選擇不使用高階項了,而是使用核函數。通常使用的是高斯核函數。

吳恩達公開課心得——支持向量機

label點如何選取呢?不好選吧,那就把所有的訓練樣本都算上。比如有m個訓練樣本,就去m個特徵f。於是f(i) = sim(x,x(i)) 。接下來的運算步驟如下所示:

吳恩達公開課心得——支持向量機

在非線性問題中用核函數有啥好處呢?

先說高階項吧,高到多少算合適呢?這顯然沒有標準答案。用核函數就可以避免這種尷尬。因為核函數本身就是非線性的。可以想象高斯核函數的邊界是圓形,多個高斯函數疊加,顯然邊界必然是一個光滑的曲線。相反,假如是一個線性問題,用核函數並不能給出更好的結果。

提醒

具體過程還是請仔細研究視頻吧,這裡只給出一些筆記和自己的想法。歡迎同道中人一起探討。


分享到:


相關文章: