一、支持向量機(SVM)
支持向量機,是用於解決分類問題。為什么叫做支持向量機,后面的內容再做解釋,這里先跳過。
在之前《邏輯回歸》的文章中,我們討論過,對於分類問題的解決,就是要找出一條能將數據划分開的邊界。
對於不同的算法,其定義的邊界可能是不同的,對於SVM算法,是如何定義其邊界的?其定義方法有什么優點?將是下面要討論的內容。
1、哪個模型更優
先來討論一個二分類問題。
數據樣本如下圖所示:
評判一個模型的優劣,最主要的,是其對樣本的泛化能力。
若有一個新樣本,其二維特征位置,如下圖藍色方塊所示:
也就是說,藍色邊界所表示的模型,更有代表性。
而它,也是SVM算法所得到的模型。從直觀上看,SVM確定的邊界,剛好在兩類樣本的“中間”位置,不偏不倚。
下面接着討論,SVM是如何確定邊界的。
2、支持向量機
支持向量機的基本思想是:找到集合邊緣上的若干數據(稱為支持向量),用這些點找出一個平面(稱為決策面),使得支持向量到該平面的距離最長。
該算法,依靠支持向量來求解邊界,支持向量機這個名字,也來源於此。
以上面的樣本為例,解釋SVM的步聚,如下圖:
-
找到兩類樣本邊緣的若干個樣本點,如上圖中圈起來的三個樣本
-
由上面的樣本點,找到一個決策平面,該平面與兩類樣本的向量距離最長
綜上所述,雖然還未涉及SVM的具體運算,但可以初步看出,支持向量機有如下優點:
-
計算量少。只使用了支持向量進行計算,而其他距離邊界很遠的點,其特征很明顯,不會引起歧義,不用參與計算。
-
泛化能力好。因其定義的邊界,距離正負樣本距離是最長的,具備良好的區分效果。
二、SVM推導
本節,將討論SVM尋找決策面的數學推理過程。
根據數據集的屬性,可以將這個問題分為兩個層次:
-
線性可分:數據分布簡單,如上面的例子。可以找到一個超平面,直接在原始空間中將數據進行切分。
-
線性不可分:數據分布復雜,不存在這樣的超平面,則通過將原始空間映射到一個高維空間,在高維空間對數據進行划分。
1、線性可分決策面
線性可分是一個最簡單的分類問題,下面做推導。
1.1、首先是樣本集
其中,\(y\) 的取值為 {+1,−1}。
1.2、決策面方程
從第一節知道,分類的手段是取得一個符合條件的決策平面。
平面可以用方程表示:
那么問題的解決,則轉化為找到符合條件的 \(w\) 和 \(b\),條件是:使得數據集邊緣若干點,到這個平面的距離是最長的。
因兩類數據分布在決策平面的兩側,所以,\(y = -1\) 的樣本點所在區域可表示為:
同理, \(y = +1\) 的樣本點所在區域為:
那么支持向量所在的平面可以表示為:
在后面的優化中,其實\(A\)的值為多少,並不影響結果,為了方便計算,令 \(A = 1\),即:
如下圖所示:
有了決策平面,接下來便是要計算支持向量到決策平台的距離,當該距離最長時所得到的參數,就是所需要的解。
由幾何知識可知,點到平面的距離可以表示為:
此距離稱為幾何距離,存在正負。
而算法的目標,就是找到一個集合 \(x\) (支持向量),使得 \(\gamma\) 的值最小。
因 \(y\) 的取值為{+1,−1},所以上式可以乘上一個 \(y\),使該距離恆為正。
所以最大距離可表示為:
結合上一節的假設,支持向量所在方程:
故而
則最大距離簡化為
求解上式最大值,等同於求解下式的最小化值
這里增加了一個1/2系數、和一個平方,是為了方便求導。一求導兩者就相消了。
這個式子有還有一些限制條件,完整的寫下來,應該是這樣的:
s.t.后面的限制條件可以看做是一個凸多面體,我們要做的就是在這個凸多面體中找到最優解。
求解該式,可以用拉格朗日乘子法去解,使用了KKT條件的理論。
1.4、求最優解
對於具體的求解理論,這里不進行討論,直接給出待求解式子的拉格朗日目標函數,如下,目標是讓 $L(w,b,a) $ 針對 $ a $ 達到最大值:
如何求解?
\(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,即:
求解上面的導數,得到:
將上兩式代入 $L(w,b,a) $,得到對偶問題的表達式:
於是新的目標問題及限制條件為(對偶問題):
這個就是我們需要最終優化的式子,只關於 \(α\) 向量的式子。
(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)\)
超平台變為:
2.2 求最優解
整個推理過程,與線性可分的基本一樣,唯一不同的,是將各個公式化中的 \(x\),換成 \(\phi(x)\)。
即得到對遇問題:
令:
這個式子所做的事情就是將線性的空間映射到高維的空間,K函數有很多種,下面是比較典型的兩種:
- 多項式核
- 高斯核
最后一樣能通過各類軟件包,例如SMO,實現求解。