很努力地把公式截圖貼到簡書上,但效果還是不理想。因為文字間的公式非常難排版,且弄起來老感覺蛋疼 ...... 如果想看完整排版的移步 http://blog.kamidox.com/svm.html
支持向量機算法 SVM 是 Support Vector Machine 的縮寫,它是工業(yè)和學(xué)術(shù)界都有廣泛應(yīng)用的強大的算法。
從邏輯回歸算法談起
邏輯回歸算法的預(yù)測函數(shù)
邏輯回歸算法的預(yù)測函數(shù)稱為 Sigmoid Function ,如下圖:

這意味著,針對 $y=1$,我們希望預(yù)測值 $h(x) \approx 1$,那么只要 $z=\theta^T x \gg 0$ 即可。相同的道理,針對 $y=0$,我們希望預(yù)測值 $h(x) \approx 0$,那么只要 $z=\theta^T x \ll 0$ 即可。
邏輯回歸算法的成本函數(shù)
回顧之前的知識,邏輯回歸算法的成本函數(shù)如下
如果我們?nèi)サ?$\frac{1}{m}$ 和累加器,同時暫時不考慮正則項,則可以得到另外一個樣式的成本函數(shù):
當(dāng) $y^{(i)}=1$ 時,$1-y^{(i)}=0$,故這一式子再簡化為:
把上述函數(shù)以成本 J 為縱坐標(biāo),z 為橫坐標(biāo),畫出來的函數(shù)曲線如下:

從圖中可以看到,針對 $y=1$ 的情況,如果 $z=\theta^T x \gg 1$ 時,成本將很小。支持向量機的原理,就是簡化邏輯回歸算法的成本函數(shù),以 $z=1$ 為分界線,當(dāng) $z<1$ 時,把成本函數(shù)簡化為一條斜線,當(dāng) $z>=1$ 時,直接把成本簡化為 0。如上圖洋紅色所示。
相同的道理,針對$y^{(i)}=0$ 時,變形后的邏輯回歸算法成本函數(shù)簡化為:
把上述函數(shù)以成本 J 為縱坐標(biāo),z 為橫坐標(biāo),畫出來的函數(shù)曲線如下:

從圖中可以看到,針對 $y=0$ 的情況,如果 $z=\theta^T x \ll -1$ 時,成本將很小。支持向量機的原理,就是簡化邏輯回歸算法的成本函數(shù),以 $z=-1$ 為分界線,當(dāng) $z<-1$ 時,把成本函數(shù)簡化為 0,當(dāng) $z>=-1$ 時,把成本簡化一條斜線。如上圖洋紅色所示。
支持向量機算法的成本函數(shù)
根據(jù)上面的定義,支持向量機把成本函數(shù)分成兩部分,一部分是針對 $y=1$ 的情況,它是一個以 $z=1$ 為分界點的折線。另外一部分是針對 $y=0$ 的情況,它是以 $z=-1$ 為分界點的折線。我們把這兩個情況合并起來,并把正則項加上去,就得到支持向量機的成本函數(shù):
這就是用在支持向量機算法里的成本函數(shù)。這里的參數(shù) C 越大,正則項的比重就越小,就容易造成過擬合。反之,如果 C 越小,正則項的比重就越大,就容易造成欠擬合。
支持向量機的預(yù)測函數(shù)
我們定義支持向量機的預(yù)測函數(shù)如下:
這里和邏輯回歸算法比較,針對邏輯回歸算法,其正負(fù)樣本分界線為 $\theta^T x = 0$,即 $\theta^T x > 0$ 時為正樣本,當(dāng) $\theta^T x < 0$ 時為負(fù)樣本。而支持向量機的分類預(yù)測函數(shù)要求更嚴(yán)格,它要求 $\theta^T x >= 1$ 時為正樣本,$\theta^T x <= -1$ 時為負(fù)樣本。根據(jù)支持向量機的成本函數(shù)圖形,只有這樣成本才最小,即成本為零。如下圖所示:

大間距分類算法
支持向量機也稱為大間距分類算法。大間距的意思是,用 SVM 算法計算出來的分界線會保留對類別最大的間距,即有足夠的余量。
我們看一個比較極端的情況,假設(shè)我們選取一個很大的值作為參數(shù) C 的值,那么為了讓成本最小,我們必須讓成本函數(shù)的前半部分為 0,這樣成本函數(shù)就只剩下:
求解這個函數(shù)的結(jié)果,就會讓我們獲得一個較大間距的分類算法。如下圖所示,假設(shè)我們有個分類問題。那么洋紅色和綠色的都可以是合法的分界線,但 SVM 可以得到黑色的分界線,即確保到兩個類別有最大的間距。

為什么求解 $J(\theta) = \frac{1}{2} \sum_{j=1}^n \theta_j^2$ 會得到最大間距的分界線呢?這個我們留到下面詳細(xì)解釋。
我們接著看下圖,如果我們的參數(shù) C 很大,那么可能發(fā)生過擬合,即左下角的一個異常的紅色樣例 X 可能會導(dǎo)致決策界從黑色線變成洋紅色線。但實際上,直觀地來理解,這樣的轉(zhuǎn)變是不合理的,我們?nèi)匀幌M玫胶谏臎Q策界。這個時候,我們可以調(diào)整參數(shù) C ,讓 C 的值不要太大,這樣就不會被左下角的紅色 X 異常樣例的干擾,照樣得到黑色的決策邊界。

與邏輯回歸算法類比,C 相當(dāng)于 $\frac{1}{\lambda}$。通過調(diào)整 C 可以讓 SVM 算法不至于過擬合,也不至于欠擬合。
從數(shù)學(xué)角度理解大間距分類算法
向量內(nèi)積的幾何含義
假設(shè) u, v 是一個二維列向量,那么 $u^Tv$ 表示向量 v 在 向量 u 上的投影的長度。可以通過在二維平面上畫出向量 u 和向量 v 來更清楚地看這個關(guān)系。

其中 p 就是 v 在 u 上的投影的長度,它是有符號的實數(shù);$|u|$ 是向量 u 的范數(shù),即向量 u 的長度,其值為 $\sqrt{u_1^2 + u_2^2}$。
從數(shù)學(xué)上理解為什么支持向量機會把類別邊界的間距做到最大
假設(shè)我們只有兩個特征,即 n = 2,則 $J(\theta) = \frac{1}{2} \sum_{j=1}^n \theta_j^2$ 簡化為:
回到 SVM 算法的預(yù)測函數(shù):
即當(dāng)預(yù)測為正樣本時,我們需要 $\theta^T x >=1$,這個式子可以理解為向量內(nèi)積,它的幾何含義是x 在 $\theta$ 上的投影的長度大于等于 1,即 $p | \theta | >= 1$。如下圖所示:

而我們的算法求解目標(biāo)是使 $J(\theta) = \frac{1}{2} | \theta |^2$ 最小,所以 SVM 算法的求解目標(biāo)就是要讓 p 盡可能最大。即使所有的訓(xùn)練樣例點 $x^{i}$ 到參數(shù)向量 $\theta$ 的投影長度最大。在幾何上,決策邊界和參數(shù) $\theta$ 是正交的。如下圖所示:

綠色線為決策邊界,綠色線為 $\theta$ 所代表的向量。那么 SVM 的求解目標(biāo)就是讓各個訓(xùn)練樣例的點 $x^{i}$ 到 $\theta$ 上的投影長度最大。上圖中,我們可以試著換一個決策邊界,試著畫出訓(xùn)練樣例到這個新的決策邊界所決定的參數(shù) $\theta$ 的投影長度,即可理解為什么 SVM 可以讓決策邊界得到最大的間距。