1. 程式人生 > >支持向量機(SVM)

支持向量機(SVM)

線性可分 推廣 目標 穩定 偏差 images com tro 屬於

支持向量機是一種分類模型。模型認為,離分類超平面越遠的點,判定結果越準確,所以模型的訓練目標就是讓離分類超平面最近的樣本點距離最大。我們先從最基本的線性可分支持向量機(硬間隔支持向量機)開始推導,之後再推廣到可以容納一定誤分類點的線性支持向量機(軟間隔支持向量機),最後介紹核函數與 SMO 算法。

支持向量機解決的問題

假設我們正在進行一個二分類問題,並且已經畫好了一條分類線。如下圖,現在我們有 3 個點(ABC)等待判斷。

技術分享

雖然按照我們的分類線,這 3 個點都應該屬於 X 類。可是 A 點離分類線最遠,應該來說我們將它分為 X 類的把握最大;而 C 點離分類線很近,萬一分類線出現了一些偏差,C 點的判定結果可能就改變了,這樣說來我們將它分為 X 類的把握最小;而 B 點位於 AC 兩點中間,分類正確的把握也位於 AC 之間。

這樣看來,一個點離分類超平面越遠,該點就越不容易因為分類超平面的誤差而被誤判,我們對該點的分類結果也就越穩定。如果我們能盡量增大樣本點到分類超平面的距離,是不是就能盡量增大訓練樣本正確分類的把握呢?

支持向量機就是來解決這個問題的。支持向量機的訓練目的就是找到一個分類超平面,使得樣本點中離分類超平面最近的點距離最大。

線性可分支持向量機

接下來我們來推導線性可分支持向量機的算法。在推導過程中,我們假設存在一個超平面,能夠將所有樣本點正確分類。

設分類超平面為 $w^Tx+b = 0$,根據幾何知識我們知道,對於樣本點 $(x^{(i)},y^{(i)})$(其中 $y^{(i)} = \pm 1$ 表示兩個類別),$y^{(i)}(w^Tx^{(i)}+b)$ 的值越大,則樣本點距離分類超平面越遠。我們稱這個值為樣本點的函數間隔。容易發現,函數間隔大於 0 的點就是被正確分類的點,小於 0 的點就是被錯誤分類的點,而等於 0 的點就是位於分類超平面上的點。

但用函數間隔作為樣本點的度量是不準確的,因為只要把分類超平面變成 $kw^Tx+kb=0$,那麽樣本點的函數間隔就會變為原來的 $k$ 倍,而樣本點距離分類超平面的遠近沒有任何改變。所以我們引入樣本點的幾何間隔 $\frac{1}{|w|}y^{(i)}(w^Tx^{(i)}+b)$ 作為度量樣本點距分類超平面遠近的值。由幾何知識易得,幾何間隔就是樣本點到分類超平面的距離。

支持向量機的訓練目標是最大化最小的幾何間隔,我們容易寫出以下目標函數:$$\max_{w,b,\gamma} \gamma \\ \text{s.t.} \quad \frac{1}{|w|}y^{(i)}(w^Tx^{(i)}+b) \ge \gamma$$ 糟糕的是,限制條件並不是凸函數,沒法用凸優化的方式解決。

由於函數間隔並不影響我們的優化目標(只要對 $w$ 和 $b$ 進行縮放,就能獲得任意的函數間隔),我們完全可以令最小的函數間隔等於 1。這樣,最小的幾何間隔就變為了 $\frac{1}{|w|}$。我們可以改寫目標函數:$$\max_{w,b}\frac{1}{|w|} \\ \text{s.t.} \quad y^{(i)}(w^Tx^{(i)}+b) \ge 1$$ 最大化 $\frac{1}{|w|}$,就相當於最小化 $\frac{1}{2}|w|^2$,所以我們可以繼續改寫目標函數為 $$\min_{w,b}\frac{1}{2}|w|^2 \\ \text{s.t.} \quad y^{(i)}(w^Tx^{(i)}+b) \ge 1$$ 現在目標函數是凸函數,限制函數是仿射函數(也是凸函數)了。很顯然,這是一個二次規劃(quadratic programming)問題,我們完全可以用凸優化中解決 QP 問題的方法來求出這個函數的解。不過,針對支持向量機要優化的問題,我們還可以繼續推導出一個比一般解決 QP 問題效率更高的方法。

我們利用拉格朗日對偶,將優化目標寫成原問題和對偶問題的形式。

原問題:$$\min_{w,b}\max_{\alpha}\frac{1}{2}w^Tw + \sum_{i=1}^m \alpha_i(1-y^{(i)}(w^Tx^{(i)}+b)) \\ \text{s.t.} \quad \alpha_i \ge 0$$

對偶問題:$$\max_{\alpha}\min_{w,b}\frac{1}{2}w^Tw + \sum_{i=1}^m \alpha_i(1-y^{(i)}(w^Tx^{(i)}+b)) \\ \text{s.t.} \quad \alpha_i \ge 0$$

由於我們假設能正確分類所有樣本點的超平面存在,所以的確有一組 $w$ 和 $b$ 使得最小的函數間隔 $y^{(i)}(w^Tx^{(i)}+b) > 0$,對 $w$ 和 $b$ 進行放縮就能保證最小的函數間隔 $y^{(i)}(w^Tx^{(i)}+b) > 1$。也就是說,這個問題滿足 Slater‘s condition,可以利用 KKT 條件求出問題的解。

根據 KKT 條件,我們有:$$\nabla_w = w - \sum_{i=1}^m\alpha_i y^{(i)}x^{(i)} = 0 \\ \nabla_b = -\sum_{i=1}^m\alpha_i y^{(i)} = 0$$ 代入對偶問題的式子我們有:$$\max_{\alpha}-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy^{(i)}y^{(j)}\langle x^{(i)},x^{(j)}\rangle + \sum_{i=1}^m\alpha_i \\ \text{s.t.} \quad \alpha_i \ge 0 \\ \sum_{i=1}^m\alpha_i y^{(i)} = 0$$ 其中 $\langle x^{(i)},x^{(j)}\rangle$ 表示點積。

我們可以通過一個較為高效的算法(稍後敘述)解決上面這個優化問題,求出 $\alpha$ 的最優值。

令 $g_i(x) = 1-y^{(i)}(w^Tx^{(i)}-b)$。由 KKT 條件可知,$\alpha_ig_i(x) = 0$。也就是說,若 $\alpha_i > 0$,必然有 $g_i(x) = 0$,即第 $i$ 個樣本點是距離分類超平面最近的樣本點之一,我們稱這樣的樣本點為支持向量;對於一個不是支持向量的樣本點,由於 $g_i(x) < 0$,必須要有 $\alpha_i = 0$。

求出 $\alpha$ 的值後,我們代入由 KKT 條件推出的式子,即可獲得 $w$ 的值。將 $w$ 用 $\alpha$ 表示後代入分類超平面的式子,則分類超平面為 $$\sum_{i=1}^m\alpha_iy^{(i)} \langle x^{(i)},x \rangle + b = 0$$ 而對於支持向量來說,由於 $$y^{(i)}(w^Tx^{(i)}+b) = 1$$ 那麽我們任意選擇一個支持向量,即可算出 $$y^{(i)}b = 1 - y^{(i)}\sum_{j=1}^m\alpha_jy^{(j)} \langle x^{(j)}, x^{(i)} \rangle$$ 由於 $(y^{(i)})^2 = 1$,兩邊同乘 $y^{(i)}$ 有 $$b = y^{(i)} - \sum_{j=1}^m\alpha_jy^{(j)} \langle x^{(j)}, x^{(i)} \rangle$$ 我們就得到了最優的分類超平面。

線性支持向量機

在大部分情況下,數據都不是完全線性可分的,可能存在部分特例(outlier)。此時我們可以使用機器學習中的經典套路——正則化讓模型容忍一定的分類錯誤。

引入正則化項 $\xi$ 與系數 $C$,我們將優化目標改為 $$\min_{w,b,\xi}\frac{1}{2}|w|^2 + C\sum_{i=1}^m\xi_i \\ \text{s.t.} \quad y^{(i)}(w^Tx^{(i)}+b) \ge 1 - \xi_i \\ \xi_i \ge 0$$ 直觀地說,我們可以付出一定的代價 $C\xi_i$,讓某些樣本點的函數間隔小於 1,甚至為負(即可以容忍部分樣本點的分類錯誤)。$C$ 就是調節模型對分類錯誤容忍程度的系數。

我們同樣可以使用拉格朗日對偶求出這個優化問題的解。同樣將問題寫成原問題和對偶問題的形式。

原問題:$$\min_{w,b,\xi}\max_{\alpha,\beta}\frac{1}{2}|w|^2+C\sum_{i=1}^m\xi_i+\sum_{i=1}^m\alpha_i(1-\xi_i-y^{(i)}(w^Tx^{(i)}+b)) - \sum_{i=1}^m\beta_i\xi_i \\ \text{s.t.} \quad \alpha_i \ge 0 \quad \beta_i \ge 0$$

對偶問題:$$\max_{\alpha,\beta}\min_{w,b,\xi}\frac{1}{2}|w|^2+C\sum_{i=1}^m\xi_i+\sum_{i=1}^m\alpha_i(1-\xi_i-y^{(i)}(w^Tx^{(i)}+b)) - \sum_{i=1}^m\beta_i\xi_i \\ \text{s.t.} \quad \alpha_i \ge 0 \quad \beta_i \ge 0$$

同樣容易驗證這個問題滿足 Slater‘s condition,利用 KKT 條件仍有 $$\nabla_w = w - \sum_{i=1}^m\alpha_iy^{(i)}x^{(i)} = 0 \\ \nabla_b = -\sum_{i=1}^m\alpha_iy^{(i)} = 0 \\ \nabla_{\xi_i} = C - \alpha_i - \beta_i = 0$$ 由第三個式子,再加上 $\alpha_i \ge 0$ 與 $\beta_i \ge 0$ 可以看出 $0 \le \alpha_i \le C$。將上面的式子代回對偶問題有 $$\max_{\alpha}-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy^{(i)}y^{(j)}\langle x^{(i)},x^{(j)}\rangle + \sum_{i=1}^m\alpha_i \\ \text{s.t.} \quad 0 \le \alpha_i \le C \\ \sum_{i=1}^m\alpha_i y^{(i)} = 0$$ 和線性可分支持向量機所導出的問題相比,只是 $\alpha_i$ 的取值範圍有所變化。

(待補充- -)

支持向量機(SVM)