支持向量機SVM算法原理

SVM 的英文叫 Support Vector Machine,中文名爲支持向量機。它是常見的一種分類方法,在機器學習中,SVM 是有監督的學習模型。

什麼是有監督的學習模型呢?它指的是我們需要事先對數據打上分類標籤,這樣機器就知道這個數據屬於哪個分類。同樣無監督學習,就是數據沒有被打上分類標籤,這可能是因爲我們不具備先驗的知識,或者打標籤的成本很高。所以我們需要機器代我們部分完成這個工作,比如將數據進行聚類,方便後續人工對每個類進行分析。

SVM 作爲有監督的學習模型,通常可以幫我們模式識別、分類以及迴歸分析。

先看一張圖,明白超平面的概念:

二維平面內,用曲線將顏色球分開了;進一步,三維立體層面?

在這裏,二維平面變成了三維空間。原來的曲線變成了一個平面。這個平面,就叫做超平面。

SVM 的工作原理

用 SVM 計算的過程就是幫我們找到那個超平面的過程,這個超平面就是我們的 SVM 分類器。

上圖中,直線 A、直線 B 和直線 C,究竟哪種纔是更好的劃分呢?

B直線更好,因爲B與藍色球靠的很近;A直線更好,因爲A與紅色球更近;但,實際生活中,藍色球可能會朝着紅色區域移動,紅色球會向着藍色區域移動;所以,最終A直線更好,因爲它的魯棒性更好。

魯棒性/抗變換性(英文:robustness)原是統計學中的一個專門術語,20世紀初在控制理論的研究中流行起來,用以表徵控制系統對特性或參數擾動不敏感性

那怎樣才能尋找到直線 C 這個更優的答案呢?這裏,我們引入一個 SVM 特有的概念:分類間隔。

在保證決策面不變,且分類不產生錯誤的情況下,我們可以移動決策面 C,直到產生兩個極限的位置:如圖中的決策面 A 和決策面 B。極限的位置是指,如果越過了這個位置,就會產生分類錯誤。這樣的話,兩個極限位置 A 和 B 之間的分界線 C 就是最優決策面。極限位置到最優決策面 C 之間的距離,就是“分類間隔”,英文叫做 margin。

如果我們轉動這個最優決策面,你會發現可能存在多個最優決策面,它們都能把數據集正確分開,這些最優決策面的分類間隔可能是不同的,而那個擁有“最大間隔”(max margin)的決策面就是 SVM 要找的最優解。

點到超平面的距離公式

必要的數學公式可以幫助我們理解模型的原理。

超平面的數學表達可以寫成:

在這個公式裏,w、x 是 n 維空間裏的向量,其中 x 是函數變量;w 是法向量。法向量這裏指的是垂直於平面的直線所表示的向量,它決定了超平面的方向。b是位移項,決定原點到超平面的距離。(法向量+距離可以唯一確定超平面的位置)

SVM 就是幫我們找到一個超平面,這個超平面能將不同的樣本劃分開,同時使得樣本集中的點到這個分類超平面的最小距離(即分類間隔)最大化。

在這個過程中,支持向量就是離分類超平面最近的樣本點,實際上如果確定了支持向量也就確定了這個超平面。所以支持向量決定了分類間隔到底是多少,而在最大間隔以外的樣本點,其實對分類都沒有意義。

所以說, SVM 就是求解最大分類間隔的過程,我們還需要對分類間隔的大小進行定義。

首先,我們定義某類樣本集到超平面的距離是這個樣本集合內的樣本到超平面的最短距離。我們用 di 代表點 xi 到超平面 wxi+b=0 的歐氏距離。因此我們要求 di 的最小值,用它來代表這個樣本到超平面的最短距離。di 可以用公式計算得出:

其中||w||爲超平面的範數,di 的公式可以用解析幾何知識進行推導;我們尋找的最大間隔max\frac{2}{||w||}就是支持向量機

支持向量機的求解通常藉助於凸優化技術,如何提高效率,使得svm能夠運用到大規模數據中,一直是研究的熱點問題。

最大間隔的優化模型

在數學上,最大間隔的優化模型是一個凸優化問題(凸優化就是關於求凸集中的凸函數最小化的問題)。通過凸優化問題,最後可以求出最優的 w 和 b,也就是我們想要找的最優超平面。中間求解的過程會用到拉格朗日乘子,和 KKT(Karush-Kuhn-Tucker)條件。

硬間隔、軟間隔和非線性 SVM

假如數據是完全的線性可分的,那麼學習到的模型可以稱爲硬間隔支持向量機。換個說法,硬間隔指的就是完全分類準確,不能存在分類錯誤的情況。軟間隔,就是允許一定量的樣本分類錯誤。

我們知道,實際工作中的數據沒有那麼“乾淨”,或多或少都會存在一些噪點。所以線性可分是個理想情況,這時,我們需要使用到軟間隔 SVM(近似線性可分),比如下面這種情況:

另外還存在一種情況,就是非線性支持向量機。

下圖中的兩類數據,分別分佈爲兩個圓圈的形狀。那麼這種情況下,不論是多高級的分類器,只要映射函數是線性的,就沒法處理,SVM 也處理不了。

這時,我們需要引入一個新的概念:核函數。它可以將樣本從原始空間映射到一個更高維的特質空間中,使得樣本在新的空間中線性可分。

所以在非線性 SVM 中,核函數的選擇就是影響 SVM 最大的變量。最常用的核函數有線性核、多項式核、高斯核、拉普拉斯核、sigmoid 核,或者是這些核函數的組合。這些函數的區別在於映射方式的不同。通過這些核函數,我們就可以把樣本空間投射到新的高維空間中。新的高緯度空間,就可以使用之前的推導公式下進行推導。

用 SVM 如何解決多分類問題

SVM 本身是一個二值分類器,最初是爲二分類問題設計的,也就是回答 Yes 或者是 No。而實際上我們要解決的是多分類問題,比如對文本進行分類,或者對圖像進行識別。

針對這種情況,我們可以將多個二分類器組合起來形成一個多分類器,常見的方法有“一對多法”和“一對一法”兩種。

一對多法

假設我們要把物體分成 A、B、C、D 四種分類,那麼我們可以先把其中的一類作爲分類 1,其他類統一歸爲分類 2。

(1)樣本 A 作爲正集,B,C,D 作爲負集;

(2)樣本 B 作爲正集,A,C,D 作爲負集;

(3)樣本 C 作爲正集,A,B,D 作爲負集;

(4)樣本 D 作爲正集,A,B,C 作爲負集。

這種方法,針對 K 個分類,需要訓練 K 個分類器,分類速度較快,但訓練速度較慢,因爲每個分類器都需要對全部樣本進行訓練,而且負樣本數量遠大於正樣本數量,會造成樣本不對稱的情況,並且新增第k+1個分類時,要重新對分類器進行構造!

一對一法

一對一法的初衷是想在訓練的時候更加靈活。我們可以在任意兩類樣本之間構造一個 SVM,,這樣針對 K 類的樣本,就會有 C(k,2) 類分類器。

比如我們想要劃分 A、B、C 三個類,可以構造 3 個分類器:

1)分類器 1:A、B;

2)分類器 2:A、C;

3)  分類器 3:B、C。

當對一個未知樣本進行分類時,每一個分類器都會有一個分類結果,即爲 1 票,最終得票最多的類別就是整個未知樣本的類別。

這樣做的好處是,如果新增一類,不需要重新訓練所有的 SVM;只需要訓練和新增這一類樣本的分類器,並且克服了樣本分佈不均勻的缺陷,訓練速度加快;缺陷是,分類器個數增加。

 

總結:

1、完全線性可分情況下的線性分類器,也就是線性可分的情況,是最原始的 SVM,它最核心的思想就是找到最大的分類間隔;

2、大部分線性可分情況下的線性分類器,引入了軟間隔的概念。軟間隔,就是允許一定量的樣本分類錯誤;

3、線性不可分情況下的非線性分類器,引入了核函數。它讓原有的樣本空間通過核函數投射到了一個高維的空間中,從而變得線性可分。

4、低緯度線性不可分,高緯度空間就線性可分了。

5、單個二分類支持向量機,不能解決多分類問題,那就將多個二分類進行組合,形成一個多分類器。

6、一對多構造分類器,分類速度快,訓練慢,且樣本不對稱,且不容易迭代;一對一構造分類器,訓練快,樣本均勻,容易迭代,但分類器增加很快。

 

參考文獻

極客時間《數據分析實戰45講》

魯棒性

機器學習(周志華)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章