1. 程式人生 > >Support Vector Machine

Support Vector Machine

非線性約束條件下的最優化、KKT條件、拉格朗日對偶、最大間隔、最優下界、核函式等等

一個最優化問題通常有兩個最基本的因素:

1)目標函式,也就是你希望什麼東西的什麼指標達到最好;

2)優化物件,你期望通過改變哪些因素來使你的目標函式達到最優。

線上性SVM演算法中,目標函式顯然就是那個“分類間隔”,而優化物件則是決策面

決策面

簡單的來看二維空間裡:

æºå¨å­¦ä¹ å®ææç¨ï¼å«ï¼ï¼æ¯æåéæºåçç¯ä¹ææ线æ§SVM

直線A、B可表示為:y=ax+b (2.1)

現在我們做個小小的改變,讓原來的x軸變成x_1軸,y變成x_2軸,於是公式(2.1)中的直線方程會變成下面的樣子

x_2=ax_1+b (2.2)

ax_1+(-1)x_2+b=0 (2.3)

公式(2.3)的向量形式可以寫成

[a,-1]\left[ \begin{array}{c}x_1\\x_2\end{array} \right] +b=0 (2.4)

\boldsymbol{\omega}=[\omega_1,\omega_2]^T

\boldsymbol{x}=[x_1,x_2]^T則2.4式可表示為\boldsymbol{\omega}^T\boldsymbol{x}+\gamma=0 (2.5)一般說W,X均指列向量)

æºå¨å­¦ä¹ å®ææç¨ï¼å«ï¼ï¼æ¯æåéæºåçç¯ä¹ææ线æ§SVM

向量\boldsymbol{\omega}=[\omega_1,\omega_2]^T跟直線\boldsymbol{\omega}^T\boldsymbol{x}+\gamma=0 是相互垂直的,也就是說\boldsymbol{\omega}=[\omega_1,\omega_2]^T控制了直線的方向。\gamma就是截距,它控制了直線的位置。

分類間隔

間隔的大小實際上就是支援向量對應的樣本點到決策面的距離的二倍

d = \frac{|\boldsymbol{\omega}^T\boldsymbol{x}+\gamma|}{||\boldsymbol{\omega}||}    (2.6)  ,      ||\boldsymbol{\omega}||是向量\boldsymbol{\omega}的模,表示在空間中向量的長度。追求W的最大化也就是尋找d的最大化。

約束條件

(1)並不是所有的方向都存在能夠實現100%正確分類的決策面,我們如何判斷一條直線是否能夠將所有的樣本點都正確分類?

為每個樣本點\boldsymbol{x}_i加上一個類別標籤y_i

y_i = \left\{\begin{array}{ll}+1 & \textrm{for blue points}\\-1 & \textrm{for red points}\end{array}\right. (2.7)

?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?

如果我們的決策面方程能夠完全正確地對圖2中的樣本點進行分類,就會滿足下面的公式

\left\{\begin{array}{ll} \boldsymbol{\omega}^T\boldsymbol{x}_i+\gamma>0 & \textrm{for~~} y_i=1\\\boldsymbol{\omega}^T\boldsymbol{x}_i+\gamma<0 & \textrm{for~~} y_i=-1\end{array}\right. (2.8)

?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?​​​​​​​?

\left\{\begin{array}{ll} (\boldsymbol{\omega}^T\boldsymbol{x}_i+\gamma)/||\boldsymbol{\omega}||\geq d & \forall~ y_i=1\\(\boldsymbol{\omega}^T\boldsymbol{x}_i+\gamma)/||\boldsymbol{\omega}||\leq -d & \forall~y_i=-1\end{array}\right.(2.9)

左右兩邊除上d,就可得到:

\left\{\begin{array}{ll} \boldsymbol{\omega}_d^T\boldsymbol{x}_i+\gamma_d\geq 1 & \textrm{for~~} y_i=1\\\boldsymbol{\omega}_d^T\boldsymbol{x}_i+\gamma_d\leq -1 & \textrm{for~~} y_i=-1\end{array}\right. (2.10) 

其中    \boldsymbol{\omega}_d = \frac{\boldsymbol{\omega}}{||\boldsymbol{\omega}||d},~~ \gamma_d = \frac{\gamma}{||\boldsymbol{\omega}||d}