數據挖掘入門系列教程(八點五)之SVM介紹以及從零開始推導公式

仍是老規矩,這一篇博客是對SVM進行介紹,下一篇博客就是使用SVM進行具體的使用。html

SVM介紹

首先介紹SVM是什麼,SVM(support vector machine)名爲支持向量機,又名支持向量網絡,是一個很是經典且高效的分類模型,是一種監督式的學習方法。算法

從名字上面來理解,SVM分爲兩個部分,"支持向量(support vector)"以及「機(machine)」。「machine」很簡單的理解,就是算法的意思,那麼「support vector」是什麼呢? 這個如今不進行介紹,待我慢慢的引入。網絡

線性分類

在介紹SVM以前,咱們得先對線性分類器進行介紹。下面是一個二維平面的的分類問題,紅色表明類別爲+1,藍色的表明類別是-1。中間的線就表明分割這兩類問題的超平面。對於分類問題來講,紅色和藍色的點都是數據集中已知的,而咱們的目的就是找到一個最適合的超平面,將數據進行分類。app

對於線性二分類模型,給定一組數據\(\left\{\left(\boldsymbol{x}_{1}, y_{1}\right),\left(\boldsymbol{x}_{2}, y_{2}\right), \ldots,\left(\boldsymbol{x}_{m}, y_{m}\right)\right\}\), 其中\(\boldsymbol{x}_{i} \in \mathbb{R}^{d}, y \in\{-1,1\}\),二分類任務的目標是但願從數據中學得一個假設函數\(h: \mathbb{R} \rightarrow\{-1,1\}\),使得\(h(x_i) = y_i\)機器學習

\[\begin{equation} h\left(\boldsymbol{x}_{i}\right)=\left\{\begin{array}{ll} 1 & 若 y_{i}=1 \\ -1 & 若 y_{i}=-1\\\tag{1} \end{array}\right. \end{equation} \]

二分類

那麼問題來了,咱們如何去尋找一個可以將\(y_i = \pm1\)劃分開的超平面?首先咱們能夠設超平面的函數是:函數

\[\begin{equation}f(\boldsymbol{x})=\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b\end{equation} \tag{2} \]

這裏有一個值得注意的點,下面的這個公式會在後面的推導中常常用到。學習

\[y_i^2 = 1 \tag{3} \]

儘管有不少的問題都是線性不可分的,可是呢,目前咱們只討論線性可分問題,到後面咱們再討論如何將非線性問題轉成線性問題。所以,暫時咱們不須要去糾結若是是非線性問題怎麼辦。優化

咱們能夠直觀的從圖中進行感覺,這樣的超平面是有多個的,那麼如何尋找一個最合適的超平面呢(也就是尋找最合適的\(w^{\mathrm{T}}\)\(b\))?接下來引出間隔的概念來尋找最合適的超平面。spa

間隔

以下圖所示,超平面\(\begin{equation}f(\boldsymbol{x})=\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b\end{equation}\),則\(x\)\(x_0\)到超平面的投影,\(x_0\)對應的類別是\(y_0\)\(w\)爲超平面的法向量,\(\gamma\)\(x_0\)到超平面的距離(帶正負號)。.net

距離

所以

\[\begin{aligned} & \gamma = \frac{f(x_0)}{||w||} \\ & 所以距離(不帶正負號)的爲: \\ & \tilde{\gamma} = y_0\gamma \end{aligned} \]

這樣咱們就推出了間隔的表達式\(\tilde{\gamma} = y_0\gamma\)。對於給定的數據集,咱們固然是但願數據集中的數據離超平面越遠越好,由於這樣所可以容忍的偏差也就越大。那麼這個遠如何來肯定呢?接下來讓咱們討論什麼是最大間隔分類器。

最大間隔分類器

若是咱們給定以下的數據集,那麼對於下面的數據集,哪一些最不可能分類成功呢?毋庸置疑的,就是最靠近\(\begin{equation}f(\boldsymbol{x})=\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b\end{equation}\)超平面的數據點(好比下圖中被紅色和黃色圈出來的點)。而被圈出來的點也就是被稱之爲「支持向量」。由於在模型中咱們考慮他們就能夠了。

最大分類間隔

首先咱們假設支持向量分佈在\(\omega^Tx+b=\pm 1\)超平面上,這裏取值爲1只是爲了方便,該值並不影響後面的優化結果。很顯然,支持向量到超平面\(\omega^Tx+b=\pm 1\)的距離爲\(\frac{1}{\|\omega\|}\)。兩側的距離加起來就是\(\frac{2}{\|\omega\|}\)。在前面咱們說過,咱們但願距離越大越好,也就是說\(\frac{2}{\|\omega\|}\)越大越好,同時對於數據集中數據的分佈知足\(y(\omega^T+b)x \geqslant 1\)。所以,咱們獲得了以下的優化問題:

\[\left \{ \begin{matrix} \begin{align*} & \max \quad \frac{2}{\Vert \omega \Vert} \\ & s.t. \quad y_i(\omega^T x_i + b) \geqslant 1 ,\quad i=1,2,...,m \end{align*} \end{matrix} \right. \tag{4} \]

爲了方便後續的推導,該優化問題等價於:

\[\left \{ \begin{matrix} \begin{align*} & \min \quad \frac{1}{2}\| \omega \|^2 \\ & s.t. \quad y_i(\omega^T x_i + b) \geqslant 1 ,\quad i=1,2,...,m \end{align*} \end{matrix} \right. \tag{5} \]

拉格朗日乘子法(Lagrange multipliers)

拉格朗日乘子法是一種尋找多元函數在一組約束下的極值的方法。經過引拉格朗日乘子,可將有 \(d\)個變量與\(k\)個約束條件的最優化問題轉化爲具備\(d+k\)個變量的無約束優化問題求解。下面讓咱們來進行推導。

拉格朗日乘子法推導

以下圖所示\(z=f(x,y)\)\(g(x,y)=0\),若是咱們須要求\(z\)\(g(x,y)\)條件下的極值。從幾何角度來講,咱們能夠畫出\(z = C_i\)的等高線,等高線與\(g(x,y)\)相切的點\((x_0,y_0)\)即爲極值點。以下圖所示:

拉格朗日乘子法推導由於在點\((x_0,y_0)\)取得極值,那麼,\(\nabla{f(x_0, y_0)} // \nabla{g(x_0, y_0)}\),也就是說此時梯度平行。也就是說\(({f_x}'(x_0,y_0),{f_y}'(x_0,y_0)) // ({g_x}'(x_0,y_0),{g_y}'(x_0,y_0))\)(這個是能夠證實的,可是在這裏就不證實了)所以有:

\[\frac{{f_x}'(x_0,y_0)}{{g_x}'(x_0,y_0)}=\frac{{f_y}'(x_0,y_0)}{{g_y}'(x_0,y_0)}=-\lambda_0 (\lambda_0能夠爲0) \]

即:

\[\left\{\begin{matrix} {f_x}'(x_0,y_0)+\lambda_0{g_x}'(x_0,y_0)=0\\ \\ {f_y}'(x_0,y_0)+\lambda_0{g_y}'(x_0,y_0)=0\\ \\ g(x,y)=0 \end{matrix}\right. \tag{6} \]

若是此時咱們有一個輔助函數\(L(x,y, \lambda)=f(x,y)+\lambda g(x,y)\),對其求偏導而後求極值點可得:

\[\left\{\begin{matrix} \frac{\partial L(x,y, \lambda)}{\partial x}={f_x}'(x,y)+\lambda{g_x}'(x,y)=0\\ \\ \frac{\partial L(x,y, \lambda)}{\partial y}={f_y}'(x,y)+\lambda{g_y}'(x,y)=0\\ \\ \frac{\partial L(x,y, \lambda)}{\partial \lambda}=g(x,y)=0 \end{matrix}\right. \tag{7} \]

顯而易見公式\((6)\)和公式\((7)\)相等。所以咱們對\(z = f(x,y)\)在條件\(f(x,y) = 0\)的條件下求極值\((x_0,y_0)\)的問題變成了求拉格朗日函數\(L(x,y, \lambda)=f(x,y)+\lambda g(x,y)\)偏導數爲0的解。

KKT條件(Karush-Kuhn-Tucker Conditions)

上面咱們討論的是在等式約束條件下求函數極值的問題(也就是\(g(x,y)=0\))but,若是若是是不等式條件下,咱們應該如何來使用拉格朗日函數來求解呢?下面引出KKT條件。

什麼是KKT條件呢?它是在知足一些有規則的條件下,一個非線性規劃問題能有最優化解法的一個必要條件。也就是說優化問題在最優值處必須知足KKT條件

例如咱們有如下優化問題:

\[\begin{equation}\begin{aligned} \min _{x} & f(x) \\ \text { s.t. } & h_{i}(x)=0 \quad(i=1, \ldots, m) \\ & g_{j}(x) \leqslant 0 \quad(j=1, \ldots, n) \end{aligned}\end{equation} \]

其拉格朗日函數爲:

\[\begin{equation}L(\boldsymbol{x}, \boldsymbol{\lambda}, \boldsymbol{\mu})=f(\boldsymbol{x})+\sum_{i=1}^{m} \lambda_{i} h_{i}(\boldsymbol{x})+\sum_{j=1}^{n} \mu_{j} g_{j}(\boldsymbol{x})\end{equation} \tag{8} \]

則其KKT條件爲:

\[\begin{equation}\left\{\begin{array}{l} g_{j}(\boldsymbol{x}) \leqslant 0 \\ \mu_{j} \geqslant 0 \\ \mu_{j} g_{j}(\boldsymbol{x})=0 \\ h(x) =0 \end{array}\right.\end{equation} \]

接下來讓咱們來解釋一下爲何是這樣的。(不必定是數學證實)。

下面咱們只討論\(f(x)\)在不等式\(g_i(x)<0\)條件下取\(min\)狀況。這裏可能有人會說,若是我要求\(max\)怎麼辦?很簡單那,將\(f(x)\)取反便可,就變成了求\(min\)的狀況。一樣對於\(g_i(x) > 0\)的狀況,咱們取反就變成了\(g^{'}(x) = -g_i(x) \lt 0\)

對於上述討論,有兩種狀況以下圖(圖中\(x^*\)表明極小值點):

  • 狀況一:極小值點\(x^*\)\(g_i(x)<0\)的區域內
  • 狀況二:極小值點\(x^*\)\(g_i(x)=0\)

首先咱們先討論狀況二,對於狀況二很好理解,此時的「不等式約束」變成了「等式約束」。那麼其在極值點知足如下條件:

\[h(x)=0\\ g(x)=0\\ \mu \geq 0 \tag{9} \]

\(h(x)=0,g(x)=0\)咱們很好理解,可是爲何咱們對\(\mu\)還要進行限制呢?而後爲何限制還爲\(\mu \geq 0\)呢?首先咱們來考慮一下\(f(x)\)\(g(x)\)\(x^*\)點的梯度方向(首先\(f(x)\)\(g(x)\)\(x^*\)點的梯度方向確定是平行的【梯度的方向表明函數值增長最快的方向】)。

  • 對於\(f(x)\)來講,等值線大小由中心到周圍逐漸增大,所以它的梯度方向指向可行域。爲圖中紅色的箭頭號。
  • 對於\(g(x)\)來講,梯度方向確定是指向大於0的一側,那麼就是要背離可行域。爲圖中黃色的箭頭號。

梯度方向

在前面拉格朗日乘子法中咱們有如下推導:

\[\frac{{f_x}'(x_0,y_0)}{{g_x}'(x_0,y_0)}=\frac{{f_y}'(x_0,y_0)}{{g_y}'(x_0,y_0)}=-\lambda_0 (\lambda_0能夠爲0) \]

又由於\(g(x)\)\(f(x)\)梯度方向相反,所以\(\lambda_0 \geq0\)。 所以對於\(公式9\)\(\mu \geq 0\)

接下來讓咱們來討論狀況一。狀況一是極小值$x^* \(在\)g(x)$的可行域中,所以,咱們能夠將其當作沒有不等式約束條件。那麼其在極值點知足如下條件:

\[h(x)=0\\ g(x) \leq 0\\ \mu =0 \]

對比兩種狀況:

  • 狀況一:\(\mu = 0,g(x) \leq 0\)
  • 狀況二:\(\mu \geq 0,g(x)=0\)

綜合狀況一和狀況二,可獲得KKT條件爲:

\[\begin{equation}\left\{\begin{array}{l} g_{j}(\boldsymbol{x}) \leqslant 0 \quad(主問題可行)\\ \mu_{j} \geqslant 0 \quad(對偶問題可行)\\ \mu_{j} g_{j}(\boldsymbol{x})=0 \quad(互補鬆弛)\\ h(x) =0 \end{array}\right.\end{equation} \]

拉格朗日乘子法對偶問題

對於以下優化問題:

\[\begin{equation}\begin{aligned} \min _{x} & f(x) \\ \text { s.t. } & h_{i}(x)=0 \quad(i=1, \ldots, m) \\ & g_{j}(x) \leqslant 0 \quad(j=1, \ldots, n) \end{aligned}\end{equation} \tag{10} \]

其拉格朗日函數爲:

\[\begin{equation} L(\boldsymbol{x}, \boldsymbol{\lambda}, \boldsymbol{\mu})=f(\boldsymbol{x})+\sum_{i=1}^{m} \lambda_{i} h_{i}(\boldsymbol{x})+\sum_{j=1}^{n} \mu_{j} g_{j}(\boldsymbol{x}) \\ s.t. \mu_j \ge0 \end{equation} \]

對於上述的優化問題(\(公式10\))咱們能夠等價於(下面的稱之爲主問題):

\[\begin{equation}\begin{aligned} \min _{x} \max _{\boldsymbol{\lambda}, \boldsymbol{\mu}} & \mathcal{L}(\boldsymbol{x}, \boldsymbol{\lambda}, \boldsymbol{\mu}) \\ \text { s.t. } & \mu_{i} \geq 0, \quad i=1,2, \ldots, m \end{aligned}\end{equation} \]

證實以下:

\[\begin{equation}\begin{aligned} & \min _{x} \max _{\boldsymbol{\lambda}, \boldsymbol{\mu}}\mathcal{L}(\boldsymbol{x}, \boldsymbol{\lambda}, \boldsymbol{\mu}) \\ =& \min _{\boldsymbol{x}}\left(f(\boldsymbol{x})+\max _{\boldsymbol{\lambda}, \boldsymbol{\mu}}\left(\sum_{i=1}^{m} \mu_{i} g_{i}(\boldsymbol{u})+\sum_{j=1}^{n} \lambda_{j} h_{j}(\boldsymbol{u})\right)\right) \\ =& \min _{\boldsymbol{x}}\left(f(\boldsymbol{x})+\left\{\begin{array}{l} 0 \text{ 若x知足約束}\\ \infty \text{不然} \end{array}\right)\right.\\ =& \min _{\boldsymbol{u}} f(\boldsymbol{u}) \end{aligned}\end{equation} \]

其中, 當\(g_i(x)\)不知足約束時, 即\(g_i(x)\gt0\), 咱們能夠令\(\mu=\infty\), 使得\(\mu_ig_i(x) = \infty\); 當\(h_j(x)\)不知足約束時, 即 \(h_j(x)\ne0\), 咱們能夠取\(\lambda_j = \infty\), 使得\(\lambda_jh_j(x) = \infty\)。當\(x\)知足約束時, 因爲 \(\mu_i\ge0\)\(g_i(x)\le0\), 則 \(\mu_ig_j(x)\le0\),所以咱們能夠取最大值0。 實際上也就是說若是\(公式10\)存在最優解,則最優解必須知足KKT條件。

對於\(公式10\)其對偶問題爲:

\[\begin{equation}\begin{aligned} \max _{\boldsymbol{\lambda}, \boldsymbol{\mu}} \min _{x}& \mathcal{L}(\boldsymbol{x}, \boldsymbol{\lambda}, \boldsymbol{\mu}) \\ \text { s.t. } & \mu_{i} \geq 0, \quad i=1,2, \ldots, m \end{aligned}\end{equation} \]

對偶問題是主問題的下界(他們兩個具備弱對偶性):

\[p^* = \min _{x} \max _{\boldsymbol{\lambda}, \boldsymbol{\mu}} \mathcal{L}(\boldsymbol{x}, \boldsymbol{\lambda}, \boldsymbol{\mu}) \ge \max _{\boldsymbol{\lambda}, \boldsymbol{\mu}} \min _{x} \mathcal{L}(\boldsymbol{x}, \boldsymbol{\lambda}, \boldsymbol{\mu}) = g^* \]

你能夠記憶成「廋死的駱駝比馬大」,還看到一個記憶方法爲「寧爲鳳尾不爲雞頭」。hhh

證實以下:

\[\max _{x} \min _{y} f(x, y) \leq \min _{y} \max _{x} f(x, y)\\ \text{let } g(x)=\min _{y} f(x, y)\\ \text{then }g(x) \leq f(x, y), \forall y\\ \therefore \max _{x} g(x) \leq \max _{x} f(x, y), \forall y\\ \therefore \max _{x} g(x) \leq \min _{y} \max _{x} f(x, y) \]

Slater 條件

前面咱們討論了弱對偶性,這裏咱們將進行討論Slater條件,可是爲何咱們要討論Slater條件呢?緣由很簡單,咱們想讓上面的弱對偶問題轉成強對偶問題。

Slater定理是說,當Slater條件成立且原問題是凸優化問題時,則強對偶性成立。這裏有幾個名詞值得注意:

  • 凸優化問題

    若是一個優化問題知足以下格式,咱們就稱該問題爲一個凸優化問題:

    \[\begin{array}{} \text{min}&f(x)\\ \text{s.t}&g_i(x)\le0,&i=1,...,m \\ \text{ }&h_i(x)=0,&i=1,...,p \end{array} \]

    其中\(f(x)\)是凸函數,不等式約束\(g(x)\)也是凸函數,等式約束\(h(x)\)是仿射函數。

    1. 凸函數是具備以下特性的一個定義在某個向量空間的凸子集\(C\)(區間)上的實值函數\(f\):對其定義域上任意兩點\(x_1,x_2\)總有\(f\left(\frac{x_{1}+x_{2}}{2}\right) \leq \frac{f\left(x_{1}\right)+f\left(x_{2}\right)}{2}\)

      一階凸函數

    2. 仿射函數

      仿射函數,即最高次數爲1的多項式函數。

  • 強對偶性

    弱對偶性是\(p* = \min _{x} \max _{\boldsymbol{\lambda}, \boldsymbol{\mu}} \mathcal{L}(\boldsymbol{x}, \boldsymbol{\lambda}, \boldsymbol{\mu}) \ge \max _{\boldsymbol{\lambda}, \boldsymbol{\mu}} \min _{x} \mathcal{L}(\boldsymbol{x}, \boldsymbol{\lambda}, \boldsymbol{\mu}) = g*\),也就是\(p^* \ge g^*\),則強對偶性是\(p^* = g^*\)

說了這麼多,那什麼是Slater條件呢?

  1. 原問題是凸優化問題
  2. 存在\(x\)使得\(g(x) \le0\)嚴格成立。(換句話說,就是存在\(x\)使得\(g(x) \lt0\)成立)

值得注意的是線性支持向量機知足Slater條件(由於\(\frac{1}{2} \boldsymbol{w}^{\top} \boldsymbol{w}\)\(1-y_{i}(w^Tx_i+b)\)均爲凸函數),也就是它知足強對偶性。

最大間隔分類器與拉格朗日乘子法

前面說了這麼多,實際上也就是爲這個地方作鋪墊。咱們能夠將最大間隔分類問題轉化成在KKT條件下的拉格朗日函數的極值問題,而後又由於其知足Slater條件,咱們能夠轉化成強對偶問題。

在最大間隔分類中,咱們獲得以下結論:

\[\left \{ \begin{matrix} \begin{align*} & \min \quad \frac{1}{2}\| \omega \|^2 \\ & s.t. \quad y_i(\omega^T x_i + b) \geqslant 1 ,\quad i=1,2,...,m \end{align*} \end{matrix} \right. \tag{11} \]

其拉格朗日函數爲:

\[\begin{equation} \mathcal{L}(\boldsymbol{w}, b, \boldsymbol{\alpha}):=\frac{1}{2} \boldsymbol{w}^{\top} \boldsymbol{w}+\sum_{i=1}^{m} \alpha_{i}\left(1-y_{i}\left(\boldsymbol{w}^{\top} \boldsymbol{x}_{i}+b\right)\right) \\ s.t. \alpha_i \ge0,\quad i=1,2,...,m \end{equation} \]

其對偶問題(知足強對偶性)爲:

\[\begin{equation}\begin{aligned} &\max _{\alpha} \min _{\boldsymbol{w}, b}\left(\frac{1}{2} \boldsymbol{w}^{\top} \boldsymbol{w}+\sum_{i=1}^{m} \alpha_{i}\left(1-y_{i}\left(\boldsymbol{w}^{\top} \boldsymbol{x}_{i}+b\right)\right)\right)\\ &\text { s.t. } \quad \alpha_{i} \geq 0, \quad i=1,2, \ldots, m \end{aligned}\end{equation}\tag{12} \]

而後咱們來求:

\[\begin{equation}\begin{aligned} &\min _{\boldsymbol{w}, b}\left( \frac{1}{2} \boldsymbol{w}^{\top} \boldsymbol{w}+\sum_{i=1}^{m} \alpha_{i}\left(1-y_{i}\left(\boldsymbol{w}^{\top} \boldsymbol{x}_{i}+b\right)\right)\right)\\ &\text { s.t. } \quad \alpha_{i} \geq 0, \quad i=1,2, \ldots, m \end{aligned}\end{equation} \]

上式對於\((\omega,b)\)屬於無約束優化問題,令偏導爲零可得:

\[\begin{equation} \frac{\partial \mathcal{L}}{\partial \boldsymbol{w}}=\mathbf{0} \Rightarrow \boldsymbol{w}=\sum_{i=1}^{m} \alpha_{i} y_{i} \boldsymbol{x}_{i} \\ \frac{\partial \mathcal{L}}{\partial b}=0 \Rightarrow \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \end{equation} \tag{13} \]

代入\(公式(12)\)消去\((\omega,b)\)可得:

\[\begin{equation}\begin{aligned} \min _{\alpha} & \frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j} \boldsymbol{x}_{i}^{\top} \boldsymbol{x}_{j}-\sum_{i=1}^{m} \alpha_{i} \\ \text { s.t. } & \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \\ & \alpha_{i} \geq 0, \quad i=1,2, \ldots, m \end{aligned}\end{equation} \tag{14} \]

所以問題變成了尋找合適的\(\alpha\)使得\(公式(12)\)成立。

又由於\(公式(11)\)在極值點一定知足KKT條件。也就是說\(\alpha_i(1-y_{i}({w}^{\top} {x}_{i}+b))=0\),當\(\alpha_i \gt 0\)時必有\(1-y_{i}({w}^{\top} {x}_{i}+b) =0\)。所以對於\(\alpha_i \gt0\)對應的樣本是支持向量,對於非支持向量,則\(\alpha_i =0\)

最大分類間隔

對於\(公式13\)有:

\[\begin{equation}\begin{aligned} \boldsymbol{w} &=\sum_{i=1}^{m} \alpha_{i} y_{i} \boldsymbol{x}_{i} \\ &=\sum_{i: \alpha_{i}=0}^{m} 0 \cdot y_{i} \boldsymbol{x}_{i}+\sum_{i: \alpha_{i}>0}^{m} \alpha_{i} y_{i} \boldsymbol{x}_{i} \\ &=\sum_{i \in S V} \alpha_{i} y_{i} \boldsymbol{x}_{i}\quad(SV 表明全部支持向量的集合) \end{aligned}\end{equation} \]

而後咱們能夠求\(b\)了,對於支持向量有\(y_k =\omega^{\top}x+b\),所以:

\[\begin{equation}\begin{aligned} b&=y_k-\boldsymbol{w}^{\top} \boldsymbol{x} \\ &=y_{k}-(\sum_{i \in S V} \alpha_{i} y_{i} \boldsymbol{x}_{i})^{\top}x_k \\ &=y_k-\sum_{i \in S V} \alpha_{i} y_{i} \boldsymbol{x}_{i}^{\top}x_k \end{aligned} \end{equation} \]

經過上面的推導,咱們可以知道支持向量機的\((\omega,b)\)僅由支持向量決定。實踐中, 爲了獲得對 $b \(更穩健的估計, 一般使用對全部支持向量求解獲得\)b$的平均值。

綜上,咱們想計算出合適的\(\omega\)\(b\),就必須計算出\(\alpha_i\),而後咱們就能夠獲得支持向量,在而後咱們咱們經過支持向量和\(\alpha_i\)就能夠計算出\(\omega\)\(b\)

至於怎麼求\(\alpha_i\),咱們使用可使用後面介紹的SMO算法求解,首先咱們來介紹一下核方法。

核技巧

在前面的討論中,咱們對樣本的考慮都是線性可分的。可是實際上,大部分的狀況下,數據都是非線性可分的。好比說異或問題。在前面的章節神經網絡中,咱們是經過使用增長一層隱層來解決這個問題,那麼對於SVM咱們應該怎麼解決呢?SVM中使用核技巧(kernel trick)來解決非線性問題。

核技巧

既然在原始的特徵空間\(\mathbb{R}^{d}\)不是線性可分的,支持向量機但願經過一個映射\(\phi: \mathbb{R}^{d} \rightarrow \mathbb{R}^{\tilde{d}}\), 使得數據在新的空間\(\mathbb{R}^{\tilde{d}}\)是線性可分的。能夠證實(可是我證實不出),當\(d\)有限時, 必定存在\(\tilde{d}\), 使得樣本在空間$ \mathbb{R}^{\tilde{d}}$中線性可分。

核函數

\(\phi(x)\)\(x\)映射後的特徵向量,所以劃分的超平面能夠表示爲\(f(x)=\phi(x)+b\)。同時\(公式(11)\)能夠改成:

\[\begin{equation}\begin{array}{l} \min _{w,b} \frac{1}{2}\|\boldsymbol{w}\|^{2} \\ \text { s.t. } y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \phi\left(\boldsymbol{x}_{i}\right)+b\right) \geqslant 1, \quad i=1,2, \ldots, m \end{array}\end{equation} \]

而後\(公式14\)能夠寫成以下的形式:

\[\begin{equation}\begin{aligned} \min _{\alpha} & \frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j} \phi(\boldsymbol{x}_{i}^{\top}) \phi(\boldsymbol{x}_{j})-\sum_{i=1}^{m} \alpha_{i} \\ \text { s.t. } & \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \\ & \alpha_{i} \geq 0, \quad i=1,2, \ldots, m \end{aligned}\end{equation} \tag{15} \]

求解\(公式15\)面臨一個很大的問題,那就是\(\phi(\boldsymbol{x}_{i}^{\top})\)\(\phi(\boldsymbol{x}_{j})\)很難計算(通常來講它們都是高維的甚至無窮維),首先須要計算特徵在\(\mathbb{R}^{\tilde{d}}\)的映射,而後又要計算在他的內積,複雜度爲$$\mathcal{O}(\tilde{d})$$。所以咱們經過使用核技巧,將這兩步並將複雜度下降到\(\mathbb{R}^{d}\)。即核技巧但願構造一個核函數\(\kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)\),使得:

\[\begin{equation}\kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)=\boldsymbol{\phi}\left(\boldsymbol{x}_{i}\right)^{\top} \boldsymbol{\phi}\left(\boldsymbol{x}_{j}\right)\end{equation} \]

實際上核函數不只僅只用於SVM,對於全部涉及到向量內積的運算,咱們均可以使用核函數來解決。

所以\(公式15\)能夠改寫成:

\[\begin{equation}\begin{aligned} \min _{\alpha} & \frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j} \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)-\sum_{i=1}^{m} \alpha_{i} \\ \text { s.t. } & \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \\ & \alpha_{i} \geq 0, \quad i=1,2, \ldots, m \end{aligned}\end{equation} \tag{15} \]

對於核函數來講,咱們能夠本身造,可是一般咱們會從一些常見的核函數中進行選擇:根據不一樣問題選擇不一樣的參數。下圖是是一些常見的核函數。

軟間隔

前面咱們討論的狀況都是超平面都是可以完美的將數據進行分開(即便是非線性數據,咱們使用核函數進行騷操做而後進行分割),這種全部樣本都知足約束的狀況稱之爲硬間隔(hard margin),但實際上數據是有噪音的,若是使用核函數進行騷操做,而後在找到一個線性可分超平面,可能就會形成模型過擬合,一樣也可能咱們找不到合適的核函數。所以,咱們將標準放寬,容許必定的「錯誤」,稱之爲軟間隔(soft margin):

咱們但願在優化間隔的同時,容許錯誤樣本的出現,可是咱們一樣但願出現錯誤的樣本越少越好。所以優化目標\(公式(5)\)可寫成:

\[\left \{ \begin{matrix} \begin{align*} & min _{\boldsymbol{w}, b} \left(\frac{1}{2}\|\boldsymbol{w}\|^{2}+C \sum_{i=1}^{m} \ell_{0 / 1}\left(y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right)-1\right)\right)\\ & s.t. \quad y_i(\omega^T x_i + b) \geqslant 1 ,\quad i=1,2,...,m \end{align*} \end{matrix} \right. \tag{16} \]

其中\(C \gt 0\)是一個常數,\(\ell_{0 / 1}\)是「0/1損失函數」。

\[\begin{equation}\ell_{0 / 1}(z)=\left\{\begin{array}{ll} 1, & \text { if } z<0 \\ 0, & \text { otherwise } \end{array}\right.\end{equation} \]

能夠很簡單的知道,\(C\)取無窮大時,\(公式(16)\)迫使全部樣本均知足約束。當\(C\)取有限值時,容許一些樣本不知足約束。but,仍是有些問題,\(\ell_{0 / 1}\)是非凸,非連續的一個函數,會使得上式\((16)\)變得很差求解,所以人們一般使用其餘的函數來替代\(\ell_{0 / 1}\),稱之爲「替代損失(surrogate loss)」。下面是幾種經常使用的替代損失函數:

\[\begin{equation}\begin{aligned} &\text {hinge 損失}:\ell_{\text {hinge}}(z)=\max (0,1-z) \\ &\text { 指數損失(exponential loss): } \ell_{\exp }(z)=\exp (-z)\\ &\text { 對率損失(logistic loss): } \ell_{\log }(z)=\log (1+\exp (-z)) \end{aligned}\end{equation} \]

對應的圖以下:

代替損失

下面將以\(hinge函數\)爲例子介紹軟間隔支持向量機的推導。

軟間隔支持向量機推導

\(\text {hinge函數}:\ell_{\text {hinge}}(z)=\max (0,1-z)\)等價於:

\[\begin{equation}\xi_{i}=\left\{\begin{array}{ll}0 & \text { if } y_{i}\left(\boldsymbol{w}^{\top} \boldsymbol{\phi}\left(\boldsymbol{x}_{i}\right)+b\right) \geq 1 \\1-y_{i}\left(\boldsymbol{w}^{\top} \boldsymbol{\phi}\left(\boldsymbol{x}_{i}\right)+b\right) & \text { otherwise }\end{array}\right.\end{equation} \]

\(\xi_{i}\)咱們稱之爲鬆弛變量(slack variable),樣本違背約束越遠,則鬆弛變量值越大。所以優化目標式\((5)\)能夠寫成:

\[\begin{equation}\begin{aligned}\min _{\boldsymbol{w}, b, \boldsymbol{\xi}} &( \frac{1}{2} \boldsymbol{w}^{\top} \boldsymbol{w}+C \sum_{i=1}^{m} \xi_{i} )\\\text { s.t. } & y_{i}\left(\boldsymbol{w}^{\top} \boldsymbol{\phi}\left(\boldsymbol{x}_{i}\right)+b\right) \geq 1-\xi_{i}, \quad i=1,2, \ldots, m \\& \xi_{i} \geq 0, \quad i=1,2, \ldots, m\end{aligned}\end{equation} \tag{17} \]

一樣在這裏\(C\)越大,表明咱們但願越多的樣本知足約束。軟間隔的拉格朗日函數爲:

\[\begin{equation}\begin{aligned} \mathcal{L}(\boldsymbol{w}, b, \boldsymbol{\xi}, \boldsymbol{\alpha}, \boldsymbol{\beta}):=& \frac{1}{2} \boldsymbol{w}^{\top} \boldsymbol{w}+C \sum_{i=1}^{m} \xi_{i} \\ &+\sum_{i=1}^{m} \alpha_{i}\left(1-\xi_{i}-y_{i}\left(\boldsymbol{w}^{\top} \boldsymbol{\phi}\left(\boldsymbol{x}_{i}\right)+b\right)\right) \\ &+\sum_{i=1}^{m} \beta_{i}\left(-\xi_{i}\right) \end{aligned}\end{equation} \tag{18} \]

其KKT條件爲:

\[\begin{equation}\left\{\begin{array}{l} 1 - \xi_{i}-y_{i}\left(\boldsymbol{w}^{\top} \boldsymbol{\phi}\left(\boldsymbol{x}_{i}\right)+b\right) \leq 0,-\xi_{i} \leq 0 \quad(主問題可行)\\ \alpha_{i} \geq 0, \beta_{i} \geq 0 \quad(對偶問題可行)\\ \alpha_{i}\left(1-\xi_{i}-y_{i}\left(\boldsymbol{w}^{\top} \phi\left(\boldsymbol{x}_{i}\right)+b\right)\right)=0, \beta_{i} \xi_{i}=0 \quad(互補鬆弛)\\ \end{array}\right.\end{equation} \]

其對偶問題爲:

\[\begin{equation}\begin{aligned} \max _{\boldsymbol{\alpha}, \boldsymbol{\beta}} \min _{\boldsymbol{w}, b, \boldsymbol{\xi}} & \mathcal{L}(\boldsymbol{w}, b, \boldsymbol{\xi}, \boldsymbol{\alpha}, \boldsymbol{\beta}) \\ \text { s.t. } & \alpha_{i} \geq 0, \quad i=1,2, \ldots, m \\ & \beta_{i} \geq 0, \quad i=1,2, \ldots, m \end{aligned}\end{equation} \]

\(\min _{\boldsymbol{w}, b, \boldsymbol{\xi}} \mathcal{L}(\boldsymbol{w}, b, \boldsymbol{\xi}, \boldsymbol{\alpha}, \boldsymbol{\beta})\)的優化屬於無約束的優化問題,咱們經過將偏導置零的方法獲得\((\boldsymbol{w}, b, \boldsymbol{\xi})\)的最優值:

\[\begin{equation}\begin{aligned} \frac{\partial \mathcal{L}}{\partial \boldsymbol{w}}=\mathbf{0} & \Rightarrow \boldsymbol{w}=\sum_{i=1}^{m} \alpha_{i} y_{i} \boldsymbol{\phi}\left(\boldsymbol{x}_{i}\right) \\ \frac{\partial \mathcal{L}}{\partial b} &=0 \Rightarrow \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \\ \frac{\partial \mathcal{L}}{\partial \boldsymbol{\xi}} &=\mathbf{0} \Rightarrow \alpha_{i}+\beta_{i}=C \end{aligned}\end{equation}\tag{19} \]

由於\(\beta_{i}=C -\alpha_{i} \ge0\),所以咱們約束\(0 \le \alpha_i \le C\),將\(\beta_{i}=C -\alpha_{i},{w}=\sum_{i=1}^{m} \alpha_{i} y_{i} \boldsymbol{\phi}\left(\boldsymbol{x}_{i}\right)\),代入式\((18)\)可得:

\[\begin{equation}\begin{array}{ll} \min _{\alpha} & \frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j} \phi\left(\boldsymbol{x}_{i}\right)^{\top} \boldsymbol{\phi}\left(\boldsymbol{x}_{j}\right)-\sum_{i=1}^{m} \alpha_{i} \\ \text { s.t. } & \sum_{i=1}^{m} \alpha_{i} y_{i}=0,\\ & 0 \le \alpha_i \le C \end{array}\end{equation} \tag{20} \]

若是咱們將式\((17)\)當作以下通常形式:

\[\begin{equation}\min _{f} (\Omega(f)+C \sum_{i=1}^{m} \ell\left(f\left(\boldsymbol{x}_{i}\right), y_{i}\right))\end{equation} \]

對於\(\Omega(f)\)咱們稱之爲「結構風險(structural risk)」,第二項\(\sum_{i=1}^{m} \ell\left(f\left(\boldsymbol{x}_{i}\right), y_{i}\right)\)稱之爲「經驗分享(empirical risk)「,而\(C\)的做用就是對二者進行折中。

SMO算法

前面說了這麼多,終於終於,咱們要開始說SMO(Sequential minimal optimization,序列最小化)算法了。首先說一下這個算法的目的,這個算法就是用來求\(\alpha_i\)的。SMO算法是一種啓發式算法,基本思路是若是全部變量的解都知足最優化問題的KKT條件,則該最優化問題的解就獲得了。

對於式\((19)\)若是咱們將\(\phi({x}_{i})^{\top} {\phi}(\boldsymbol{x}_{j})\)使用核函數來表示則有:

\[\begin{equation}\begin{aligned} \min _{\alpha} & \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} K\left(x_{i}, x_{j}\right)-\sum_{i=1}^{N} \alpha_{i} \\ \text { s.t. } & \sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\ & 0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2, \cdots, N \end{aligned}\end{equation} \tag{21} \]

假如咱們選擇\(\alpha_1,\alpha_2\)做爲變量(至於爲何不是隻選擇一個變量是由於存在$\sum_{i=1}^{N} \alpha_{i} y_{i}=0 \(這個約束條件),固定其餘變量\)\alpha_{i}(i=3,4, \cdots, N)\(,則式\)(20)$問題能夠變成:

\[\begin{equation}\begin{array}{rl} \min _{\alpha_{1}, \alpha_{2}} & W\left(\alpha_{1}, \alpha_{2}\right)=\frac{1}{2} K_{11} \alpha_{1}^{2}+\frac{1}{2} K_{22} \alpha_{2}^{2}+y_{1} y_{2} K_{12} \alpha_{1} \alpha_{2}- \\ & \left(\alpha_{1}+\alpha_{2}\right)+y_{1} \alpha_{1} \sum_{i=3}^{N} y_{i} \alpha_{i} K_{i 1}+y_{2} \alpha_{2} \sum_{i=3}^{N} y_{i} \alpha_{i} K_{i 2} \\ \text { s.t. } & \alpha_{1} y_{1}+\alpha_{2} y_{2}=-\sum_{i=3}^{N} y_{i} \alpha_{i}=\varsigma \\ & 0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2 \end{array}\end{equation} \tag{22} \]

在式\((21)\)中省略了\(\sum_{i=3}^N\alpha_i\)這個式子,是由於該式爲常數項。

由於\(\alpha_{1} y_{1}+\alpha_{2} y_{2} = 常數,y_1 = \pm1,y_2=\pm1\),所以有:

\[\begin{equation}\left\{\begin{array}{l} \alpha_1 - \alpha_2 = k \quad(y_1 \ne y_2)\\ \alpha_1 + \alpha_2 = k \quad(y_1 = y_2)\\ \end{array} \right. \end{equation} \quad \text { s.t. }0 \leqslant \alpha_{1} \leqslant C,0 \leqslant \alpha_{2} \leqslant C\\ \tag{23} \]

咱們能夠將式\((22)\)用圖表示出來:

由於\(\alpha_1\)\(\alpha_2\)存在線性關係,這樣兩個變量的最優化問題成爲了實質上單變量的最優化問題,所以,咱們能夠當作其爲變量\(\alpha_2\)的最優化問題。

\(式(22)\)的初始可行解爲\(\alpha_{1}^{\text {old }}, \alpha_{2}^{\text {old }}\),最優解爲\(\alpha_{1}^{\text {new }}, \alpha_{2}^{\text {new}}\)。對於\(\alpha_i^{new}\)來講,其取值範圍必須知足:

\[L \leqslant \alpha_{i}^{\text {new }} \leqslant H \]

  • 狀況1:\(L=\max \left(0, \alpha_{2}^{\text {old }}-\alpha_{1}^{\text {old }}\right), \quad H=\min \left(C, C+\alpha_{2}^{\text {old }}-\alpha_{1}^{\text {old }}\right)\)
  • 狀況2:\(L=\max \left(0, \alpha_{2}^{\text {old }}+\alpha_{1}^{\text {old }}-C\right), \quad H=\min \left(C, \alpha_{2}^{\text {old }}+\alpha_{1}^{\text {old }}\right)\)

設咱們計算出來的\(\alpha_2\)\(\alpha_2^{new,unc}\),則有:

\[\alpha_2^{new}= \begin{cases} H& { \alpha_2^{new,unc} > H}\\ \alpha_2^{new,unc}& {L \leq \alpha_2^{new,unc} \leq H}\\ L& {\alpha_2^{new,unc} < L} \end{cases} \]

那麼問題就回到了若是咱們有\(\alpha_2^{old}\)咱們如何獲得\(\alpha_2^{new,unc}\)呢?

首先咱們設一個超平面函數\(g(x)\)以下:

\[設:g(x) = w^{*} \bullet \phi(x) + b\\ 由式(19)可知{w}=\sum_{i=1}^{m} \alpha_{i} y_{i} {\phi}({x}_{i}) \\ 所以有: g(x)=\sum\limits_{j=1}^{m}\alpha_j^{*}y_jK(x, x_j)+ b^{*} \]

而後咱們令

\[\begin{equation}E_{i}=g\left(x_{i}\right)-y_{i}=\left(\sum_{j=1}^{N} \alpha_{j} y_{j} K\left(x_{j}, x_{i}\right)+b\right)-y_{i}, \quad i=1,2\end{equation} \]

同時引進記號:

\[\begin{equation}v_{i}=\sum_{j=3}^{N} \alpha_{j} y_{j} K\left(x_{i}, x_{j}\right)=g\left(x_{i}\right)-\sum_{j=1}^{2} \alpha_{j} y_{j} K\left(x_{i}, x_{j}\right)-b, \quad i=1,2\end{equation} \]

所以式\((22)\)能夠改寫成:

\[\begin{equation}\begin{array}{c} W\left(\alpha_{1}, \alpha_{2}\right)=| \frac{1}{2} K_{11} \alpha_{1}^{2}+\frac{1}{2} K_{22} \alpha_{2}^{2}+y_{1} y_{2} K_{12} \alpha_{1} \alpha_{2}- \\ \left(\alpha_{1}+\alpha_{2}\right)+y_{1} v_{1} \alpha_{1}+y_{2} v_{2} \alpha_{2} \end{array}\end{equation} \tag{24} \]

又由於\(\alpha_{1} y_{1}+\alpha_{2} y_{2}=\varsigma,\quad y_iy_i = 1\),所以\(\alpha_1\)能夠表示爲:

\[\begin{equation}\alpha_{1}=\left(\varsigma-y_{2} \alpha_{2}\right) y_{1}\end{equation} \]

代入式\((24)\)中,咱們有:

\[\begin{equation}\begin{aligned} W\left(\alpha_{2}\right)=& \frac{1}{2} K_{11}\left(s-\alpha_{2} y_{2}\right)^{2}+\frac{1}{2} K_{22} \alpha_{2}^{2}+y_{2} K_{12}\left(s-\alpha_{2} y_{2}\right) \alpha_{2}-\\ &\left(s-\alpha_{2} y_{2}\right) y_{1}-\alpha_{2}+v_{1}\left(s-\alpha_{2} y_{2}\right)+y_{2} v_{2} \alpha_{2} \end{aligned}\end{equation} \]

而後,咱們對\(\alpha_2\)求導數:

\[\begin{equation}\begin{aligned} \frac{\partial W}{\partial \alpha_{2}}=& K_{11} \alpha_{2}+K_{22} \alpha_{2}-2 K_{12} \alpha_{2}-\\ & K_{11 S} y_{2}+K_{12} s y_{2}+y_{1} y_{2}-1-v_{1} y_{2}+y_{2} v_{2} \end{aligned}\end{equation} \]

令其導數爲0可得:

\[\begin{equation}\begin{aligned} \left(K_{11}+K_{22}-2 K_{12}\right) \alpha_{2}=& y_{2}\left(y_{2}-y_{1}+\varsigma K_{11}-\varsigma K_{12}+v_{1}-v_{2}\right) \\ =& y_{2}\left[y_{2}-y_{1}+\varsigma K_{11}-\varsigma K_{12}+\left(g\left(x_{1}\right)-\sum_{j=1}^{2} y_{j} \alpha_{j} K_{1 j}-b\right)-\right.\\ &\left.\left(g\left(x_{2}\right)-\sum_{j=1}^{2} y_{j} \alpha_{j} K_{2 j}-b\right)\right] \end{aligned}\end{equation} \tag{25} \]

又由於\(\varsigma=\alpha_{1}^{\mathrm{old}} y_{1}+\alpha_{2}^{\mathrm{old}} y_{2}\)代入式\((25)\)可得:

\[\begin{equation}\begin{aligned} \left(K_{11}+K_{22}-2 K_{12}\right) \alpha_{2}^{\text {new }, \text { unc }} &=y_{2}\left(\left(K_{11}+K_{22}-2 K_{12}\right) \alpha_{2}^{\text {old }} y_{2}+y_{2}-y_{1}+g\left(x_{1}\right)-g\left(x_{2}\right)\right) \\ &=\left(K_{11}+K_{22}-2 K_{12}\right) \alpha_{2}^{\text {old }}+y_{2}\left(E_{1}-E_{2}\right) \end{aligned}\end{equation} \tag{26} \]

令:

\[\begin{equation}\eta=K_{11}+K_{22}-2 K_{12}=\left\|\Phi\left(x_{1}\right)-\Phi\left(x_{2}\right)\right\|^{2}\end{equation} \]

所以式\((26)\)可化簡爲:

\[\begin{equation}\alpha_{2}^{\text {new }, \mathrm{unc}}=\alpha_{2}^{\text {old }}+\frac{y_{2}\left(E_{1}-E_{2}\right)}{\eta}\end{equation} \tag{27} \]

同時有:

\[\alpha_2^{new}= \begin{cases} H& { \alpha_2^{new,unc} > H}\\ \alpha_2^{new,unc}& {L \leq \alpha_2^{new,unc} \leq H}\\ L& {\alpha_2^{new,unc} < L} \end{cases} \]

由於咱們已經獲得\(\alpha_2^{new}\),根據\(\alpha_1^{new}\)\(\alpha_2^{new}\)之間的線性關係,咱們能夠就能夠獲得\(\alpha_1^{new}\)了。

咱們每次完成兩個變量的優化以後,都須要從新更新閾值。具體更新能夠看下面部分。

SMO變量的選擇方法

經過前面部分咱們知道SMO算法就是選擇兩個變量進行優化,其中至少有一個變量是違反了KKT條件(假如沒有違反的話,咱們也就不必進行計算了)。咱們可使用\(\alpha_1\)表明第一個變量,\(\alpha_2\)表明第二個變量。

  1. 第一個變量的選擇

    咱們稱第一個變量的選擇爲外層循環,外層循環在訓練樣本中選擇違反KKT條件最嚴重的樣本點。對於KKT條件,咱們能夠轉成如下的形式:

    \[\begin{equation}\begin{aligned} \alpha_{i} &=0 \Leftrightarrow y_{i} g\left(x_{i}\right) \geqslant 1 &\quad(1)\\ 0<\alpha_{i} &<C \Leftrightarrow y_{i} g\left(x_{i}\right)=1 &\quad(2)\\ \alpha_{i} &=C \Leftrightarrow y_{i} g\left(x_{i}\right) \leqslant 1 &\quad(3)\\ 其中g(x_{i}) &= \sum_{j=1}^{N}\alpha_{j}y_{j}K(x_{i},x_{j})+b\\ \end{aligned}\end{equation} \tag{28} \]

    證實以下:

    對於上式\((1)\)

    \[\begin{equation}\begin{aligned} &\because\alpha_i = 0,\alpha_i + \beta_i = C ,且在KKT條件\beta_{i}\xi_{i}=0\\ &\therefore \beta_i = C,\therefore\xi_i = 0\\ 又&\because 由KTT條件可知:1-\xi_i\le y_ig(x_i),\alpha_{i} [y_{i}g(x_{i})-(1-\xi_{i})]=0\\ &\therefore y_ig(x_i) \ge 1 \end{aligned}\end{equation} \]

    對於上式\((2)\)

    \[\begin{equation}\begin{aligned} &\because0<\alpha_{i} <C ,\alpha_i + \beta_i = C ,且在KKT條件\beta_{i}\xi_{i}=0\\ &\therefore 0 \lt\beta_i \lt C,\therefore\xi_i = 0\\ 又&\because 由KTT條件可知:1-\xi_i\le y_ig(x_i),\alpha_{i} [y_{i}g(x_{i})-(1-\xi_{i})]=0\\ &\therefore y_ig(x_i) = 1-\xi_i = 1 \end{aligned}\end{equation} \]

    對於上式\((3)\)

    \[\begin{equation}\begin{aligned} &\because\alpha_i = C,\alpha_i + \beta_i = C ,且在KKT條件\beta_{i}\xi_{i}=0\\ &\therefore \beta_i = 0,\xi_i \ge0\\ 又&\because 由KTT條件可知:1-\xi_i\le y_ig(x_i),\alpha_{i} [y_{i}g(x_{i})-(1-\xi_{i})]=0\\ &\therefore y_ig(x_i) = 1-\xi_i \le 1 \end{aligned}\end{equation} \]

    固然咱們也能夠給定必定的精度範圍\(\varepsilon\),此時KKT條件就變成了:

    \[\begin{equation}\begin{array}{l} a_{i}=0 \Leftrightarrow y_{i} g\left(x_{i}\right) \geq 1-\varepsilon \\ 0<a_{i}<C \Leftrightarrow 1-\varepsilon \leq y_{i} g\left(x_{i}\right) \leq 1+\varepsilon \\ a_{i}=C \Leftrightarrow y_{i} g\left(x_{i}\right) \leq 1+\varepsilon \end{array}\end{equation} \]

    而後咱們經過變形後的KKT條件,得到違背的樣本點違背最嚴重的做爲第一個變量就🆗了。那麼如何度量這個嚴重性呢?emm,就看\(g\left(x_{i}\right)\)距離KKT條件有多遠就好了。

  2. 第二個變量的選擇

    第二個變量選擇的過程稱之爲內層循環,其標準是但願可以使\(\alpha_2\)有足夠大的變化。由式\((27)\)咱們知道:

    \[\begin{equation}\alpha_{2}^{\text {new }, \mathrm{unc}}=\alpha_{2}^{\text {old }}+\frac{y_{2}\left(E_{1}-E_{2}\right)}{\eta}\end{equation} \]

    也就是說\(\alpha_2\)的變化量依賴於\(|E_1 - E_2|\),所以咱們能夠選擇式\(|E_1 - E_2|\)最大的\(\alpha_2\)。由於\(\alpha_1\)已經肯定,因此\(E_1\)也就已經肯定,所以咱們只須要肯定\(E_2\)便可。若是\(E_1\)爲正,則選取\(\alpha_2\)使\(E_2\)最小,若是\(E_1\)爲負,則選取\(\alpha_2\)使\(E_2\)最大。

當咱們完成兩個變量的優化後(優化後的變量),咱們就須要來更新閾值\(b\)

  • 若更新後的\(0<\alpha_{1} <C\)由式\((28)\)中的式\((2)\)可知:

\[\begin{equation}\sum_{i=1}^{N} \alpha_{i} y_{i} K_{i 1}+b=y_{1}\end{equation} \]

​ 因而有:

\[\begin{equation}b_{1}^{\mathrm{new}}=y_{1}-\sum_{i=3}^{N} \alpha_{i} y_{i} K_{i 1}-\alpha_{1}^{\mathrm{new}} y_{1} K_{11}-\alpha_{2}^{\mathrm{new}} y_{2} K_{21}\end{equation} \]

​ 由\(E_i\)的定義式\(\begin{equation}E_{i}=g\left(x_{i}\right)-y_{i}=\left(\sum_{j=1}^{N} \alpha_{j} y_{j} K\left(x_{j}, x_{i}\right)+b\right)-y_{i}, \quad i=1,2\end{equation}\),有:

\[\begin{equation}E_{1}=\sum_{i=3}^{N} \alpha_{i} y_{i} K_{i 1}+\alpha_{1}^{\mathrm{old}} y_{1} K_{11}+\alpha_{2}^{\mathrm{old}} y_{2} K_{21}+b^{\mathrm{old}}-y_{1}\end{equation} \]

​ 所以則有:

\[\begin{equation}y_{1}-\sum_{i=3}^{N} \alpha_{i} y_{i} K_{i 1}=-E_{1}+\alpha_{1}^{\text {old }} y_{1} K_{11}+\alpha_{2}^{\text {old }} y_{2} K_{21}+b^{\text {old }}\end{equation} \]

​ 最終:

\[\begin{equation}b_{1}^{\text {new }}=-E_{1}-y_{1} K_{11}\left(\alpha_{1}^{\text {new }}-\alpha_{1}^{\text {old }}\right)-y_{2} K_{21}\left(\alpha_{2}^{\text {new }}-\alpha_{2}^{\text {old }}\right)+b^{\text {old }}\end{equation} \]

  • 同理若$0<\alpha_{2} \lt C $,則有

    \[\begin{equation}b_{2}^{\text {new }}=-E_{2}-y_{1} K_{12}\left(\alpha_{1}^{\text {new }}-\alpha_{1}^{\text {old }}\right)-y_{2} K_{22}\left(\alpha_{2}^{\text {new }}-\alpha_{2}^{\text {old }}\right)+b^{\text {old }}\end{equation} \]

  • \(\alpha_1^{new},\alpha_2^{new}\)同時知足\(0<\alpha_{i}^{new} \lt C\),則最終:

\[b^{new} = \frac{b_1^{new}+b_2^{new}}{2} \]

  • \(\alpha_1^{new},\alpha_2^{new}\)\(0\)或者\(C\),那麼最終:

    \[b^{new} = \frac{b_1^{new}+b_2^{new}}{2} \]

    綜上:

    \[\begin{equation}b=\left\{\begin{array}{ll} b_{1}^{new}, & 0<\alpha_{1}<C \\ b_{2}^{new}, & 0<\alpha_{2}<C \\ \frac{1}{2}\left(b_{1}^{new}+b_{2}^{new}\right), & \text { others } \end{array}\right.\end{equation} \]

更新完\(\alpha_1\)\(\alpha_2\)後咱們須要將\(E_i\)進行更新,以便後續的\(\alpha_i\)\(b\)的求解。

\[\begin{equation} E_{1}=\sum_{i=3}^{N} \alpha_{i} y_{i} K_{i 1}+\alpha_{1}^{\mathrm{new}} y_{1} K_{11}+\alpha_{2}^{\mathrm{new}} y_{2}K_{21}+b^{\mathrm{new}}-y_{1}\\ E_{2}=\sum_{i=3}^{N} \alpha_{i} y_{i} K_{i 2}+\alpha_{1}^{\mathrm{new}} y_{1} K_{12}+\alpha_{2}^{\mathrm{new}} y_{2}K_{22}+b^{\mathrm{new}}-y_{2}\\ \end{equation} \]

總結

綜上,SVM就介紹了,SVM看起來很簡單,就是找到一條合適的線可以比較好的分割數據集。爲了數值化「比較好」這個詞,咱們引出了間隔的概念,而後咱們但願這個間隔足夠大,而且全部的數據完美的分離在間隔的兩邊。因而這個問題就變成了在必定條件下的極值問題。而後咱們選擇使用拉格朗日乘子法去解決這個問題,其中在極值點會知足KKT條件。爲了簡化求解,咱們經過Slater條件將問題轉成了對偶問題。面對非線性問題,咱們選擇使用核技巧去解決,同時爲了不過擬合,咱們選擇使用軟間隔;並最終使用SMO算法取獲得合適的解。

說實話,原本只是想稍微的介紹一下SVM以及它的原理,本身其實對SVM也是屬於之聽過沒真正的瞭解過的狀況。聽別人說SVM不是很難,可是最後卻發現emm,越推感受數學越奇妙。也許上面的內容看起來並不難,可是它倒是由前人耗費無數的日日夜夜最終才得出了答案,也許這就是科學的魅力吧!

下面是參考的內容,其中強烈推薦《統計學習方法第2版》

參考

相關文章
相關標籤/搜索