支持向量機


結構風險最小化原則

經驗風險:在訓練樣本上的誤判,也就是損失函數了。

結構風險:由2部分組成,經驗風險和VC置信范圍VC Confidence。VC置信范圍又跟訓練樣本數量和VC維有關,樣本越多VC置信范圍越小,VC維越大VC置信范圍越大。VC維反映了函數集的學習能力,算法模型越復雜VC維越大。結構風險是模型在未知樣本上的期望誤判的上界,所以結構風險越小越好。結構風險最小化原則就是在兼顧經驗風險最小的同時,還要盡量降低VC維(即降低模型復雜度,這跟奧卡姆剃刀原則是一致的)以減小VC置信范圍。

當訓練樣本有限時如果只考慮經驗風險,那么模型容易偏復雜,出現過擬合的現象。即訓練樣本有限時經驗風險和真實風險差距較大。比如人工神經網絡優化的就是經驗風險,易陷入局部最優,訓練結果不太穩定,一般需要大樣本。而支持向量機優化的是結構風險,泛化能辦強,算法具有全局最優性,是針對小樣本統計的理論。

 SVM中的最優化問題

                 圖1.結構風險最小化                                    圖2.經驗風險最小化

對於線性可分的二分類問題,正樣本$x_i$在$w^{T}x+b=1$的上側,即$w^{T}x_i+b\ge{1}$,負樣本$x_j$在$w^{T}x+b=-1$的下側,即$w^{T}x_j+b\le{-1}$,令正樣本的分類標簽$y_i=1$,負樣本的分類標簽$y_j=-1$,可以得到對正負樣本都有$y_{i}(w^{T}x_i+b)\ge{1}$。

根據結構風險最小化的原則,SVM的優化目標是使兩個分類平面之間的間隔(即h)最大,即得到圖1所示的分類器,此時的分類決策函數是$w^{T}x+b=0$。圖2所示的分類器在訓練訓練樣本上的誤差為0,即滿足經驗風險最小化。對於待預測的數據點$x_4$來說,圖1所示的分類器會把它分負樣本里面去,而圖2所示的分類器會把它分到正樣本里面去,所以SVM采用的是圖1所示的分類器。

設$x_1$和$x_2$分別是$w^{T}x+b=1$和$w^{T}x+b=-1$上的點,兩式相減得$w^{T}(x_1-x_2)=2$,這里w和x都是向量,下面我們要把向量的內積轉換為代數乘積。w與分界面垂直,$x_1-x_2$在w方向上的投影長度為h,所以$w^{T}(x_1-x_2)=||w||*h=2$,所以$h=\frac{2}{||w||}$,SVM訓練的目標是求$max\;h$時的w和b。

SVM轉換為一個優化問題:

$\begin{matrix}\min&f(w,b)=\frac{1}{2}||w||^2\\s.t.&g(w,b)=y_{i}(w^{T}x_i+b)-1\ge{0}\end{matrix}$

構造拉格朗日函數$L(w,b,a)=\frac{1}{2}||w||^2+\sum_{i=1}^{N}a_i[1-y_i(w^{T}x+b)]$,其中$a_i\ge{0}$

根據我的另一篇博文KKT條件我們知道:

$\left.\begin{matrix}L(w,b,a)=\frac{1}{2}||w||^2+\sum_{i=1}^{N}a_i[1-y_i(w^{T}x+b)]\\a_i\ge{0}\\1-y_i(w^{T}x+b)\le{0}\end{matrix}\right\}$=>$\left\{\begin{matrix}\min_{w,b}f(w,b)=\min_{w,b}\max_{a}L(w,b,a)=\max_a\min_{w,b}L(w,b,a)=f(w^*,b^*)\\a_i[1-y_i(w^{*T}x+b^*)]=0\\\frac{\partial{L(w,b,a)}}{\partial{w^*}}=0\\\frac{\partial{L(w,b,a)}}{\partial{b^*}}=0\end{matrix}\right.$

\begin{equation}a_i[1-y_i(w^{*T}x+b^*)]=0\label{e}\end{equation}

\begin{equation}\frac{\partial{L(w,b,a)}}{\partial{w^*}}=0\label{pw}\end{equation}

\begin{equation}\frac{\partial{L(w,b,a)}}{\partial{b^*}}=0\label{pb}\end{equation}

由\eqref{pw}得\begin{equation}w-\sum_{i=1}^{N}a_{i}y_{i}x_{i}=0\label{w}\end{equation}

由\eqref{pb}得\begin{equation}\sum_{i=1}^{N}a_{i}y_i=0\label{b}\end{equation}

由\eqref{w}和\eqref{b}得$L(w,b,a)=\sum_{i=1}^{N}a_{i}-\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}a_{i}a_{j}y_{i}y_{j}x_{i}^{T}x_j$

$\therefore$ \begin{equation}f(w^*,b^*)=\max_a\min_{w,b}L(w,b,a)=\max_a{\sum_{i=1}^{N}\sum_{j=1}^{N}a_{i}a_{j}y_{i}y_{j}\left \langle x_{i}^{T},x_j \right \rangle}\label{svm}\end{equation}

其中$\left \langle x_i^T,x\right \rangle$表示$x_i^T$和$x$的內積。

此時SVM的優化問題已轉化為\eqref{svm},待求參數是$a_i$,這個優化問題如何求解留到文章最后一部分講解。

我們把落在分類平面上的點(即滿足$y_{i}(w^{T}x_i+b)=0$)稱為支持向量,由\eqref{e}得當$x_i$不是支持向量時$a_i=0$

由\eqref{w}得到分類決策函數\begin{equation}f(w,b)=w^{T}x+b=(\sum_{i=1}^{N}a_{i}y_{i}x_{i})^{T}+b=\sum_{i=1}^{N}a_{i}y_{i}\left \langle x_i^T,x\right \rangle+b\label{sign}\end{equation}

其中$x_i$是支持向量,因為對於非支持向量$a_i=0$,即$\sum_{i=1}^{N}a_{i}y_{i}\left \langle x_i^T,x\right \rangle=0$。

核技巧

      圖3.線性不可分

考慮圖3線性不可分的情況,兩個正樣本分別是(1,1)和(2,2),兩個負樣本分別是(1,2)和(2,1)。這種情況下分類平面是個如圖3所示的曲面。

但是采用某種方法把2維空間中的點映射到5維空間后,就變得線性可分,關鍵看選用什么樣的映射函數。比如我們采用下面的映射函數:

$(x_1,x_2)\rightarrow(x_1,x_1^2,x_2,x_2^2,x_{1}x_2)$

這樣

$(1,1)\rightarrow(1,1,1,1,1)$

$(2,2)\rightarrow(4,4,4,4,4)$

$(1,2)\rightarrow(1,1,2,4,2)$

$(2,1)\rightarrow(2,4,1,1,2)$

令$A=(1,1,-1,-0.5-0.5)$,我們采用分類函數$f(X)=(A\cdot{X})^2$

這樣

$f(1,1,1,1,1)=0$

$f(4,4,4,4,4)=0$

$f(1,1,2,4,2)=9$

$f(2,4,1,1,2)=12.25$

 我們取f(x)=4就可以將正負樣本分開。

這里解釋一下我們為什么把$f(X)=(A\cdot{X})^2$叫做線性分類器,這不明明是帶了個平方嗎?有個約定:如果g(x)是線性分類器,那么我們把f(g(x))稱為廣義線性分類器。比如Logitic分類器就是廣義線性分類器,其分類函數是$g(x)=\frac{1}{1+e^{-\theta^{T}x}}$

回過頭來看SVM的分類決策函數$\sum_{i=1}^{N}a_{i}y_{i}\left \langle x_i^T,x\right \rangle+b$,當樣本點線性不可分時通過映射函數$\phi$將其映射到高維空間,$\sum_{i=1}^{N}a_{i}y_{i}\left \langle \phi(x_i^T),\phi(x)\right \rangle+b$。但是映射到高維后參數$a_i$也變成高維的,增加了計算量,這可怎么辦呢?其實核函數K還有一個性質,就是$K(x_i^T,x)=\left \langle \phi(x_i^T),\phi(x)\right \rangle=\phi(\left \langle x_i^T,x\right \rangle)$,即兩個數據映射到高維空間后再做內積等價於這兩個數據先在低維空間做內積然后再把內積映射到高維空間。

這樣SVM的分類決策函數\eqref{sign}就變成\begin{equation}\sum_{i=1}^{N}a_{i}y_{i}K(x_i^T,x)+b\label{sign_k}\end{equation}

要構造一個核函數並非易事,實踐中常用的核函數有:

  1. 多項式核函數$K(x_1,x_2)=(\left \langle x_1,x_2\right \rangle+R)^d$
  2. 高斯核函數$K(x_1,x_2)=exp(-\frac{||x_1-x_2||^2}{2\sigma^2})$

 噪音問題

訓練數據中會存在噪音,即正樣本不滿足$w^{T}x_i+b\ge{1}$,負樣本不滿足$w^{T}x_j+b\le{-1}$,此時的正負樣本都滿足:

$y_{i}(w^{T}x_i+b)\ge{1-\xi_i}$其中$\xi_i>0$稱為松馳變量。

$\xi_i$不能太大,即我們對噪音的容忍是有限度的,所以目標函數為

$\begin{matrix}\min&\frac{1}{2}||w||^2+c\sum_{i=1}^N\xi_i\\s.t.&\xi_i>0\\ & c>0\\ & y_{i}(w^{T}x_i+b)\ge{1-\xi_i}\end{matrix}$

其中c用來控制權重。

略去拉格朗日函數的構造及對偶問題的證明,這里直接給出結論:帶噪音的SVM轉化為如下優化問題

$\begin{matrix}\max_a&\sum_{i=1}^{N}a_i-\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}a_{i}a_{j}y_{i}y_{j}K(x_{i}^{T},x_j)\\s.t.&0\le{a_i}\le{c}\\&\sum_{i=1}^{N}a_{i}y_i=0\end{matrix}$

SMO算法

通過上文的推導,SVM轉換為只需要求$a_i$的一個優化問題。優化方法有很多,SVM采用的是SMO(sequential minimal optimixation,序列最小優化)算法。

對於優化問題$\min_{a}f(a_1,a_2\ldots,a_N)$,SMO每次只優化一個變量$a_i$,固定其他變量$a_j(j\ne{i})$。基本流程如下

$k=0\\while(k<MaxIteration)\{\\\;\;\;\;for(i=1,i\le{N},i++)\{\\\;\;\;\;\;\;\;\;a_i=arg_{a}\max{f^{(k)}(a_1,a_2\ldots,a,a_j\ldots,a_N)}\\\;\;\;\;\}\\\;\;\;\;if(f^{(k)}\ge{f^{(k-1)})})\{\\\;\;\;\;\;\;\;\;break\\\;\;\;\;\}\\\;\;\;\;k++\\\}$

詳細步驟就不講了,如果要自己動手編碼實現的話可以參考JerryLead的博客。


免責聲明!

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



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