學習SVM

SVM家族簡史

故事要從20世紀50年代提及,1957年,一個叫作感知器的模型被提出,html

1963年, Vapnik and Chervonenkis, 提出了最大間隔分類器,SVM誕生了。算法

1992年,Vapnik 將核方法用於SVM,使SVM能夠處理線性不可分數據機器學習

1995年,Corts和Vapnik引入了軟間隔,容許SVM犯一些錯ide

最強版SVM出現了,它將各式武學集於一身,軟間隔、核方法、……,函數

1996年,SVR(support vector regression)誕生,svm家族又添一員,迴歸任務也不在話下。至此,SVM家族成爲機器學習界頂級家族之一。關於SVM家族其餘成員,能夠參閱這裏學習

SVM是什麼?

  • 是一種監督學習分類算法,能夠用於分類/迴歸任務
  • SVM目標:尋找最優分割超平面以最大化訓練數據的間隔

什麼是超平面?優化

  • 在一維空間,超平面是一個點
  • 二維空間,超平面是一條線
  • 三維空間,超平面是一個平面
  • 更多維空間,稱爲超平面

什麼是最優分割超平面?spa

  • 儘量遠離每個類別的樣本點的超平面
    • 首先,能夠正確的將訓練數據分類
    • 其次,擁有更好的泛化能力

那麼如何找到這個最優超平面呢?根據間隔.net

什麼是間隔?3d

給定一個超平面,超平面到最近的樣本點之間的距離的2倍稱爲間隔。

在最初的SVM中,間隔是一個強定義,即硬間隔,間隔之間不容許存在任何樣本。(當數據中存在噪音時,會產生一些問題,因此後來軟間隔被引入)

顯然,間隔B小於間隔A。可知:

  • 若是超平面越接近樣本點,對應的間隔越小
  • 超平面離樣本點越遠,間隔越大

因此最優超平面對應最大間隔,SVM就是圍繞着這個間隔展開,如何計算這個間隔?👇👇👇

感知機模型

感知機是什麼?

  • 是一種二元線性分類器
  • 利用梯度降低法對損失函數進行極小化,求出可將訓練數據進行線性劃分的分離超平面

感知機如何找到分離超平面?

  • 定義目標函數,優化求解

    對分類超平面 $ f(x_i)=w^\top x+b$

    • 初始化 \(w\)
    • 循環對每一個樣本執行
      • \(\mathbf{w} \leftarrow \mathbf{w}+\alpha \operatorname{sign}\left(f\left(\mathbf{x}_{i}\right)\right) \mathbf{x}_{i}\) 若是\(x_i\) 被誤分類
    • 直到全部數據被正確分類

最大間隔

對感知機來講,後三個超平面都是對應的解。顯然最後一個是更優的解,可是感知機並不知道,SVM登場了。SVM說,既然間隔更大的超平面對應更優解,那我就計算間隔。

怎麼計算間隔?

能夠用點到直線距離,對超平面

如何找到最優超平面?

超平面和間隔是直接相關的。

  • 若是有一個超平面,能夠根據樣本計算間隔
  • 若是有兩個超平面界定了一個間隔,咱們能夠找到第三個超平面

因此 尋找最大間隔 = 尋找最優超平面

如何找到最大間隔?

​ step1: 須要有label的數據集

​ step2: 選擇兩個超平面劃分數據,而且超平面之間沒有數據

​ step3: 最大化兩個超平面之間的距離(即爲間隔)

提及來很簡單,下面咱們從數學角度看如何求解這一問題。

  • step1:數據集

    樣本 \(x_i\),對應的label \(y_i\in \{-1,1\}\),含有 \(n\) 個樣本的數據集表示爲 \(D\)

    $ D={(x_i,y_i)∣x_i∈R^p,y_i∈{−1,1}}$

  • step2:選擇兩個超平面

    假設數據 \(D\)線性可分的

    對於分類超平面 \(\bold w \cdot \bold x+b=0\) , 記爲\(H_0\),選擇另外兩個超平面\(H_1,H_2\) ,知足\(H_0\)\(H_1\)\(H_2\)等距,分別定義以下:

    \[\bold w \cdot \bold x+b = \delta\\ \bold w \cdot \bold x+b = -\delta \]

    可是 \(\delta\) 是多少?不肯定。爲了簡化問題,咱們假設 \(\delta=1\) ,爲了確保兩個超平面之間沒有數據,必須知足如下約束:

    \[\bold w \cdot \bold x_i+b≥1,\qquad if \ y_i =1\\ \bold w \cdot \bold x_i+b≤−1,\quad if \ y_i=-1 \tag{1} \]

    將式(1) 兩邊同時乘以 \(y_i\):

    \[\bold y_i(\bold w \cdot \bold x_i+b)\geq 1,\qquad for \ 1 \leq i \leq n\tag{2} \]

  • step3: 最大化兩個超平面之間的距離

    最大化兩個超平面之間距離,怎麼計算距離?怎麼最大化距離?

    如何計算兩個超平面之間距離?

    \(H_0,H_1\) 分別爲 \(\bold w \cdot \bold x+b=1,\bold w \cdot \bold x+b=−1\)

    假如 \(x_0\) 爲線上的點,\(m\) 記爲兩線間距離。咱們的目標:求 $ m$

    若是存在一個向量 \(\bold k\) , 知足 \(||\bold k||=m\) ,同時垂直於 \(H_1\),咱們就能在 \(H_1\) 找到對應的點 \(z_0\)。如今咱們看看怎麼找這個點?

    首先定義 \(\bold u = \frac{\bold w}{\bold{||w||}}\)\(\bold w\) 的單位向量,單位向量模長等於1,即\(\bold{||u||}=1\)。對一個標量乘以一個向量獲得的結果是向量,因此咱們將 \(m\) 和單位向量 \(\bold{||u||}\) 的乘積記爲\(\bold k\)

    \[\bold k = m\bold u=m \frac{\bold w}{\bold{||w||}} \]

    根據向量加法 \(\bold z_0 = \bold x_0 + \bold k\),如上圖。咱們找到了\(\bold x_0\) 對應的 \(\bold {z_0}\)。如今

    \[\bold w \cdot \bold{z_0}+b=1 \\ \bold w \cdot (\bold{x_0+k})+b=1 \\ \bold w \cdot (\bold{x_0}+m \frac{\bold w}{\bold{||w||}})+b=1 \\ \bold w \cdot \bold{x_0}+m \frac{\bold {w \cdot w}} {\bold{||w||}}+b=1 \\ \bold w \cdot \bold{x_0}+m \frac{\bold {||w||^2 }} {\bold{||w||}}+b=1 \\ \bold w \cdot \bold{x_0}+m {\bold{||w||}}+b=1 \\ \bold w \cdot \bold{x_0}+b=1-m {\bold{||w||}} \\ \]

    由於 \(\bold w \cdot \bold x_0+b=−1\),因此

    \[-1 = 1-m {\bold{||w||}} \\ m {\bold{||w||}} = 2 \\ m = \frac{2}{\bold{||w||}} \tag{3} \]

    咱們計算出了 \(m\) !!!兩個超平面之間的距離。

    最大化間隔

    上面咱們只作了一件事,計算間隔。如今咱們看看怎麼最大化它

    顯然上述問題等價於:

    \[minmize \ \bold{||w||} \\s.t.\quad y_i(\bold{w \cdot x_i}+b) \geq 1 \quad for \ i=1,2,\cdots,n\tag{4} \]

    求解上述問題,獲得最優解,咱們就找到了最優超平面。

最大間隔的數學解

再探問題(4),這是一個帶不等式約束的最優化問題,並且是 \(n\) 個約束(\(n\) 個點都須要知足)。這個問題很頭疼,好吧。咱們先偷個懶,若是是無約束問題怎麼求。

  • 無約束問題最小化

    對無約束問題,表示爲 \(f(\bold w)=\bold{||w||}\),咱們如何求函數 \(f\) 的局部極小值?求導。

    若是\(f\) 二階可導,在點 \(\bold x^*\) 知足 \(\partial f(\bold x∗)=0, \partial^2f(\bold x^*)>0\),則在 \(\bold {x}^*\) 處函數取極小值。注意:\(\bold x\) 是一個向量,導數爲0,對應每一個維度皆爲0。

    對於無約束最小值爲0,等式約束下最小值爲4。

  • 等式約束

    • 單個約束

      假若有等式約束問題以下

      \[\begin{array}{ll} \underset{x}{\operatorname{minimize}} & f(x) \\ \text { subject to } & g(x)=0 \end{array} \]

      上面的問題至關於定義了一個可行域,使得解只能在可行域內。上圖中表示可行域只有一個點,所以問題很簡單。

    • 多個約束

      對於帶有多個等式約束的問題,全部的約束必須都知足

      \[\begin{array}{cl}\underset{\mathbf{x}}{\operatorname{minimize}} & f(\mathbf{x}) \\\text { subject to } & g(\bold x)=0 \\& h(\mathbf{x})=0\end{array} \]

      上述等式約束問題怎麼解?猜猜這是誰🙃

    拉格朗日乘法

    In mathematical optimization, the method of Lagrange multipliers is a strategy for finding the local maxima and minima of a function subject to equality constraints. (Wikipedia)

    三步法:

    1. 對每一個約束乘以拉格朗日乘子,構建拉格朗日函數 \(L\)
    2. 求拉格朗日函數梯度
    3. 令梯度 \(\nabla L(\mathbf{x}, \alpha)=0\)

    爲何拉格朗日乘法能夠解等式約束問題?咱們來看看

    \[\begin{array}{ll}\underset{x, y}{\operatorname{minimize}} & f(x, y)=x^{2}+y^{2} \\\text { subject to } & g_{i}(x, y)=x+y-1=0\end{array} \]

    根據目標函數和約束函數,咱們能夠畫出等高線

    將兩張圖合併到一塊兒會發生什麼(黑色箭頭表示目標函數梯度方向,白色箭頭表示約束函數梯度方向)

    回到約束函數 \(g(x,y)=x+y-1=0\),咱們找一找它在哪,當\(x=0\)\(y=1\),當 \(y=0\)\(x=1\),找到了,在這裏

    發現什麼了?目標函數在約束函數處的梯度方向相同!它們相切了,並且只有一個點處的梯度方向徹底相同,這個點就是目標函數在約束下的的極小值

    why?假如你處在上圖最上面的箭頭位置(值爲 \(v\)),在約束條件下,只能在藍線上移動,你只能嘗試向左或者向右找到更小的值。ok,先嚐試向左走,發現值變大了(梯度方向也是左,梯度指向函數上升最快的方向),因此應該向右走,直到走到切點處。此時,發現不管向那個方向走,值都會變大,所以,你找到了極小值。

    • 數學表示

      如何表達在極小值處,目標函數和約束函數梯度方向相同

      \[\nabla f(x, y)=\lambda \nabla g(x, y) \]

      \(\lambda\) 幹啥?由於他們只是梯度方向相同,大小不必定相等。 \(\lambda\) 稱爲拉格朗日乘子。

      (注意 \(\lambda\) 若是是負數,兩個梯度方向變爲平行,能夠同時求極大極小值,見例1.)

    如今咱們知道拉格朗日乘法爲何能夠求等式約束問題,那怎麼求?

    • 找到知足\(\nabla f(x, y)=\lambda \nabla g(x, y)\)\((x,y)\)

      顯然,\(\nabla f(x, y) - \lambda \nabla g(x, y)=0\),定義函數 \(L\) 有:

      \[L(x,y,\lambda ) = f(x,y)-\lambda g(x,y) \]

      求導:

      \[\nabla L(x, y, \lambda)=\nabla f(x, y)-\lambda \nabla g(x, y) \]

      當導數爲0時就找到了對應 \(f\)\(g\) 梯度方向平行的點。

    回到定義,拉格朗日乘法只能解決等式約束問題,那對下面的不等式約束問題怎麼辦?

  • 不等式約束

    \[\begin{array}{cl}\underset{\mathbf{x}}{\operatorname{minimize}} & f(\mathbf{x}) \\\text { subject to } & g(\bold x) \geq0\end{array} \]

    Don't worry! 總有辦法🙃

    對不等式約束問題,一樣可使用拉格朗日乘數,知足以下條件:

    \[\begin{aligned}&g(x) \geq 0 \Rightarrow \lambda \geq 0\\&g(x) \leq 0 \Rightarrow \lambda \leq 0\\&g(x)=0 \Rightarrow \lambda \text { is unconstrained }\end{aligned} \]

    爲何呢?由於可行域。看圖就知道了,在等式約束部分\(x+y-1=0\) 時,可行域在直線上;當\(x+y-1 \geq 0\) 時,可行域在右上角,\(\lambda\) 大於0表示梯度方向指向可行域;同理可知小於等於的狀況。而後和等式約束求解過程同樣就能夠了。關於拉格朗日對約束問題例子,推薦閱讀[3].

    咱們在來看看對偶問題

    • 對偶問題

      In mathematical optimization theory, duality means that optimization problems may be viewed from either of two perspectives, the primal problem or the dual problem (the duality principle). The solution to the dual problem provides a lower bound to the solution of the primal (minimization) problem. (Wikipedia)

      「對偶問題是原問題的下界」,下界是啥?😖

      給定一個部分有序集合 \(R\) ,若是存在一個元素小於或等於 \(R\) 的子集的每一個元素,該元素就能夠稱爲下界。百度百科

      舉個栗子:

      給定 \(R\) 的一個子集:\(S = \{2,4,8,12\}\)

      1.  1 小於 $S$ 中每一個元素, 1 能夠是一個下界
      2.  2 小於等於$S$ 中每一個元素, 2 也能夠是一個下界

      因爲 2 大於其餘的下界,被稱爲 下确界 (最大下界)。下界有無窮個,但最大下界是惟一的。

      回到對偶問題

      若是原問題是一個極小問題,對偶問題能夠將其轉化爲求極大問題。極大問題的解就對應原極小問題的下界。有點不解其意,繼續看👇

      上圖原問題是一個極小問題, \(P\) 是極小點。對偶問題是一個極大問題, \(D\) 是極大點。很明顯, \(D\) 是一個下界。 \(P-D\) 被稱爲對偶間隔,若是 \(P-D>0\) 對應弱對偶性。若是 \(P-D=0\) 對應強對偶性。

回到SVM最優化問題

爲了求解方便,將等式(4)改寫爲凸二次型優化問題(convex quadratic optimization problem),

\[\begin{aligned}&\underset{\mathbf{w}, b}{\operatorname{minimize}} \frac{1}{2}\|\mathbf{w}\|^{2}\\&\text { subject to } y_{i}\left(\mathbf{w} \cdot \mathbf{x}_{i}\right)+b-1 \geq 0, \quad i=1, \ldots, m\end{aligned}\tag{5} \]

根據拉格朗日乘數法:

\[\mathcal{L}(\mathbf{w}, b, \alpha)= \frac{1}{2}\|\mathbf{w}\|^{2}-\sum_{i=1}^{m} \alpha_{i}\left[y_{i}\left(\mathbf{w} \cdot \mathbf{x}_{i}+b\right)-1\right]\\= \frac{1}{2}\mathbf{w}\mathbf{w}-\sum_{i=1}^{m} \alpha_{i}\left[y_{i}\left(\mathbf{w} \cdot \mathbf{x}_{i}+b\right)-1\right]\tag{6} \]

能夠轉化爲:

\[\begin{aligned}&\min _{\mathbf{w}, b} \max _{\alpha} \mathcal{L}(\mathbf{w}, b, \alpha)\\&\text { subject to } \quad \alpha_{i} \geq 0, \quad i=1, \ldots, m\end{aligned} \]

爲何原問題變成極大極小問題了?這裏有多個解釋,直觀來看,咱們要$ min \ \mathcal{L}(\mathbf{w}, b, \alpha)$ ,因爲後一項 \(\alpha >0,y_{i}\left(\mathbf{w} \cdot \mathbf{x}_{i}+b\right)-1 \geq0\),正數減正數,後一項越大對應總體值越小。

求解上述極大極小問題,求導:

\[\nabla \bold w L = \bold w- \sum_{i=1}^{m} \alpha_{i}y_{i}\mathbf{x}_{i}=0\\\frac{\partial L} {\partial b} = - \sum_{i=1}^{m} \alpha_{i}y_{i}=0\tag{7} \]

將(7)帶回到(6)

\[\begin{aligned}&\frac{1}{2}\sum_{i=1}^{m} \alpha_{i}y_{i}\mathbf{x}_{i}\sum_{j=1}^{m} \alpha_{i}y_{i}\mathbf{x}_{i}-\sum_{i=1}^{m} \alpha_{i}\left[y_{i}\left((\sum_{j=1}^{m} \alpha_{i}y_{i}\mathbf{x}_{i}) \cdot \mathbf{x}_{i}+b\right)-1\right]\\&=\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_{i}\alpha_jy_{i}y_j\mathbf{x}_{i}\mathbf{x}_{j}-\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_{i}\alpha_jy_{i}y_j\mathbf{x}_{i}\mathbf{x}_{j}-b\sum_{i=1}^{m}\alpha_{i}y_{i}+\sum_{i=1}^{m}\alpha_{i}\\&=\sum_{i=1}^{m}\alpha_{i}-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_{i}\alpha_jy_{i}y_j\mathbf{x}_{i}\mathbf{x}_{j}-b\sum_{i=1}^{m}\alpha_{i}y_{i}\\&=\sum_{i=1}^{m}\alpha_{i}-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_{i}\alpha_jy_{i}y_j\mathbf{x}_{i}\mathbf{x}_{j}\end{aligned} \]

只剩下 \(\alpha\) 了, 根據Wolfe dual problem:

\[\underset{\alpha}{maxmize}=\sum_{i=1}^{m}\alpha_{i}-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_{i}\alpha_jy_{i}y_j\mathbf{x}_{i}\mathbf{x}_{j}\\s.t.\ \alpha_i \geq0\\\sum_{i=1}^{m} \alpha_{i}y_{i}=0\tag{8} \]

  • KKT 條件

The KKT conditions are first-order necessary conditions for a solution of an optimization problem to be optimal

\[\nabla \bold w L = \bold w- \sum_{i=1}^{m} \alpha_{i}y_{i}\mathbf{x}_{i}=0\\\frac{\partial L} {\partial b} = - \sum_{i=1}^{m} \alpha_{i}y_{i}=0\\y_{i}\left(\mathbf{w} \cdot \mathbf{x}_{i}\right)+b-1 \geq 0, \quad i=1, \ldots, m\\\alpha_i \geq0\\\alpha_i [y_{i}\left(\mathbf{w} \cdot \mathbf{x}_{i}\right)+b-1]=0 \]

回到式(8),同乘 -1 轉化爲極小問題

\[\underset{\alpha}{minmize}=\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_{i}\alpha_jy_{i}y_j\mathbf{x}_{i}\mathbf{x}_{j} - \sum_{i=1}^{m}\alpha_{i}\\s.t.\ \alpha_i \leq0\\\sum_{i=1}^{m} \alpha_{i}y_{i}=0\tag{9} \]

軟間隔SVM

因爲原始SVM只能處理線性可分數據,那若是存在異常點會怎麼樣?咱們來看看

圖中出現了一個藍色的異常點,使得本來線性可分問題變得難以解決。軟間隔出場了,1995年,Vapnik and Cortes 在原始SVM的基礎上引入了鬆弛變量,容許模型「犯錯」。在原約束的基礎上增長一個變量 \(\xi\)

\[y_i(\bold{w \cdot x_i}+b) \geq1\\ y_i(\bold{w \cdot x_i}+b) \geq1-\xi_i\\ \]

咱們來看看不一樣的 \(\xi\) 對應的狀況

  • \(0\leq \xi \leq 1\) ,樣本在間隔之間,依然處於正確側,稱爲間隔衝突
  • \(1 \leq \xi\) ,樣本被誤分類
  • \(\xi\) 必須大於0,不然就沒有存在的意義了;若是每一個樣本的 \(\xi\) 很是大,約束條件必然知足,這顯然不是咱們但願的。加入正則化 \(C\)

軟間隔形式以下:

\[\underset{\bold w,b,\xi}{minmize}\quad \frac{1}{2}||\bold w||^2+C\sum ^m _i\xi_i\\ s.t. \quad y_i(\bold{w \cdot x_i}+b) \geq1-\xi_i\\ \xi_i \geq0 \quad i=1,2,...,m \]

套用拉格朗日乘數法:

\[\mathcal{L}(\mathbf{w}, b, \xi,\alpha,\beta)= \frac{1}{2}\|\mathbf{w}\|^{2} +C\sum^m_i\xi_i- \sum_{i=1}^{m} \alpha_{i}\left[y_{i}\left(\mathbf{w} \cdot \mathbf{x}_{i}+b\right)-1+\xi_i\right]-\sum^m_i\beta_i\xi_i\\\tag{10} \]

\(\bold w,b,\xi\) 分別求導後帶入上式,見式(8)\(\frac{\partial L }{\partial \xi} = C-\sum^m_i\alpha_i-\sum^m_i\beta_i=0\),因爲\(\beta\geq0,C-\alpha_i\geq0\) 故 $ 0\leq \alpha_i \leq C$。

獲得

\[\underset{\alpha}{maxmize}=\sum_{i=1}^{m}\alpha_{i}-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_{i}\alpha_jy_{i}y_j\mathbf{x}_{i}\mathbf{x}_{j}\\s.t.\ C\geq \alpha_i \geq0\\\sum_{i=1}^{m} \alpha_{i}y_{i}=0\tag{11} \]

發現了什麼,式(11)和式(9)的目標函數沒有變化。

核方法

如何處理線性不可分數據?核方法告訴咱們,在低維空間不可分的數據映射到高維空間就可分了。

舉個栗子:對二維向量\((x_1,x_2)\),使用多項式核 \(\phi:R^2 \rightarrow R^3\) 映射獲得

\[\phi (x_1,x_2) = (x_1^2,\sqrt2x_1x_2,x_2^2) \]

核函數就是在另外一個空間進行運算返回點積。引入SVM目標函數

\[\underset{\alpha}{maxmize}=\sum_{i=1}^{m}\alpha_{i}-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_{i}\alpha_jy_{i}y_jK(\mathbf{x}_{i},\mathbf{x}_{j})\\s.t.\ C\geq \alpha_i \geq0\\\sum_{i=1}^{m} \alpha_{i}y_{i}=0\tag{12} \]

下面就能夠用SMO算法求解獲得了。

歡迎留言🙃

references:

[1] http://www.robots.ox.ac.uk/~az/lectures/ml/lect2.pdf

[2] https://www.svm-tutorial.com/

[3] http://www.engr.mun.ca/~baxter/Publications/LagrangeForSVMs.pdf

[4] https://blog.csdn.net/v_JULY_v/article/details/7624837。

相關文章
相關標籤/搜索