支持向量机SVM算法原理
SVM 的英文叫 Support Vector Machine,中文名為支持向量機。它是常見的一種分類方法,在機器學習中,SVM 是有監(jiān)督的學習模型。
什么是有監(jiān)督的學習模型呢?它指的是我們需要事先對數(shù)據(jù)打上分類標簽,這樣機器就知道這個數(shù)據(jù)屬于哪個分類。同樣無監(jiān)督學習,就是數(shù)據(jù)沒有被打上分類標簽,這可能是因為我們不具備先驗的知識,或者打標簽的成本很高。所以我們需要機器代我們部分完成這個工作,比如將數(shù)據(jù)進行聚類,方便后續(xù)人工對每個類進行分析。
SVM 作為有監(jiān)督的學習模型,通常可以幫我們模式識別、分類以及回歸分析。
先看一張圖,明白超平面的概念:
二維平面內(nèi),用曲線將顏色球分開了;進一步,三維立體層面?
在這里,二維平面變成了三維空間。原來的曲線變成了一個平面。這個平面,就叫做超平面。
SVM 的工作原理
用 SVM 計算的過程就是幫我們找到那個超平面的過程,這個超平面就是我們的 SVM 分類器。
上圖中,直線 A、直線 B 和直線 C,究竟哪種才是更好的劃分呢?
B直線更好,因為B與藍色球靠的很近;A直線更好,因為A與紅色球更近;但,實際生活中,藍色球可能會朝著紅色區(qū)域移動,紅色球會向著藍色區(qū)域移動;所以,最終A直線更好,因為它的魯棒性更好。
魯棒性/抗變換性(英文:robustness)原是統(tǒng)計學中的一個專門術語,20世紀初在控制理論的研究中流行起來,用以表征控制系統(tǒng)對特性或參數(shù)擾動的不敏感性。
那怎樣才能尋找到直線 C 這個更優(yōu)的答案呢?這里,我們引入一個 SVM 特有的概念:分類間隔。
在保證決策面不變,且分類不產(chǎn)生錯誤的情況下,我們可以移動決策面 C,直到產(chǎn)生兩個極限的位置:如圖中的決策面 A 和決策面 B。極限的位置是指,如果越過了這個位置,就會產(chǎn)生分類錯誤。這樣的話,兩個極限位置 A 和 B 之間的分界線 C 就是最優(yōu)決策面。極限位置到最優(yōu)決策面 C 之間的距離,就是“分類間隔”,英文叫做 margin。
如果我們轉(zhuǎn)動這個最優(yōu)決策面,你會發(fā)現(xiàn)可能存在多個最優(yōu)決策面,它們都能把數(shù)據(jù)集正確分開,這些最優(yōu)決策面的分類間隔可能是不同的,而那個擁有“最大間隔”(max margin)的決策面就是 SVM 要找的最優(yōu)解。
點到超平面的距離公式
必要的數(shù)學公式可以幫助我們理解模型的原理。
超平面的數(shù)學表達可以寫成:
在這個公式里,w、x 是 n 維空間里的向量,其中 x 是函數(shù)變量;w 是法向量。法向量這里指的是垂直于平面的直線所表示的向量,它決定了超平面的方向。b是位移項,決定原點到超平面的距離。(法向量+距離可以唯一確定超平面的位置)
SVM 就是幫我們找到一個超平面,這個超平面能將不同的樣本劃分開,同時使得樣本集中的點到這個分類超平面的最小距離(即分類間隔)最大化。
在這個過程中,支持向量就是離分類超平面最近的樣本點,實際上如果確定了支持向量也就確定了這個超平面。所以支持向量決定了分類間隔到底是多少,而在最大間隔以外的樣本點,其實對分類都沒有意義。
所以說, SVM 就是求解最大分類間隔的過程,我們還需要對分類間隔的大小進行定義。
首先,我們定義某類樣本集到超平面的距離是這個樣本集合內(nèi)的樣本到超平面的最短距離。我們用 di 代表點 xi 到超平面 wxi+b=0 的歐氏距離。因此我們要求 di 的最小值,用它來代表這個樣本到超平面的最短距離。di 可以用公式計算得出:
其中||w||為超平面的范數(shù),di 的公式可以用解析幾何知識進行推導;我們尋找的最大間隔就是支持向量機
支持向量機的求解通常借助于凸優(yōu)化技術,如何提高效率,使得svm能夠運用到大規(guī)模數(shù)據(jù)中,一直是研究的熱點問題。
最大間隔的優(yōu)化模型
在數(shù)學上,最大間隔的優(yōu)化模型是一個凸優(yōu)化問題(凸優(yōu)化就是關于求凸集中的凸函數(shù)最小化的問題)。通過凸優(yōu)化問題,最后可以求出最優(yōu)的 w 和 b,也就是我們想要找的最優(yōu)超平面。中間求解的過程會用到拉格朗日乘子,和 KKT(Karush-Kuhn-Tucker)條件。
硬間隔、軟間隔和非線性 SVM
假如數(shù)據(jù)是完全的線性可分的,那么學習到的模型可以稱為硬間隔支持向量機。換個說法,硬間隔指的就是完全分類準確,不能存在分類錯誤的情況。軟間隔,就是允許一定量的樣本分類錯誤。
我們知道,實際工作中的數(shù)據(jù)沒有那么“干凈”,或多或少都會存在一些噪點。所以線性可分是個理想情況,這時,我們需要使用到軟間隔 SVM(近似線性可分),比如下面這種情況:
另外還存在一種情況,就是非線性支持向量機。
下圖中的兩類數(shù)據(jù),分別分布為兩個圓圈的形狀。那么這種情況下,不論是多高級的分類器,只要映射函數(shù)是線性的,就沒法處理,SVM 也處理不了。
這時,我們需要引入一個新的概念:核函數(shù)。它可以將樣本從原始空間映射到一個更高維的特質(zhì)空間中,使得樣本在新的空間中線性可分。
所以在非線性 SVM 中,核函數(shù)的選擇就是影響 SVM 最大的變量。最常用的核函數(shù)有線性核、多項式核、高斯核、拉普拉斯核、sigmoid 核,或者是這些核函數(shù)的組合。這些函數(shù)的區(qū)別在于映射方式的不同。通過這些核函數(shù),我們就可以把樣本空間投射到新的高維空間中。新的高緯度空間,就可以使用之前的推導公式下進行推導。
用 SVM 如何解決多分類問題
SVM 本身是一個二值分類器,最初是為二分類問題設計的,也就是回答 Yes 或者是 No。而實際上我們要解決的是多分類問題,比如對文本進行分類,或者對圖像進行識別。
針對這種情況,我們可以將多個二分類器組合起來形成一個多分類器,常見的方法有“一對多法”和“一對一法”兩種。
一對多法
假設我們要把物體分成 A、B、C、D 四種分類,那么我們可以先把其中的一類作為分類 1,其他類統(tǒng)一歸為分類 2。
(1)樣本 A 作為正集,B,C,D 作為負集;
(2)樣本 B 作為正集,A,C,D 作為負集;
(3)樣本 C 作為正集,A,B,D 作為負集;
(4)樣本 D 作為正集,A,B,C 作為負集。
這種方法,針對 K 個分類,需要訓練 K 個分類器,分類速度較快,但訓練速度較慢,因為每個分類器都需要對全部樣本進行訓練,而且負樣本數(shù)量遠大于正樣本數(shù)量,會造成樣本不對稱的情況,并且新增第k+1個分類時,要重新對分類器進行構(gòu)造!
一對一法
一對一法的初衷是想在訓練的時候更加靈活。我們可以在任意兩類樣本之間構(gòu)造一個 SVM,,這樣針對 K 類的樣本,就會有 C(k,2) 類分類器。
比如我們想要劃分 A、B、C 三個類,可以構(gòu)造 3 個分類器:
1)分類器 1:A、B;
2)分類器 2:A、C;
3)? 分類器 3:B、C。
當對一個未知樣本進行分類時,每一個分類器都會有一個分類結(jié)果,即為 1 票,最終得票最多的類別就是整個未知樣本的類別。
這樣做的好處是,如果新增一類,不需要重新訓練所有的 SVM;只需要訓練和新增這一類樣本的分類器,并且克服了樣本分布不均勻的缺陷,訓練速度加快;缺陷是,分類器個數(shù)增加。
?
總結(jié):
1、完全線性可分情況下的線性分類器,也就是線性可分的情況,是最原始的 SVM,它最核心的思想就是找到最大的分類間隔;
2、大部分線性可分情況下的線性分類器,引入了軟間隔的概念。軟間隔,就是允許一定量的樣本分類錯誤;
3、線性不可分情況下的非線性分類器,引入了核函數(shù)。它讓原有的樣本空間通過核函數(shù)投射到了一個高維的空間中,從而變得線性可分。
4、低緯度線性不可分,高緯度空間就線性可分了。
5、單個二分類支持向量機,不能解決多分類問題,那就將多個二分類進行組合,形成一個多分類器。
6、一對多構(gòu)造分類器,分類速度快,訓練慢,且樣本不對稱,且不容易迭代;一對一構(gòu)造分類器,訓練快,樣本均勻,容易迭代,但分類器增加很快。
?
參考文獻
極客時間《數(shù)據(jù)分析實戰(zhàn)45講》
魯棒性
機器學習(周志華)
總結(jié)
以上是生活随笔為你收集整理的支持向量机SVM算法原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python扫盲系列(5)--列表、元组
- 下一篇: SVM实战:如何进行乳腺癌检测