機器學習(六):SVM及相關問題

筆記迎來了機器學習目前最難的一個知識點。
SVM有幾大難點,首先是模型最優化的標準,其次是優化問題的變形,最後則是二次規劃的求解。
本文參考了很多篇博客,給出筆者自己的理解,從頭推導,最後以一個可以手動計算的實例來講解SVM求解的全過程。
注意本篇博客的目的在徹底理解,弄清每一步的推導,因此可能對於初識SVM的朋友不那麼友好。

最大間隔

首先需要明確的是,svm的形式。
和第二節介紹的邏輯迴歸相似,svm也有相同的函數表現形式:y=wx+b 。其中w和x都爲向量的形式。
但不同的是,兩者的優化目標。

邏輯迴歸追求的是錯誤率最小

這句話有一層隱含的意思:邏輯迴歸本身有對於不可分情況的處理能力,即使有些噪音,邏輯迴歸也可在不改變其自身屬性的情況下得到較好的訓練模型。
但支持向量機不同,對於svm家族最基本的分類模型——線性可分支持向量機來說,它只能分類完全可分的樣本,並在此基礎上最大化分類的間隔。
說白了,兩者的優化目標不同。
那麼支持向量機的優化目標是什麼呢?如下:
間隔
如上圖(摘自數據挖掘導論),即尋求不同樣本間的最大間隔邊緣。

方程的形式

接下來,從數據方面做些推導。

樣本點爲(xi,yi) ,其中xi=(xi1,xi2,...,xim),yi1,1

上面對於svm的數據做了基本的形式約束,即二分類問題。
svm的決策邊界可以表達如下:

y=wx+b,x=xi

對於二維數據點來說(即m=2)上述形式就是一條直線。
對於二類線性可分的情況,我們總可以找到兩條直線:
b1:wx+b=1b2:wx+b=1

使得當yi=1 對應的有wxi+b1 ,當yi=1 ,有wxi+b1
對於於面的理解,建議動手舉例理解。
比如兩個樣本點((1,1),1),((0,0),-1),這兩條直線可以是(1,1)xi1=1(1,1)xi1=1
以上是svm推到的基礎,請務必理解。
有了上述的分類邊緣,則兩個邊緣線間的距離就出來:
d=2||w||,||w||w

優化的目標是d最大。
已知:

yi=1 對應的有wxi+b1 ,當yi=1 ,有wxi+b1

我們可以得到該wx+b 滿足yi(wxi+b)1
ok到這裏,svm優化的最基礎形式已經出來了:

minw22s.t. yi(wxi+b)1,i[1,n]

拉格朗日乘子

這裏不做介紹,直接使用拉格朗日乘子來求解極值。(在這裏有個極大極小的變換,即對偶問題)

L=w22i=1nλi(yi(wxi+b)1)

求導得:
Lw=0=>w=i=1nλiyixiLb=0=>0=i=1nλiyi

將上述兩個求導的公式帶入L,化簡過程如下:
1maxL=12i,jnλiλjyiyjxixji,jnλiλjyiyjxixj+i,jnλi=i,jnλi12i,jnλiλjyiyjxixjs.t. 0=i=1nλiyiλi0

一般講解svm的資料接到這裏爲止了。
這裏也貼以下講解上述內容的資料鏈接:支持向量機SVM推導及求解過程

二次規劃及其求解

接下來本節將講解二次規劃一種可行解法:拉格朗日法。
上節最優的優化方程(公式1)的約束已經化簡爲了標準形式。但目標函數卻不是線性的,而是二次的。
這類問題成爲二次規劃問題,以區別於線性規劃。
所幸,二次規劃有通常的方法用於求解——拉格朗日法
詳見二次規劃推導
有興趣的不妨做推導,需要注意的是,在推導中有些矩陣並不是方陣,因此不能求導。
(有時間我也自己做一遍推導吧。。。有時間的話)

非線性可分——軟間隔

即軟間隔最大化。仍是貼一張圖:
軟間隔
圖中對於兩個異常點Q和P,這兩個點不滿足yi(wxi+b)1 .
在規劃問題中,一般的做法也很簡單,引入鬆弛變量ξ .即:

yi(wxi+b)1ξi

則邊緣的距離就變爲:
d=2ξiξj||w||

注意ξ 是變量。
請仔細思考上式,考慮如下:
1. 在添加鬆弛變量的情況下,如果目標函數保持d=2||w|| 不變,即分子不減去鬆弛變量,會有什麼問題?
即會出現,可以人爲的控制每個ξi 使得:對於任意yi=1滿wxi+b1ξiwxi+b1yi=1滿wxi+b1ξiwxi+b1
這會出現什麼問題?
即所有樣本點都在兩個分類邊緣之中,毫無疑問這種情況屬於:模型爲了最大化間隔,把所有樣本都統一處理了。
2.在添加鬆弛變量的情況下,如果目標函數d=2ξiξj||w|| 減去了鬆弛變量,那麼這會導致鬆弛變量的添加毫無意義。
因此爲了這種,我們既需要最大化間隔,有希望能過濾掉部分噪音,因此設置最優化目標爲:d=2tξi||w||
顛倒一下就是:d=w22+cξi
理解這一步也很重要。
有了上述的基礎,就可以在此使用拉格朗日乘子求解了。
這裏也不貼過程了,具體和求解(公式1)的方法相同,唯一的區別在於約束由λi0 變爲了0λic 。過程見鏈接:求解非線性可分

核函數——非線性支持向量機

具體來說,核函數其實是使用了變換的技術。
筆者不是很有信心能講解清楚該部分,也還是貼一下資料好了。什麼是核以及統計學習方法–李航。
還有一篇支持向量機通俗導論(理解SVM的三層境界)

發佈了72 篇原創文章 · 獲贊 50 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章