SVM推導是從討論最優超平面開始的,即爲了獲得一個可以劃分不一樣超平面的面,即公式1:
\begin{equation}w^Tx+b=0 \tag{1} \end{equation}
這個公式怎麼來的,其實就是基於2維推導過來的,當二維圖像時,也就是熟悉的x,y座標系。咱們將一條線的函數公式定義爲\(Ax+By+C=0\),其法向量爲(A,B),而平面上任意一點(x0,y0)到該線的距離爲[參考]:式子2\[d = \frac{|Ax_0+By_0+C|}{\sqrt{A^2+B^2}} \tag{2}\]
類比獲得,多維平面上的某個「線」,其公式爲\(Ax+By+Cz+D=0\),能夠看出就是一個向量\(w = [A,B,C]\)與另外一個向量\(X = [x,y,z]\)之間的內積加上一個常量D。也就是上述式子1。因此,SVM中某點到該「線」的距離公式從式子2類比獲得爲,式子3:\[r = \frac{|w^Tx+b|}{||w||} \tag{3}\]
其法向量爲\(w\)。html
ps:下面參考自周志華老師的《機器學習》,支持向量機部分。app
爲了方便,則將此超平面記爲\((w,b)\)。咱們取二分類樣本,即樣本標籤爲\(\{+1,-1\}\)。咱們但願超平面可以正確分類,也就是對於\(y_i = +1\)的樣本,\(w^Tx_i+b>0\);而對於\(y_i = -1\)的樣本,\(w^Tx_i+b<0\)。
ps:這裏須要接着解釋下爲何間隔取1,此部分資料在Andrew Ng的網易公開課講義部分有說道,後續有空我過來補齊。
而爲了得到最優的超平面,咱們假設離該平面最近的點到該平面距離至少爲1.則知足下面式子4:
\[\begin{cases} w^Tx_i+b \geq +1, y_i = +1\\ w^Tx_i+b \leq -1, y_i = -1 \end{cases} \tag{4}\]
因此兩個不一樣類別之間最小的距離爲,式子5:
\[r = \frac{2}{||w||} \tag{5}\]
因此式子5,也被稱爲"間隔"(margin)。
機器學習
若是將該間隔最大化,那麼也就是找到了最優超平面,由於該超平面就是中間那條線,而圖上虛線上的正負點,就是所謂的支持向量。即只有這些點纔對最優超平面的選取有關。
因此,問題就轉換成了求取下面方程式的問題,式子6:
\[\begin{cases} max_{w,b} \quad \frac{2}{||w||}\\ s.t.\quad y_i(w^Tx_i+b) \geq 1, \quad i=1,2,...,m \end{cases} \tag{6}\]
能夠看到所謂最大化一個分數,其分子不變,也就是最小化一個分母便可,即式子6等同於式子7:
\[\begin{cases} min_{w,b} \quad \frac{1}{2}||w||^2\\ s.t. \quad y_i(w^Tx_i+b) \geq 1, \quad i = 1,2,...,m \end{cases} \tag{7}\]函數
式子7,是一個凸二次規劃問題,也就是其必定會有最值存在,爲了更快的進行求解,須要用到拉格朗日乘子方法。其實拉格朗日乘子法,在《同濟版高數書 第9章多元函數微分法及其應用 第8節多元函數的極值及其求法》上有簡單介紹,不過其並沒說到KKT等狀況,這裏仍是以網上別人博客做爲參考[2,3]:學習
- 拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush-Kuhn-Tucker)條件是求解約束優化問題的重要方法,在有等式約束時使用拉格朗日乘子法,在有不等約束時使用KKT條件。前提是:只有當目標函數爲凸函數時,使用這兩種方法才保證求得的是最優解[2]
如博文[3]所說,通常最優化問題,一般爲3種,:
(1)無約束優化問題,:
\[min \quad f(x) \tag{8}\]大數據
(2) 等式約束優化問題,假設有n個等式約束:
\[\begin{cases} min \quad f(x)\\ s.t. \quad h_i(x) = 0;i =1,...,n \end{cases} \tag{9}\]
(3)不等式約束優化問題,假設有n個等式約束,m個不等式約束:
\[\begin{cases} min \quad f(x),\\ s.t. \quad h_i(x) = 0; i=1,...,n\\ \qquad\quad g_i(x) \leq 0; j = 1,...,m \end{cases} \tag{10}\]優化
- 對於第(1)類的優化問題,經常使用的方法就是Fermat定理,即便用求取\(f(x)\)的導數,而後令其爲零,能夠求得候選最優值,再在這些候選值中驗證;若是是凸函數,能夠保證是最優解[3] 。
即直接求其導數,而後求得導數爲0的解便可。spa
- 對於第(2)類的優化問題,經常使用的方法就是拉格朗日乘子法(Lagrange Multiplier) ,即把等式約束h_i(x)用一個係數與f(x)寫爲一個式子,稱爲拉格朗日函數,而係數稱爲拉格朗日乘子。經過拉格朗日函數對各個變量求導,令其爲零,能夠求得候選值集合,而後驗證求得最優值 [3]。
即先將函數\(f(x)\)與其約束函數\(h_i(x)\)變換成一個單一函數,即:
\[L(x,\lambda) = f(x)+\lambda h(x)\]詳細點說,就是:\[L(x,\lambda) = f(x)+\sum_{i=0}^n \lambda_ih_i(x)\] 而後基於這個函數對變量\(x\),\(\lambda\)求導,並將取值爲0的解帶入原問題中,比較哪一個值最小,從而獲得最優解。.net
- 對於第(3)類的優化問題,經常使用的方法就是KKT條件。一樣地,咱們把全部的等式、不等式約束與f(x)寫爲一個式子,也叫拉格朗日函數,係數也稱拉格朗日乘子,經過一些條件,能夠求出最優值的必要條件,這個條件稱爲KKT條件 [3]。
如上同樣,只是函數變成了:\[L(x,a,b) =f(x)+ \sum_{i=0}^na_ih_i(x)+\sum_{i=0}^mb_ig_i(x) \tag{11}\]
而後針對每一個變量參數求導,經過聯合全部的求導式子,將其等於0,求得極值點,再將極值點帶入,求得最值點便可。而KKT中有個要求即\(b_ig_i(x)=0\),但由於\(g_i(x) \leq 0\),因此要麼\(b_i = 0\),要麼\(g_i(x)=0\)。而這也和SVM中的支持向量有很密切的關係。htm
能夠看出式子7能夠經過KKT求解,添加拉格朗日乘子\(\alpha_i \geq 0\)寫成拉格朗日函數爲,式子12:
\[L(w,b,\alpha)=\frac{1}{2}||w||^2+\sum_{i=1}^m \alpha_i(1-y_i(w^Tx_i+b)) \tag{12}\]
其中\(\alpha_i \geq 0\),這樣就保證了後面一項必定小於0。其中\[\alpha = (\alpha_1;\alpha_2;...;\alpha_m) \tag{13}\]將\(L(w,b,\alpha)\)對\(w\),\(b\)進行求偏導得,式子14,式子15:
\[\begin{cases} w=\sum_{i=1}^m \alpha_i y_i x_i \tag{14,15}\\ 0 = \sum_{i=1}^{m}\alpha_i y_i \end{cases}\]
將上述式子14帶入\(L(w,b,\alpha)\),將\(w\),\(b\)消去,再考慮式子15,得以下對偶問題, 式16:
\[\begin{cases} max_\alpha \quad \sum_{i=1}^m\alpha_i - \frac{1}{2} \sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_j y_i y_j x_i^T x_j \\ s.t. \qquad \sum_{i=1}^m \alpha_i y_i =0, \\ \qquad \qquad \alpha_i \geq 0, i=1,2,...,m \end{cases} \tag{16}\]
在求得\(\alpha\)向量時,則經過式子14,便可獲得\(w\),從而帶入原式子,獲得,式17:
\[\begin{eqnarray}f(x,y) &=&w^Tx+b\\ &=&\sum_{i=1}^m \alpha_i y_i x_i^Tx+b \end{eqnarray} \]
這裏的拉格朗日乘子就是\(\alpha\),其中每個變量\(\alpha_i\)都對應着一個樣本\((x_i,y_i)\),且式子7中還有不等式存在,按照以前KKT部分說的,要求\((L(x,a,b))\)不等式部分等於0,即\(\alpha_i(y_if(x_i) - 1) = 0\),則要求聯合一塊兒,獲得以下約束:
\[\begin{cases} \alpha_i \geq 0; \\ y_if(x_i) -1 \geq 0;\\ \alpha_i(y_if(x_i) - 1) = 0 \end{cases} \tag{18}\]
因此對於任意訓練樣本\((x_i,y_i)\)總有\(\alpha_i = 0\)或者\(y_if(x_i)=1\).若是當前\(a_i=0\),那麼該式在式17中則會不存在,而若是有\(\alpha_i \geq 0\)那麼必定會有\(y_if(x_i)=1\),即對應的這個樣本恰好位於最大間隔邊界上,是一個支持向量。即SVM的一個性質:當訓練完成後,大部分訓練樣本無需保留,只要保留支持向量便可,並且模型也只與支持向量有關。
由於這是一個二次規劃問題,並且模型的訓練速度正比於訓練樣本數,因此不適合超大數據集,並且中間會有一堆的開銷,爲了解決這種問題,經過問題自己的特性,有如SMO等高效方法來進行求解。(待更新)
對於線性不可分的樣本集合來講,在低維空間中,是沒法將其區分的。並且若是原始樣本的特徵維度是有限維,那麼必定存在某個高維,可以將其線性區分,因此,升維,升到線性可分的維度,就能解決這個問題。
假設\(\phi(x)\)是\(x\)升維後的特徵向量,則在可以劃分超平面的特徵空間中模型表示爲:
\[f(x) = w^T\phi(x)+b \tag{5.1}\]
表示成式子7如:
\[\begin{cases} min_{w,b} \quad \frac{1}{2}||w||^2 \\ s.t. \qquad y_i(w^T\phi(x_i)+b) \geq1, i = 1,2,...,m \end{cases} \tag{5.2}\]
其對偶問題:
\[\begin{cases} max_\alpha\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\phi(x_i)^T\alpha(x_j) \\s.t. \qquad \sum_{i=1}^m\alpha_iy_i=0,\\\qquad\quad\alpha_i \geq 0,i = 1,2,..,m \end{cases} \tag{5.3}\]
這樣就將問題轉換到了求高維特徵的內積問題,但是若是這時候的特徵空間維度過高,那麼內積的計算都是很困難的。因此若是可以有這樣一類函數:
\[\kappa(x_i,x_j) = \quad<\phi(x_i),\phi(x_j)>\quad= \phi(x_i)^T\phi(x_j) \tag{5.4}\]
即但願找到一個函數,使得\(x_i\)與\(x_j\)在特徵空間的內積就等於他們在原始樣本空間經過升維獲得的內積。這樣就免去了計算高維甚至無窮維度的問題,式子5.3重寫成:
\[\begin{cases} max_\alpha\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\kappa(x_i,x_j) \\s.t. \qquad \sum_{i=1}^m\alpha_iy_i=0,\\\qquad\quad\alpha_i \geq 0,i = 1,2,..,m \end{cases} \tag{5.5}\]
求解後:
\[\begin{eqnarray}f(x,y) &=&w^Tx+b\\ &=&\sum_{i=1}^m \alpha_i y_i \phi(x_i)^T\phi(x)+b\\ &=&\sum_{i=1}^m \alpha_i y_i \kappa(x_i,x)+b \end{eqnarray} \]
(待續)
如前面說的,一直假定訓練樣本在樣本空間或者特徵空間中可以達到線性可分,但是現實問題老是更復雜的,也很難說找到合適的核函數來讓訓練樣本在特徵空間中線性可分,即便找到了,也難保這個線性可分的結果不是過擬合形成的。因此,由此那麼就放寬條件,容許一部分樣本是分類錯誤的,好比:
2017/03/08 第一次修改!