1. 程式人生 > >支持向量機SVM介紹

支持向量機SVM介紹

alpha ola style left 引入 wid height 限制 17.

SVM為了達到更好的泛化效果,會構建具有"max-margin"的分類器(如下圖所示),即最大化所有類裏面距離超平面最近的點到超平面的距離,數學公式表示為$$\max\limits_{\vec{w},b}Margin(\vec{w},b)=\max\limits_{\vec{w},b}\min\limits_{i=1,2,\cdots,n}\frac{1}{\lVert{\vec{w}}\rVert_2}y_i(\vec{w}\cdot\vec{x}_i+b),\text{ }y_i\in\{-1,1\}$$

技術分享圖片

Linear SVM

上述公式可以改寫為如下形式$$\min\limits_{\vec{w},b}\frac{1}{2}\lVert{\vec{w}}\rVert_2^2,\text{ subject to } y_i(\vec{w}\cdot\vec{x}_i+b)\geq{1} \text{ for all }i$$

這是一個典型的二次規劃問題,並且僅當兩個類是線性可分時才有解。可以使用拉格朗日乘數法進行求解,定義$$L(\vec{w},b,\alpha_1,\cdots,\alpha_n)=\frac{1}{2}\lVert{\vec{w}}\rVert_2^2+\sum_{i=1}^n\alpha_i[1-y_i(\vec{w}\cdot\vec{x}_i+b)]$$則SVM的求解問題轉換為$\min\limits_{\vec{w},b}[\max\limits_{\alpha_1,\cdots,\alpha_n\geq{0}}L(\vec{w},b,\alpha_1,\cdots,\alpha_n)]$,基於SVM問題的強對偶性,下列等式成立:$$\min\limits_{\vec{w},b}[\max\limits_{\alpha_1,\cdots,\alpha_n\geq{0}}L(\vec{w},b,\alpha_1,\cdots,\alpha_n)]=\max\limits_{\alpha_1,\cdots,\alpha_n\geq{0}}[\min\limits_{\vec{w},b}L(\vec{w},b,\alpha_1,\cdots,\alpha_n)]$$針對上式等號右邊的極值問題,首先有$$\frac{\partial{L}}{\partial{\vec{w}}}=0 \Rightarrow \vec{w}=\sum_{i=1}^n\alpha_iy_i\vec{x}_i \text{, }\frac{\partial{L}}{\partial{b}}=0 \Rightarrow \sum_{i=1}^ny_i\alpha_i=0$$將結果帶入$L$中可以得到SVM的對偶形式:$$\max\limits_{\alpha_1,\cdots,\alpha_n\geq{0},\sum_{i=1}^ny_i\alpha_i=0}(\sum\limits_{i=1}^n\alpha_i-\frac{1}{2}\sum\limits_{i=1}^n\sum\limits_{j=1}^n\alpha_i\alpha_jy_iy_j\vec{x}_i\cdot\vec{x}_j)$$針對$b$的求解,可以利用KKT條件:$\alpha_i[1-y_i(\vec{w}\cdot\vec{x}_i+b)]=0\text{ for }i=1,2,\cdots,n$,即取任一不為0的$\alpha_i$,令$1-y_i(\vec{w}\cdot\vec{x}_i+b)=0$

最終求得的分類器為$g_{svm}(\vec{x})=sign(\vec{w}\cdot\vec{x}+b)\text{, with }\vec{w}=\sum_{i=1}^n\alpha_iy_i\vec{x}_i$

Kernel SVM

上述的Linear SVM為線性分類器,因此引入核的概念擴展原始數據的維數,使其可以在原始數據空間上變為非線性分類器。核函數的優點是相比於直接進行特征映射可以很大程度上減少計算量,並且維數的擴展形式更加靈活,具體做法是將Linear SVM的對偶形式中兩個數據向量的相乘變為核函數的形式,即$$\max\limits_{\alpha_1,\cdots,\alpha_n\geq{0},\sum_{i=1}^ny_i\alpha_i=0}[\sum\limits_{i=1}^n\alpha_i-\frac{1}{2}\sum\limits_{i=1}^n\sum\limits_{j=1}^n\alpha_i\alpha_jy_iy_jK(\vec{x}_i,\vec{x}_j)]$$核函數$K$需要滿足以下性質:定義核函數矩陣$K$($K$中的元素$K_{ij}=K(\vec{x}_i,\vec{x}_j)$),則矩陣$K$需為半正定對稱矩陣。常用的核函數主要有以下兩種:

  1. 多項式核函數$K(\vec{x}_i,\vec{x}_j)=(r\vec{x}_i\cdot\vec{x}_j+\epsilon)^d\text{, with }r>0,d\text{ is positive integer},\epsilon\geq{0}$
  2. 高斯核函數$K(\vec{x}_i,\vec{x}_j)=e^{-\gamma\lVert\vec{x}_i-\vec{x}_j\rVert_2^2}\text{, with }\gamma>0$

針對$b$的求解,仍利用KKT條件,取任一不為0的$\alpha_i$,令$1-y_i(\sum_{k=1}^n\alpha_ky_kK(\vec{x}_k,\vec{x}_i)+b)=0$

最終求得的分類器為$g_{svm}(\vec{x})=sign(\sum_{i=1}^n\alpha_iy_iK(\vec{x}_i,\vec{x})+b)$

Soft-Margin SVM

Linear SVM僅當數據為線性可分時才有解,這就使得其實際應用有很大的限制,因此對它的原始公式進行一定程度的改進,使其對錯誤分類有一定程度的容忍度,具體公式如下:$$\min\limits_{\vec{w},b}(\frac{1}{2}\lVert{\vec{w}}\rVert_2^2+C\sum\limits_{i=1}^n\epsilon_i),\text{ subject to } y_i(\vec{w}\cdot\vec{x}_i+b)\geq{1-\epsilon_i},\epsilon_i\geq{0} \text{ for all }i$$上式中的C越小,對錯誤分類的容忍度就越高;當C趨於無窮大時就變為了Linear SVM的形式。仍使用拉格朗日乘數法以及SVM的強對偶性質,定義$$L(\vec{w},b,\epsilon_i,\alpha_i,\mu_i)=\frac{1}{2}\lVert{\vec{w}}\rVert_2^2+C\sum\limits_{i=1}^n\epsilon_i+\sum_{i=1}^n\alpha_i[1-\epsilon_i-y_i(\vec{w}\cdot\vec{x}_i+b)]-\sum\limits_{i=1}^n\mu_i\epsilon_i$$上式可變為求解$$\min\limits_{\vec{w},b,\epsilon_i}[\max\limits_{\alpha_i,\mu_i\geq{0}}L(\vec{w},b,\epsilon_i,\alpha_i,\mu_i)]=\max\limits_{\alpha_i,\mu_i\geq{0}}[\min\limits_{\vec{w},b,\epsilon_i}L(\vec{w},b,\epsilon_i,\alpha_i,\mu_i)]$$同樣令$\frac{\partial{L}}{\partial{\vec{w}}}=\frac{\partial{L}}{\partial{b}}=\frac{\partial{L}}{\partial{\epsilon_i}}=0$,則對偶問題可寫為$$\max\limits_{0\leq\alpha_i\leq{C},\sum_{i=1}^ny_i\alpha_i=0}(\sum\limits_{i=1}^n\alpha_i-\frac{1}{2}\sum\limits_{i=1}^n\sum\limits_{j=1}^n\alpha_i\alpha_jy_iy_j\vec{x}_i\cdot\vec{x}_j)$$同樣可以將$\vec{x}_i\cdot\vec{x}_j$替換為$K(\vec{x}_i,\vec{x}_j)$,在分類器中引入核函數,上述對偶問題的KKT條件為:$$\begin{cases} \alpha_i=0:\text{ the point away from the margin boundary with }\epsilon_i=0 \\ 0<\alpha_i<C:\text{ the point on the margin boundary with }\epsilon_i=0\text{ and }1-y_i(\sum_{k=1}^n\alpha_ky_kK(\vec{x}_k,\vec{x}_i)+b)=0 \\ \alpha_i=C:\text{ the point violate the margin boundary with }\epsilon_i>0(\text{the violate amount}) \end{cases}$$

技術分享圖片

最終求得的分類器為$g_{svm}(\vec{x})=sign(\sum_{i=1}^n\alpha_iy_iK(\vec{x}_i,\vec{x})+b)$

Unconstraint Soft-Margin and SVR

Soft-Margin SVM還可以改寫成以下形式:$$\min\limits_{\vec{w},b}[\underbrace{\frac{1}{2C}\lVert{\vec{w}}\rVert_2^2}_\text{Regularization Term}+\sum\limits_{i=1}^n\underbrace{\max(1-y_i(\vec{w}\cdot\vec{x}_i+b),0)}_\text{Loss Function}]$$若在訓練中對每個樣本分配不同的權重,則上式變為$$\min\limits_{\vec{w},b}[\frac{1}{2C}\lVert{\vec{w}}\rVert_2^2+\sum\limits_{i=1}^ns_i\max(1-y_i(\vec{w}\cdot\vec{x}_i+b),0)]$$求解過程與不加權重的Soft-Margin SVM是一致的,只不過需要將$0\leq\alpha_i\leq{C}$變為$0\leq\alpha_i\leq{Cs_i}$

受上述形式的啟發,支持向量機也可用於回歸問題(SVR),定義$\epsilon\text{-insensitive loss function }err(y,\hat{y})=\max(\lvert{y-\hat{y}}\rvert-\epsilon,0)$,則SVR為L2正則化的回歸問題:$$\min\limits_{\vec{w},b}[\sum\limits_{i=1}^nerr(y_i,\hat{y}_i)+\frac{1}{2C}\lVert{\vec{w}}\rVert_2^2]=\min\limits_{\vec{w},b}[\sum\limits_{i=1}^n\max(\lvert{y_i-(\vec{w}\cdot\vec{x}_i+b)}\rvert-\epsilon,0)+\frac{1}{2C}\lVert{\vec{w}}\rVert_2^2]$$具體求解思路和Soft-Margin SVM基本相同,這裏就不再詳細敘述了。

支持向量機SVM介紹