SVM-非線性支持向量機及SMO算法


SVM-非線性支持向量機及SMO算法

如果您想體驗更好的閱讀:請戳這里littlefish.top

線性不可分情況

線性可分問題的支持向量機學習方法,對線性不可分訓練數據是不適用的,為了滿足函數間隔大於1的約束條件,可以對每個樣本$(x_i, y_i)$引進一個松弛變量$\xi_i \ge 0$,使函數間隔加上松弛變量大於等於1,,

$$y_i (w \cdot x_i + b) \ge 1 - \xi_i$$

目標函數變為

$$\frac 1 2 {||w||^2} + C \sum_{j=1}^N \xi_i$$

其中,C>0稱為懲罰參數,值越大對誤分類的懲罰越大,值越小對誤分類的懲罰越小。

因此,最小化目標函數也就是使$\frac 1 2 {||w||^2}$盡量小(間隔盡量大),同時使誤分類點的個數盡量小。

線性不可分的線性支持向量機的學習問題變成如下凸二次規划問題:

$$ \min_{w,b,\xi}\frac 1 2 {||w||}^2 + C \sum_{i=1}^N \xi_i \
s.t. \quad y_i(w \cdot x_i + b) \ge 1 - \xi_i, \quad i=1,2,...,N, \xi_i \ge 0, i=1,2,...,N$$

線性支持向量學習算法

  • 選擇懲罰參數C>0,構造並求解凸二次規划問題

$$ \min_\alpha \frac 1 2 \sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j (x_i \cdot x_j) - \sum_{i=1}^N \alpha_i\
s.t. \quad \sum_{i=1}^N \alpha_i y_i = 0 \
0 \le \alpha_i \le C, i=1,2,...,N$$

求得最優解$\alpha*=(\alpha_1*, \alpha_2^*, ... , \alpha_N*)T$

  • 計算$w*=\sum_{i=1}N \alpha_i^* y_i x_i$

選擇$\alpha*$的一個分量$\alpha_j*$適合條件$0<\alpha_j^*<C$,計算

$$b^*=y_i - \sum_{i=1}^N y_i \alpha_i^*(x_i \cdot x_j)$$

  • 求得分離超平面

$$w^* \cdot x + b^* = 0$$

分類決策函數:

$$f(x) = sign(w^* \cdot x + b^*)$$

核函數

用線性分類方法求解非線性分類問題分為兩步:首先使用一個變換將原空間的數據映射到新空間;然后在新空間里用線性分類學習方法從訓練數據中學習分類模型。

核函數的空間轉換

核技巧應用在支持向量機的基本思想:通過一個非線性變換將輸入空間(歐式空間$Rn$或離散集合)對應於一個特征空間(希爾伯特空間H),使得在輸入空間$Rn$中的超曲面模型對應於特征空間H中的超平面模型(支持向量機)。

非線性支持向量分類機

非線性支持向量機

從非線性分類訓練集,通過核函數與間隔最大化或凸二次規划,學習得到的分類決策函數:

$$f(x)=sign(\sum_{i=1}^N \alpha_i^*y_i K(x,x_i) + b^*)$$

稱為非線性支持向量,$K(x,z)$是正定核函數。

學習算法

  • 選擇適當的核函數$K(x,z)$和適當的參數C,構造並求解最優化問題

$$\min_\alpha \frac 1 2 \sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j K(x_i, x_j) - \sum_{i=1}^N \alpha_i\
s.t. \quad \sum_{i=1}^N \alpha_i y_i = 0, 0<\alpha_i<C,i=1,2,...,N$$

求解最優解$\alpha*=(\alpha_1*, \alpha_2*,...,\alpha_N*)$

  • 選擇$\alpha*$的第一個正分量$0<\alpha_j*<C$,計算

$$b^*=y_i - \sum_{i=1}^N \alpha_i^* y_i K(x_i \cdot x_j)$$

  • 構造決策函數

$$f(x)=sign(\sum_{i=1}^N \alpha_i^* y_i K(x \cdot x_i) + b^*)$$

序列最小優化算法

SMO算法是一種啟發式算法。如果所有變量都滿足KKT條件,那么這個最優化問題就解決了(KKT問題是該最優化問題的充要條件),否則,選擇兩個變量,固定其他變量,針對這兩個變量構造二次規划問題。該方法會使原始二次規划問題的目標函數變小,不斷分解自問題並對子問題求解進而達到求解原問題的目的。

由於

$$\sum_{i=1}^N \alpha_i y_i = 0$$

所以

$$\alpha_i = - \frac 1 {y_i} \sum_{i=2}^N \alpha_i y_i$$

兩個變量的二次規划求解

假設選擇兩個變量$\alpha_1,\alpha_2$,

$$\min_{\alpha_1\alpha_2} \quad = \frac 1 2 K_{11} \alpha_1^2 + \frac 1 2 K_{22} \alpha_2^2 + y_1 y_2 K_{12} \alpha_1 \alpha_2 \
\quad (\alpha_1 + \alpha_2) + y_1 \alpha_1 \sum_{i=3}^N y_i \alpha_i K_{i1} + y_2\alpha_2\sum_{i=3}^N y_i \alpha_i K_{12} \
s.t. \quad \alpha_1 y_1 + \alpha_2 y_2 = - \sum_{i=3}^N y_i \alpha_i = \xi \
0 \le \alpha_i \le C, i=1,2$$

由於只有兩個變量$(\alpha_i,\alpha_j)$,因此根據兩變量的符號情況約束條件可用二位空間中的圖表示(參考$\alpha_1 y_1 + \alpha_2 y_2 = \xi(常數)$),

二變量優化問題

L和H是$\alpha$取值的最小和最大值,如果$y_i != y_j$,則

$$L=\max(0,\alpha_2 - \alpha_1), H=\min(C,C+\alpha_2-\alpha_1)$$

如果$y_i = y_j$,則

$$L=\max(0,\alpha_2 + \alpha_1 + C), H=\min(C,\alpha_2+\alpha_1)$$

$$g(x) = \sum_{i=1}^N \alpha_i y_i K(x_i, x) + b$$

得到誤差值:

$$E_i = g(x_i) - y_i = ( \sum_{i=1}^N \alpha_i y_i K(x_i, x) + b) - y_i$, \quad i = 1,2$$

此最優問題的解是:

$$\alpha_2^{new} = \alpha_2^{old} + y_2 \frac {(E_1 - E_2)} \eta$$

其中,

$$\eta = K_{11} + K_{22} - 2K_{12} = {||\phi(x_1) - \phi(x_2)||}^2$$

$\phi(x)$為輸入空間到特征空間的映射,經過剪輯后是

$$f(n)=\begin{cases}
H,\quad \alpha_2^{new} > H \
\alpha_2^{new}, \quad L \le \alpha_2^{new} \le H \
L,\quad \alpha_2^{new} < L \end{cases}$$

則$\alpha_1^{new}$為

$$\alpha_1^{new} = \alpha_1^{old} + y_1 y_2 (\alpha_2^{old} - \alpha_2^{new})$$

變量的選擇方法

SMO算法在每個子問題中選擇兩個變量優化,其中至少一個變量是違反KKT條件的。

1.第1個變量的選擇

SMO算法在外層循環中選取違反KKT條件最嚴重的樣本點,並將其對應的變量作為第1個變量,KKT條件如下

$$\alpha_i = 0 <=> y_i g(x_i) \ge 1 \
0 < \alpha_i < C <=> y_i g(x_i)=1 \
\alpha_i = C <=> y_i g(x_i) \le 1$$

其中,$g(x_i) = \sum_{j=1}^N \alpha_j y_j K(x_i,x_j)+b$。

該檢驗在$\epsilon$范圍內進行的,在校驗過程中,外層循環首先遍歷所有滿足條件$0<\alpha_i<C$的樣本點,即在間隔邊界上的支持向量點,檢驗它們是否滿足KKT條件。如果這些樣本點都滿足KKT條件,那么遍歷整個訓練集,檢驗它們是否滿足KKT條件。

2.第2個變量的選擇

SMO算法在內層循環,假設在外層循環中已經找到第一個變量$\alpha_1$,現在要在內層循環中找到第2個變量$\alpha_2$,第2個變量選擇的標准是希望能使$\alpha_2$有足夠的變化。根據上一節可知,$\alpha_2^{new}$是依賴$|E_1 - E_2|$的,為了加快計算速度,最簡單的做法是選擇$|E_1 - E_2|$最大的(如果$E_1$為負值,則選擇最大的$E_i$作為$E_2$,否則選擇最小的$E_i$為$E_2$,需要保存所有的$E_i$)。

3.計算閾值b和差值$E_i$

在每次完成兩個變量優化后,都要重新計算閾值b。

由KKT條件得

$$\sum_{i=1}^N \alpha_i y_i K_{i1} + b = y_i$$

從而

$$b_1^{new} = y_1 - \sum_{i=3}^N \alpha_i y_i K_{i1} - \alpha_1^{new} y_1 K_{11} - \alpha_2^{new} y_2 K_{21}$$

由於$E_i = g(x_i) - y_i = ( \sum_{i=1}^N \alpha_i y_i K(x_i, x) + b) - y_i$, \quad i = 1,2$,則

$$E_1 = g(x_1) - y_1 = \sum_{i=3}^N \alpha_i y_i K_{i1} + \alpha_1^{old} y_1 K_{11} + \alpha_2^{old} y_2 K_{21} + b^{old} - y_1$$

將上式中的$y_i - \sum_{i=3}^N \alpha_i y_i K_{i1} $代入$b_1^{new}$的公式中,得到

$$b_1^{new} = -E_1 - y_1 K_{11} (\alpha_1^{new} - \alpha_1^{old} ) - y_2 K_{21} (\alpha_2^{new} - \alpha_2^{old} ) + b^old$$

對於b的取值:

$$b{new}=\begin{cases}b_1{new}=b_2^{new}, \quad 0 < \alpha_i^{new} < C, i =1,2 \
\frac {b_1^{new} + b_2^{new}} 2,\quad \alpha_i^{new} == 0 or C,滿足KKT條件\end{cases}$$


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM