機器學習之四:支持向量機推導


一、支持向量機(SVM)

支持向量機,是用於解決分類問題。為什么叫做支持向量機,后面的內容再做解釋,這里先跳過。

在之前《邏輯回歸》的文章中,我們討論過,對於分類問題的解決,就是要找出一條能將數據划分開的邊界。

對於不同的算法,其定義的邊界可能是不同的,對於SVM算法,是如何定義其邊界的?其定義方法有什么優點?將是下面要討論的內容。

1、哪個模型更優

先來討論一個二分類問題。

數據樣本如下圖所示:

![image](https://wx2.sinaimg.cn/mw690/ec98cc4agy1fp35a8rv0pj209506qgld.jpg)
其可能的划分邊界可能是如下圖中的藍線、紅線:
![image](https://wx1.sinaimg.cn/mw690/ec98cc4agy1fp35a8rj4oj2098071wea.jpg)
圖中的藍、紅兩種分類邊界,都能達到分類的效果,但是哪一個效果更優?

評判一個模型的優劣,最主要的,是其對樣本的泛化能力。

若有一個新樣本,其二維特征位置,如下圖藍色方塊所示:

![image](https://wx3.sinaimg.cn/mw690/ec98cc4agy1fp35a8rny5j209d06x743.jpg)
兩個模型,所得到的結果,顯然是各不相同的,但從聚類的情況來看,該樣本更偏向於“圓”的分類。

也就是說,藍色邊界所表示的模型,更有代表性。

而它,也是SVM算法所得到的模型。從直觀上看,SVM確定的邊界,剛好在兩類樣本的“中間”位置,不偏不倚

下面接着討論,SVM是如何確定邊界的。

2、支持向量機

支持向量機的基本思想是:找到集合邊緣上的若干數據(稱為支持向量),用這些點找出一個平面(稱為決策面),使得支持向量到該平面的距離最長。

該算法,依靠支持向量來求解邊界,支持向量機這個名字,也來源於此。

以上面的樣本為例,解釋SVM的步聚,如下圖:

![image](https://wx1.sinaimg.cn/mw690/ec98cc4agy1fp35a8sgr3j209207eq2r.jpg)
如下兩步:
  • 找到兩類樣本邊緣的若干個樣本點,如上圖中圈起來的三個樣本

  • 由上面的樣本點,找到一個決策平面,該平面與兩類樣本的向量距離最長

綜上所述,雖然還未涉及SVM的具體運算,但可以初步看出,支持向量機有如下優點:

  • 計算量少。只使用了支持向量進行計算,而其他距離邊界很遠的點,其特征很明顯,不會引起歧義,不用參與計算。

  • 泛化能力好。因其定義的邊界,距離正負樣本距離是最長的,具備良好的區分效果。

二、SVM推導

本節,將討論SVM尋找決策面的數學推理過程。

根據數據集的屬性,可以將這個問題分為兩個層次:

  • 線性可分:數據分布簡單,如上面的例子。可以找到一個超平面,直接在原始空間中將數據進行切分。

  • 線性不可分:數據分布復雜,不存在這樣的超平面,則通過將原始空間映射到一個高維空間,在高維空間對數據進行划分。

1、線性可分決策面

線性可分是一個最簡單的分類問題,下面做推導。

1.1、首先是樣本集

\[{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)} \]

其中,\(y\) 的取值為 {+1,−1}。

1.2、決策面方程

從第一節知道,分類的手段是取得一個符合條件的決策平面。

平面可以用方程表示:

\[w^Tx + b = 0 \]

那么問題的解決,則轉化為找到符合條件的 \(w\)\(b\),條件是:使得數據集邊緣若干點,到這個平面的距離是最長的。

因兩類數據分布在決策平面的兩側,所以,\(y = -1\) 的樣本點所在區域可表示為:

\[w^Tx + b < 0 \]

同理, \(y = +1\) 的樣本點所在區域為:

\[w^Tx + b > 0 \]

那么支持向量所在的平面可以表示為:

\[w^Tx + b = \pm A \]

在后面的優化中,其實\(A\)的值為多少,並不影響結果,為了方便計算,令 \(A = 1\),即:

\[w^Tx + b = \pm 1 \]

如下圖所示:

![image](https://wx4.sinaimg.cn/mw690/ec98cc4agy1fpr7s3i3n4j20a8083weo.jpg)
#### 1.3、計算最長距離

有了決策平面,接下來便是要計算支持向量到決策平台的距離,當該距離最長時所得到的參數,就是所需要的解。

由幾何知識可知,點到平面的距離可以表示為:

\[\gamma = \frac{w^Tx+b}{{||w||}} \]

此距離稱為幾何距離,存在正負。

而算法的目標,就是找到一個集合 \(x\) (支持向量),使得 \(\gamma\) 的值最小。

\(y\) 的取值為{+1,−1},所以上式可以乘上一個 \(y\),使該距離恆為正。

所以最大距離可表示為:

\[\gamma_{max} = max({\frac{y(w^Tx+b)}{{||w||}}}) \]

結合上一節的假設,支持向量所在方程:

\[w^Tx + b = \pm 1 \]

故而

\[y(w^Tx+b) = 1 \]

則最大距離簡化為

\[\gamma_{max} = max({\frac{1}{{||w||}}}) \]

求解上式最大值,等同於求解下式的最小化值

\[min({\frac{1}{{2}}}||w||^2) \]

這里增加了一個1/2系數、和一個平方,是為了方便求導。一求導兩者就相消了。

這個式子有還有一些限制條件,完整的寫下來,應該是這樣的:

\[min({\frac{1}{{2}}}||w||^2),s.t,y(w^Tx+b)\geq1 \]

s.t.后面的限制條件可以看做是一個凸多面體,我們要做的就是在這個凸多面體中找到最優解。

求解該式,可以用拉格朗日乘子法去解,使用了KKT條件的理論。

1.4、求最優解

對於具體的求解理論,這里不進行討論,直接給出待求解式子的拉格朗日目標函數,如下,目標是讓 $L(w,b,a) $ 針對 $ a $ 達到最大值:

\[L(w,b,a) =\frac{1}{{2}}||w||^2-\sum_{i=1}^n \alpha_i(y_i(w^Tx+b)-1) \]

如何求解?

\(L\) 是關於 \(w、b、a\) 三個變量的函數,要得到使得 \(L\) 最大的 \(a\),需進行兩步操作:

  • 首先需要先排除掉 \(w\)\(b\) 的影響,\(L\)關於\(w、b\) 最小化。如此一來,不管 \(w、b\) 如何改變,\(L\) 都不會再變小

  • 接着再讓 \(L\) 關於 \(a\) 取最大值

(1)求\(L\) 關於 \(w、b\) 最小值

在可導的情況下,極值在導數為0的位置。於是令 \(L\) 關於 \(w、b\) 的偏導數為0,即:

\[\frac{\partial L}{\partial w} = 0 \]

\[\frac{\partial L}{\partial b} = 0 \]

求解上面的導數,得到:

\[w=\sum_{i=1}^n\alpha_iy_ix_i \]

\[\sum_{i=1}^n\alpha_iy_i = 0 \]

將上兩式代入 $L(w,b,a) $,得到對偶問題的表達式:

\[L(w,b,a) =\frac{1}{{2}}\sum_{i=1}^n\alpha_i - \frac{1}{{2}}\sum_{i,j=1}^n\alpha_i\alpha_jy_iy_jx^T_ix_j \]

於是新的目標問題及限制條件為(對偶問題):

\[\begin{cases} max_a(\sum_{i=1}^n\alpha_i - \frac{1}{{2}}\sum_{i,j=1}^n\alpha_i\alpha_jy_iy_jx^T_ix_j) \\ \\ s.t.,\alpha \geq0,i=1,2,...,n \\ \\ \sum_{i=1}^n\alpha_iy_i = 0 \end{cases} \]

這個就是我們需要最終優化的式子,只關於 \(α\) 向量的式子。

(2) L關於 \(α\) 的最大值

上式最終的對偶問題,是一個凸二次規划問題,理論上用任何一個解決凸二次規划的軟件包都可以解決。

一般使用SMO算法,輸入是樣本,輸出是 \(a\)

SMO基本思想是,不斷執行如下兩個步驟,直至收斂:

  • 選取一對參數\((\alpha_i,\alpha_j)\)

  • 固定 \(\alpha\) 向量的其他參數,將\((\alpha_i,\alpha_j)\)代入上述表達式進行求最優解獲得更新后的\((\alpha_i,\alpha_j)\)

解出 \(a\) 后,\(w、b\)也就確定下來,進而能得到決策面。

具體的SMO算法細節,有些超過本文的定位,就不在此處展開。

2、線性不可分決策面

上面討論了線性可分的數據集的處理方式。但是,實際應用中的數據樣本,可能更多的是線性不可分的,即不能找到一個可以將數據分類的超平面。

這種情況下,一般使用核函數將原始空間映射到一個高維空間,在高維高間對數據進行划分。理論上只要維度足夠高,那么總能做到分類。

2.1 決策面方程

在線性可分的基礎上,將樣本 \(x\),進行一次變換,得到\(\phi(x)\)

超平台變為:

\[w^T\phi(x) + b = 0 \]

2.2 求最優解

整個推理過程,與線性可分的基本一樣,唯一不同的,是將各個公式化中的 \(x\),換成 \(\phi(x)\)

即得到對遇問題:

\[\begin{cases} max_a(\sum_{i=1}^n\alpha_i - \frac{1}{{2}}\sum_{i,j=1}^n\alpha_i\alpha_jy_iy_j\phi(x_i)^T\phi(x_j)) \\ \\ s.t.,\alpha \geq0,i=1,2,...,n \\ \\ \sum_{i=1}^n\alpha_iy_i = 0 \end{cases} \]

令:

\[\phi(x_i)^T\phi(x_j) = K(x_i,x_j) \]

這個式子所做的事情就是將線性的空間映射到高維的空間,K函數有很多種,下面是比較典型的兩種:

  • 多項式核

\[K(x_i,x_j) = (x_i.x_j+1)^d \]

  • 高斯核

\[K(x_i,x_j) = exp(-\frac{(x_i-x_j)^2}{2\sigma^2}) \]

最后一樣能通過各類軟件包,例如SMO,實現求解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM