前言:git
在學習機器學習的過程當中,我一直有總結的習慣,只不過是侷限於紙張層面的,有利於平時拿過來就能看,還有一個緣由是:寫博客時,手敲公式實在太麻煩。不過,前幾天偶然發現一個寫公式的神器(Mathpix Snipping Tool),終於有動力把筆記整理出來。github
這篇寫SVM的緣由是,我對SVM一直理解不太透徹,藉助此次機會我又查了一些資料,但願此次徹底解釋清楚,錯誤之處歡迎指正,我會盡快修正。算法
本章節內容主要參考於七月在線機器學習視頻課程,七月在線題庫,七月在線陳老師課件,以及李航統計學習方法 。機器學習
1.如何理解分類
分類的本質就是尋找決策邊界,SVM的目的就是找到一個決策邊界,分開正負樣本,而且樣本點到邊界的距離越遠越好。ide
咱們能夠先用Logistic迴歸來理解。函數
給定訓練數據集,若是用x表示數據點,用y表示類別(y能夠取1或者0,分別表明兩個不一樣的類),Logistic迴歸中就是找到一個決策邊界$$\theta^{T} x=0$$,帶入x後,獲得自由變量,因爲自變量的取值範圍是負無窮到正無窮。所以,使用logistic函數(或稱做sigmoid函數)將自變量映射到(0,1)上:學習
$$ h_{\theta}(x)=g\left(\theta^{T} x\right)=\frac{1}{1+e^{-\theta^{T} x}} $$優化
其中x是n維特徵向量,函數g就是logistic函數。spa
從而,當咱們要判別一個新來的特徵屬於哪一個類時,只需求便可,若大於0.5就是y=1的類,反之屬於y=0類。3d
而後,咱們對logistic迴歸作個變形。首先,將使用的結果標籤y = 0和y = 1替換爲y = -1,y = 1,而後將
($\theta^{T} x=\theta_{0}+\theta_{1} x_{1}+\theta_{2} x_{2}+\cdots+\theta_{n} x_{n}$)中的$\theta_{0}$替換爲b,最後將後面的($\theta_{1} x_{1}+\theta_{2} x_{2}+\dots+\theta_{n} x_{n}$)替換爲($\theta_{1} x_{1}+\theta_{2} x_{2}+\dots+\theta_{n} x_{n}$)(即$w^{T} x$),這樣就有了$\theta^{T} x=w^{T} x+b$,這裏其實就是決策邊界的另外一種表達方式。帶入到變換中,獲得的公式:$h_{w, b}(\mathrm{x})=g\left(w^{T} x+\mathrm{b}\right)$,將其映射到y上,以下:
$$ g(z)=\left{\begin{aligned} 1, & z \geq 0 \-1, & z<0 \end{aligned}\right. $$
2.另外一種分類
在SVM中,邊界函數就是$f(x)=w^{T} x+b$。表示,當f(x) 等於0的時候,x即是位於超平面上的點,而f(x)大於0的點對應 y=1 的數據點,f(x)小於0的點對應y=-1的點。
在進行分類的時候,遇到一個新的數據點x,將x代入f(x) 中,若是f(x)小於0則將x的類別賦爲0,若是f(x)大於0則將x的類別賦爲1。
線性可分支持向量機(硬間隔支持向量機):給定線性可分訓練數據集,經過間隔最大化或等價地求解相應地凸二次規劃問題學習獲得分離超平面爲$f(x)=w^{T} x+b$
以及相應的分類決策函數
$$ \begin{align*} \& f \left( x \right) = sign \left( w^{T} \cdot x + b \right) \end{align*} $$
稱爲線型可分支持向量機。
3.函數間隔和幾何間隔
在超平面wx+b=0肯定的狀況下,$\left|\mathrm{w}^{\star} x+b\right|$可以表示點x到距離超平面的遠近,而經過觀察wx+b的符號與類標記y的符號是否一致可判斷分類是否正確,因此,能夠用$\left(y^{*}\left(w^{\star} x+b\right)\right)$的正負性來斷定或表示分類的正確性。
於此,便引出了函數間隔的概念。
函數間隔用$\hat{\gamma}$表示,超平面關於樣本點的函數間隔爲:
$$ \hat{\gamma}=y\left(w^{T} x+b\right)=y f(x) $$
超平面(w,b)關於T中全部樣本點(xi,yi)的函數間隔最小值(其中,x是特徵,y是結果標籤,i表示第i個樣本),便爲超平面(w, b)關於訓練數據集T的函數間隔:
$$ \hat{\gamma}=\min \hat{\gamma} \mathrm{i}(\mathrm{i}=1, \ldots \mathrm{n}) $$
即超平面關於訓練集𝑇中全部樣本點的函數間隔的最小值。
超平面關於樣本點的幾何間隔爲:
$$ \begin{align*} \& \gamma_{i} = y_{i} \left( \dfrac{w}{| w |} \cdot x_{i} + \dfrac{b}{| w |} \right) \end{align*} $$
超平面關於訓練集$T$的幾何間隔:
$$ \begin{align*} \& \gamma = \min_{i = 1, 2, \cdots, N} \gamma_{i} \end{align*} $$
即超平面關於訓練集$T$中全部樣本點的幾何間隔的最小值。
下面介紹一下幾何間隔是怎麼來的:
因爲這樣定義的函數間隔有問題,即若是成比例的改變w和b(如將它們改爲2w和2b),則函數間隔的值f(x)卻變成了原來的2倍(雖然此時超平面沒有改變),因此只有函數間隔還遠遠不夠。
咱們能夠對法向量w加些約束條件,從而引出真正定義點到超平面的距離--幾何間隔(geometrical margin)的概念。
假定對於一個點$x$ ,令其垂直投影到超平面上的對應點爲 $x_{0}$,$w$是垂直於超平面的一個向量,$\gamma$爲樣本$x$到超平面的距離,
根據平面幾何知識,有
$$ x=x_{0}+\gamma \frac{w}{|w|} $$
其中$\frac{w}{|w|}$是單位向量。
又因爲$\boldsymbol{w}^{T} \boldsymbol{x}+\boldsymbol{b}=0$ 是超平面上的點,代入超平面的方程$w^{T} x_{0}+b=0$,可得$w^{T} x_{0}+b=0$,即$w^{T} x_{0}=-b$。
隨即讓此式$x=x_{0}+\gamma \frac{w}{|w|}$的兩邊同時乘以$w^{T}$,再根據$w^{T} x_{0}=-b$和$w^{T} w=|w|^{2}$,便可算出γ:
$$ \gamma=\frac{w^{T} x+b}{|w|}=\frac{f(x)}{|w|} $$
爲了獲得的$\gamma$絕對值,令$\gamma$乘上對應的類別 y,便可得出幾何間隔(用$\tilde{\gamma}$表示)的定義:
$$ \tilde{\gamma}=y \gamma=\frac{\hat{\gamma}}{|w|} $$
幾何間隔就是函數間隔除以$$||w||$$,並且函數間隔y*(wx+b) = y*f(x)實際上就是$|f(x)|$,只是人爲定義的一個間隔度量,而幾何間隔$|f(x)|/||w||$纔是直觀上的點到超平面的距離。
4.最大間隔分類器
對一個數據點進行分類,當超平面離數據點的「間隔」越大,分類的確信度(confidence)也越大。因此,爲了使得分類的確信度儘可能高,須要讓所選擇的超平面可以最大化這個「間隔」值。這個間隔就是下圖中的Gap的一半。
函數間隔不適合用來最大化間隔值,由於在超平面固定之後,能夠等比例地縮放w的長度和b的值,這樣可使得$f(x)=w^{T} x+b$的值任意大,就是說函數間隔$\hat{\gamma}$能夠在超平面保持不變的狀況下被取得任意大。但幾何間隔由於除上了$|w|$,使得在縮放w和b的時候幾何間隔的值$\tilde{\gamma}$是不會改變的,它只隨着超平面的變更而變更,所以,這是更加合適的一個間隔。換言之,這裏要找的最大間隔分類超平面中的「間隔」指的是幾何間隔。
(硬間隔)支持向量:訓練數據集的樣本點中與分離超平面距離最近的樣本點的實例,即便約束條件等號成立的樣本點
$$ \begin{align*} \ & y_{i} \left( w \cdot x_{i} + b \right) -1 = 0 \end{align*} $$
對$y_{i} = +1$的正例點,支持向量在超平面
$$ \begin{align*} \ & H_{1}:w \cdot x + b = 1 \end{align*} $$
對$y_{i} = -1$的正例點,支持向量在超平面
$$ \begin{align*} \ & H_{1}:w \cdot x + b = -1 \end{align*} $$
$H_{1}$和$H_{2}$稱爲間隔邊界。
$H_{1}$和$H_{2}$之間的距離稱爲間隔,且$|H_{1}H_{2}| = \dfrac{1}{| w |} + \dfrac{1}{| w |} = \dfrac{2}{| w |}$。
最大間隔分離超平面等價爲求解
$$ \begin{align*} \& \max_{w,b} \quad \gamma \ & s.t. \quad y_{i} \left( \dfrac{w}{| w |} \cdot x_{i} + \dfrac{b}{| w |} \right) \geq \gamma, \quad i=1,2, \cdots, N \end{align*} $$
回顧下幾何間隔的定義$\tilde{\gamma}=y \gamma=\frac{\hat{\gamma}}{|w|}$,可知:若是令函數間隔$\hat{\gamma}$等於1(這裏的$\hat{\gamma}$指的是關於訓練數據集T的函數間隔$min\hat{\gamma}_i=1$,之因此令$\hat{\gamma}$等於1,是爲了方便推導和優化,且這樣作對目標函數的優化沒有影響),則有幾何間隔$\tilde{\gamma}=1 /|w|$。
從而上述目標函數轉化成了$y_{i}\left(w^{T} x_{i}+b\right) \geq 1, i=1, \dots, n$
等價的,最大間隔分離超平面轉換爲:
$$ \begin{align*} \ & \max_{w,b} \quad \dfrac{1}{| w |} \ & s.t. \quad y_{i} \left( w \cdot x_{i} + b \right) \geq \hat \gamma, \quad i=1,2, \cdots, N \end{align*} $$
等價的
$$ \begin{align*} \ & \min_{w,b} \quad \dfrac{1}{2} | w |^{2} \ & s.t. \quad y_{i} \left( w \cdot x_{i} + b \right) -1 \geq 0, \quad i=1,2, \cdots, N \end{align*} $$
以下圖所示,中間的實線即是尋找到的最優超平面(Optimal Hyper Plane),其到兩條虛線邊界的距離相等,這個距離即是幾何間隔,兩條虛線間隔邊界之間的距離等於2,而虛線間隔邊界上的點則是支持向量。因爲這些支持向量恰好在虛線間隔邊界上,因此它們知足$y\left(w^{T} x+b\right)=1$ ,上節中:爲了方便推導和優化的目的,咱們能夠令$min\hat{\gamma}_i=1$,而對於全部不是支持向量的點,則顯然有$y\left(w^{T} x+b\right)>1$。
5.SVM求解思路:
線性可分支持向量機學習算法(最大間隔法):
輸入:線性可分訓練數據集$T = \left{ \left( x_{1}, y_{1} \right), \left( x_{2}, y_{2} \right), \cdots, \left( x_{N}, y_{N} \right) \right}$,其中$x_{i} \in \mathcal{X} = R^{n}, y_{i} \in \mathcal{Y} = \left{ +1, -1 \right}, i = 1, 2, \cdots, N$
輸出:最大間隔分離超平面和分類決策函數
-
構建並求解約束最優化問題
$$ \begin{align*} \ & \min_{w,b} \quad \dfrac{1}{2} | w |^{2} \ & s.t. \quad y_{i} \left( w \cdot x_{i} + b \right) -1 \geq 0, \quad i=1,2, \cdots, N \end{align*} $$
求得最優解$w^{}, b^{}$。
-
獲得分離超平面
$$ \begin{align*} \ & w^{} \cdot x + b^{} = 0 \end{align*} $$
以及分類決策函數
$$ \begin{align*} \& f \left( x \right) = sign \left( w^{} \cdot x + b^{} \right) \end{align*} $$
6.解SVM
對於目標函數:
$$ \begin{align*} \ & \min_{w,b} \quad \dfrac{1}{2} | w |^{2} \ & s.t. \quad y_{i} \left( w \cdot x_{i} + b \right) -1 \geq 0, \quad i=1,2, \cdots, N \end{align*} $$
由於如今的**目標函數是二次的,約束條件是線性的,因此它是一個凸二次規劃問題****。這個問題能夠用現成的QP (Quadratic Programming) 優化包進行求解。一言以蔽之:在必定的約束條件下,目標最優,損失最小。
因爲這個問題的特殊結構,還能夠經過拉格朗日對偶性(Lagrange Duality)變換到對偶變量 (dual variable) 的優化問題,即經過求解與原問題等價的對偶問題(dual problem)獲得原始問題的最優解,這就是線性可分條件下支持向量機的對偶算法,這樣作的優勢在於:一者對偶問題每每更容易求解;兩者能夠天然的引入核函數,進而推廣到非線性分類問題。
那什麼是拉格朗日對偶性呢?簡單來說,經過給每個約束條件加上一個拉格朗日乘子(Lagrange multiplier),定義拉格朗日函數(經過拉格朗日函數將約束條件融合到目標函數裏去,從而只用一個函數表達式便能清楚的表達出咱們的問題):
最優化問題的求解:
-
引入拉格朗日乘子$\alpha_{i} \geq 0, i = 1, 2, \cdots, N$構建拉格朗日函數
$$ \begin{align*} \ & L \left( w, b, \alpha \right) = \dfrac{1}{2} | w |^{2} + \sum_{i=1}^{N} \alpha_{i} \left[- y_{i} \left( w \cdot x_{i} + b \right) + 1 \right] \ & = \dfrac{1}{2} | w |^{2} - \sum_{i=1}^{N} \alpha_{i} y_{i} \left( w \cdot x_{i} + b \right) + \sum_{i=1}^{N} \alpha_{i} \end{align*} $$
其中,$\alpha = \left( \alpha_{1}, \alpha_{2}, \cdots, \alpha_{N} \right)^{T}$爲拉格朗日乘子向量。
-
求$\min_{w,b}L \left( w, b, \alpha \right)$:
$$ \begin{align*} \ & \nabla {w} L \left( w, b, \alpha \right) = w - \sum{i=1}^{N} \alpha_{i} y_{i} x_{i} = 0 \ & \nabla {b} L \left( w, b, \alpha \right) = -\sum{i=1}^{N} \alpha_{i} y_{i} = 0 \end{align*} $$
得
$$ \begin{align*} \ & w = \sum_{i=1}^{N} \alpha_{i} y_{i} x_{i}
\ & \sum_{i=1}^{N} \alpha_{i} y_{i} = 0 \end{align*} $$
代入拉格朗日函數,得
$$ \begin{align*} \ & L \left( w, b, \alpha \right) = \dfrac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} \left( x_{i} \cdot x_{j} \right) - \sum_{i=1}^{N} \alpha_{i} y_{i} \left[ \left( \sum_{j=1}^{N} \alpha_{j} y_{j} x_{j} \right) \cdot x_{i} + b \right] + \sum_{i=1}^{N} \alpha_{i} \ & = - \dfrac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} \left( x_{i} \cdot x_{j} \right) - \sum_{i=1}^{N} \alpha_{i} y_{i} b + \sum_{i=1}^{N} \alpha_{i} \ & = - \dfrac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} \left( x_{i} \cdot x_{j} \right) + \sum_{i=1}^{N} \alpha_{i} \end{align*} $$
即
$$ \begin{align*} \ & \min_{w,b}L \left( w, b, \alpha \right) = - \dfrac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} \left( x_{i} \cdot x_{j} \right) + \sum_{i=1}^{N} \alpha_{i} \end{align*} $$
3.求$\max_{\alpha} \min_{w,b}L \left( w, b, \alpha \right)$:
$$ \begin{align*} \ & \max_{\alpha} - \dfrac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} \left( x_{i} \cdot x_{j} \right) + \sum_{i=1}^{N} \alpha_{i}
\ & s.t. \sum_{i=1}^{N} \alpha_{i} y_{i} = 0 \ & \alpha_{i} \geq 0, \quad i=1,2, \cdots, N \end{align*} $$
等價的
$$ \begin{align*} \ & \min_{\alpha} \dfrac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} \left( x_{i} \cdot x_{j} \right) - \sum_{i=1}^{N} \alpha_{i}
\ & s.t. \sum_{i=1}^{N} \alpha_{i} y_{i} = 0 \ & \alpha_{i} \geq 0, \quad i=1,2, \cdots, N \end{align*} $$
線性可分支持向量機(硬間隔支持向量機)學習算法:
輸入:線性可分訓練數據集$T = \left{ \left( x_{1}, y_{1} \right), \left( x_{2}, y_{2} \right), \cdots, \left( x_{N}, y_{N} \right) \right}$,其中$x_{i} \in \mathcal{X} = R^{n}, y_{i} \in \mathcal{Y} = \left{ +1, -1 \right}, i = 1, 2, \cdots, N$
輸出:最大間隔分離超平面和分類決策函數
-
構建並求解約束最優化問題
$$ \begin{align*} \ & \min_{\alpha} \dfrac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} \left( x_{i} \cdot x_{j} \right) - \sum_{i=1}^{N} \alpha_{i}
\ & s.t. \sum_{i=1}^{N} \alpha_{i} y_{i} = 0 \ & \alpha_{i} \geq 0, \quad i=1,2, \cdots, N \end{align*} $$
求得最優解$\alpha^{} = \left( \alpha_{1}^{}, \alpha_{1}^{}, \cdots, \alpha_{N}^{} \right) $。
-
計算
$$ \begin{align*} \ & w^{} = \sum_{i=1}^{N} \alpha_{i}^{} y_{i} x_{i} \end{align*} $$
並選擇$\alpha^{}$的一個正份量$\alpha_{j}^{} > 0$,計算
$$ \begin{align*} \ & b^{} = y_{j} - \sum_{i=1}^{N} \alpha_{i}^{} y_{i} \left( x_{i} \cdot x_{j} \right) \end{align*} $$
-
獲得分離超平面
$$ \begin{align*} \ & w^{} \cdot x + b^{} = 0 \end{align*} $$
以及分類決策函數
$$ \begin{align*} \& f \left( x \right) = sign \left( w^{} \cdot x + b^{} \right) \end{align*} $$
-
7.線性支持向量機(軟間隔支持向量機)
以上分析的是硬間隔支持向量機,在間隔空間中沒有樣本,樣本集是線性可分的。但若是給定線性不可分訓練數據集,則須要增長鬆弛因子,再經過求解凸二次規劃問題 ,獲得分離超平面。
$$ \begin{align*} \ & \min_{w,b,\xi} \quad \dfrac{1}{2} | w |^{2} + C \sum_{i=1}^{N} \xi_{i} \ & s.t. \quad y_{i} \left( w \cdot x_{i} + b \right) \geq 1 - \xi_{i} \ & \xi_{i} \geq 0, \quad i=1,2, \cdots, N \end{align*} $$
學習獲得分離超平面爲
$$ \begin{align*} \& w^{} \cdot x + b^{} = 0 \end{align*} $$
以及相應的分類決策函數
$$ \begin{align*} \& f \left( x \right) = sign \left( w^{} \cdot x + b^{} \right) \end{align*} $$
稱爲線型支持向量機。
8.核函數
大部分時候數據並非線性可分的,這個時候知足這樣條件的超平面就根本不存在。在上文中,咱們已經瞭解到了SVM處理線性可分的狀況,那對於非線性的數據SVM咋處理呢?對於非線性的狀況,SVM 的處理方法是選擇一個核函數 κ(⋅,⋅) ,經過將數據映射到高維空間,來解決在原始空間中線性不可分的問題 。
具體來講,在線性不可分的狀況下,支持向量機首先在低維空間中完成計算,而後經過核函數將輸入空間映射到高維特徵空間,最終在高維特徵空間中構造出最優分離超平面,從而把平面上自己很差分的非線性數據分開。如圖所示,一堆數據在二維空間沒法劃分,從而映射到三維空間裏劃分:
經常使用核函數:
-
多項式核函數
$$ \begin{align*} \& K \left( x, z \right) = \left( x \cdot z + 1 \right)^{p} \end{align*} $$
-
高斯核函數
$$ \begin{align*} \& K \left( x, z \right) = \exp \left( - \dfrac{| x - z |^{2}}{2 \sigma^{2}} \right) \end{align*} $$
非線性支持向量機:從非線性分類訓練集,經過核函數與軟間隔最大化,學習獲得分類決策函數
$$ \begin{align*} \& f \left( x \right) = sign \left( \sum_{i=1}^{N} \alpha_{i}^{} y_{i} K \left(x, x_{i} \right) + b^{} \right) \end{align*} $$
稱爲非線性支持向量機,$K \left( x, z \right)$是正定核函數。