1. 程式人生 > >線性可分支援向量機

線性可分支援向量機

我們知道兩類樣本點其實是有很多分割超平面的,那麼哪條最優呢?若兩個集合有部分相交,那麼又如何定義超平面使得兩個集合“儘量”分開呢?
現在就從這兩個問題入手來解決SVM分類器的目標函式是什麼。假如有正例和負例兩類樣本點,現在就要去作一條分割線,但是這些樣本的地位並不完全一樣,距離直線最近的樣本,算出它們離直線的距離,如果兩邊的不相等,那麼我們總可以通過移動直線來使得樣本到直線的最短距離相等。
我們知道直線的截距式為:y=kx+b,如果換成向量就為:y=\vec{w}\vec{x}+\vec{b},而線方程的一般式為AX+BY+C=0時,點到直線的距離為:

                                                                           d = \ frac {\ left |  AX_ {0} + BY_ {0} + C \ right |} {\ sqrt {A ^ {2} + B ^ {2}}}

其實這個東西可以這樣來看待,我們知道垂直直線的斜率方向其實就是(A,B)這樣一個向量,所以對於這絕對值而言,如果樣本點位於向量的正方向就是正數,位於負向的話就是一個負數。設現在不考慮正負,因此把絕對值去掉,那麼就等價於
現在就等價於W=(A,B)中,X=(x_{0},y_{0})^{T}b=\frac{C}{{\sqrt{A^{2}+B^{2}}}}。如果W已經是左輪歸一化的了,那就直接把樣本點帶到方程當中,如果是正數,那它就位於正半區,它的距離是幾,負數就位於負半區,然後距離是幾,只要瓦特是歸一化過的。
現在將所有樣本點都帶入求距離,假設有ñ個樣本點,那就可以求出ñ個距離來,這ñ個距離總有一個最小值。現在把樣本點比作炸藥包,現在需要畫一條直線離這些炸藥包最遠,我們希望這些線離炸藥包越遠越好,離得最近的那個炸藥包最遠。
我們現在有一條直線w_{1}x+b_{1}

,然後把xi這個樣本點帶進去求一個距離,我們希望遍歷所有可行的線,也就是把(w_{1},b_{1})(w_{2},b_{2})……(w_{n},b_{n})都帶進去能夠使得max(j)min(i)(w_{j}x_{i}+b_{j})取最大。哪個(w,b)帶進去能夠使得取最大,那麼求出來的w *和b *的就是最好的分割超平面.min(i)(w_{j}x_{i}+b_{j})是對於某一條直線來說的,max(j)(w_{j}x_{i}+b_{j})其實是對所有的直線作遍歷,相當於對於所有的可行直線求一下樣本到直線最小距離的最大值。但這只是我們的最初想法,這個想法只是中看不中用的,因為雖然樣本是有窮的,但是線是無窮的,我們總能細分出很多條線。
首先來說一下數學記號:假設給定一個特徵空間上的訓練資料集T=\left \{ (x_{1},y_{1})......(x_{n},y_{n}) \right \}其中xi為實數,有可能是ñ維的向量,yi只能取+1或-1,是標量,要麼是正例,要麼是負例。
給定線性可分訓練資料集,通過間隔最大化得到分離超平面為y(x)=w^{T}\varphi (x)+b
,相應的分類決策函式f(x)=sing(w^{T}\varphi (x)+b)該決策函式稱為線性可分支援向量機。\varphi (x)是某個確定的特徵空間轉換函式,它的作用是將x對映到更高的維度。最簡單的就是\varphi (x).我們現在就把它看作是一個事先可以控制的某一個特徵的對映函式。下面就來將求解分離超平面的問題等價為求解相應的凸二次規劃問題。
根據題設y(x)=w^{T}\varphi (x)+b有:
y(xi)> 0 <=> yi = + 1,估計值y(xi)是正的就可以判定這個樣本是正例,反過來如果實際值是正的,我們就希望估計值y(xi)是正的,因此這是一個等價關係否則為負例<=>yi* y(xi)> 0恆成立現在將w,b等比例縮放(即歸一化)得到:                                                                                                                      \frac{y_{i}y(x_{i})}{\left \| w\right \|}=\frac{y_{i}(w^{T}\varphi(x_{i})+b)}{\left \| w\right \|}

\frac{w^{T}\varphi(x_{i})+b}{\left \| w\right \|}表示的是樣本點到直線的幾何距離,如果是正的yi就為正,負的yi就為負,不管怎麼\frac{y_{i}(w^{T}\varphi(x_{i})+b)}{\left \| w\right \|}(幾何距離乘上它的類別)都是大於零的。現在就是要求對於所有的樣本點來講求\frac{y_{i}(w^{T}\varphi(x_{i})+b)}{\left \| w\right \|}的最小值,再遍歷所有的w和b,求最大值,讓距離線的最小值取最大,因此得到目標函式:

                                                     \arg max(w,b)\left \{ \frac{1}{\left \| w \right \|} min(i)(\frac{y_{i}(w^{T}\varphi(x_{i})+b)}{\left \| w\right \|})\right \}

。由於我們知道y_{i}(w^{T}\varphi(x_{i})+b)\geq 1,就是說樣本點到直線的最小几何距離為1,因此求最小值就是1,原問題就轉化為了求\frac{1}{\left \| w \right \|}的最大值\Rightarrow \arg min(\left \| w \right \|)\Rightarrow \arg min(\left \| w \right \|^{2}),所以最終就得到了目標數:min(w,b)\frac{\left \|w \right \|^{2}}{2},約束條件是y_{i}(w^{T}\varphi(x_{i})+b)\geq 1.w和b都是仿射(線性)的,目標函式是二次的。
舉例:給定三個資料點:正例點x_{1}=(3,3)^{T}x_{2}=(4,3)^{T},負例點x_{3}=(1,1)^{T},求線性可分支援向量機。給定目標函式:

                                                        min(a)\frac{1}{2}\sum_{i}\sum_{j}a_{i}a_{j}y_{i}y_{j}(x_{i}x_{j})-\sum a_{i}

除了a3是負例,其他都是正例,所以條件才是這個。所以現在不妨讓a3=a1+a2然後回代過去就得到了關於a1,a2最多是二次的目標函式。

因此怎麼樣求那個支撐向量呢?不等於零的那個係數所對應的那個樣本點就是支撐向量。