簡介:SVM的英文全稱是Support Vector Machines,中文叫支持向量機。支持向量機是咱們用於分類的一種算法。支持向量也能夠用於迴歸,此時叫支持向量迴歸(Support Vector Regression,簡稱SVR)。html
發展歷史:1963年,ATE-T Bell實驗室研究小組在Vanpik的領導下,首次提出了支持向量機(SVM)理論方法。但在當時,SVM在數學上不能明晰地表示,人們對模式識別問題的研究很不完善,所以SVM的研究沒有獲得進一步的發展與重視。 1971年,Kimeldorf提出了使用線性不等約束從新構造SV的核空間,使一部分線性不可分的問題獲得瞭解決。20世紀90年代,一個比較完善的理論體系——統計學習理論(Statistical Learning Theory,SLT)造成了,此時一些新興的機器學習方法(如神經網絡等)的研究遇到了一些重大的困難,好比欠學習與過學習問題、如何肯定網絡結構的問題、局部極小點問題等,這兩方面的因素使得SVM迅速發展和完善,並在不少問題的解決中表現出許多特有優點,並且可以推廣應用到函數擬合等其餘機器學習問題中,今後迅速發展了起來,目前已經成功地在許多領域裏獲得了成功應用。web
思想:SVM的主要思想能夠歸納爲以下兩點:
(1)它是針對線性可分的狀況進行分析的。對於線性不可分的狀況,經過使用非線性映射算法將低維輸入空間線性不可分的樣本轉化爲高維特徵空間,使其線性可分,從而使得在高維特徵空間中採用線性算法對樣本的非線性特徵進行線性分析成爲可能。
(2)它基於結構風險最小化理論,在特徵空間中構建最優分類面,使得學習器可以獲得全局最優化,而且使整個樣本空間的指望風險以某個機率知足必定上界。
從上面的兩點基本思想來看,SVM沒有使用傳統的推導過程,簡化了一般的分類和迴歸等問題;少數的支持向量肯定了SVM 的最終決策函數,計算的複雜性取決於支持向量,而不是整個樣本空間,這就能夠避免「維數災難」。少數支持向量決定了最終結果,這不但能夠幫助咱們抓住關鍵樣本,並且註定了該方法不但算法簡單,並且具備較好的「魯棒」性。算法
數學基礎:拉格朗日乘子法、對偶問題、KKT條件數組
應用:人臉檢測、驗證和識別,說話人/語音識別,文字/手寫體識別 ,圖像處理等等網絡
SVM有三寶:間隔、對偶、核技巧。
遇到的問題大體能夠分爲線性可分和線性不可分的狀況,所以,我將分開介紹:app
訓練樣本集 ,分類學習的思想:找一個劃分超平面,將不一樣類別的樣本分開。機器學習
劃分的超平面不少,咱們去找哪個?直觀上看,咱們應該找位於兩類訓練樣本「正中間」的超平面。svg
在樣本空間中,劃分超平面可經過以下線性方程來描述:
其
爲法向量,決定了超平面的方向;b爲位移項,決定了超平面與原點之間的距離。
顯然,劃分超平面可被法向量w和位移b肯定,下面咱們將其記爲(w,b)。 樣本空間中任意點x到超平面(w,b)的距離可寫爲
假設超平面(w,b)能將訓練樣本正確分類,即對
,若
,則
.不然:
,令
對應以下:
問題只與投影方向有關,一旦方向定了,經過縮放w和b,總能使上式成立。因此,求超平面的問題轉化爲求w和b的問題。函數
以下圖所示,距離超平面最近的這幾個訓練樣本點使上式的等號成立,它們被稱爲「支持向量」(support vector),兩個異類支持向量機到超平面的距離之和爲 :
上圖中,兩條虛線之間的距離爲:
,將其稱之爲間隔。欲找到具備「最大間隔」(maximum margin)的劃分超平面,也就是找到參數w和b,使得γ最大,即:
上面的約束等價於以下約束:
即支持向量機(Support Vector Machine,簡稱SVM)的基本型。性能
上式中,其中w和b是模型參數。注意到上式自己是一個凸二次規劃問題,能直接用現成的優化計算包求解,但咱們能夠有更高效的辦法,能夠求出閉式解。
對式使用拉格朗日乘子法可獲得其「對偶問題」(dual problem):
其中
,令
對w和b的偏導數等於零得:
將第一個式代入L,便可將
中的w和b消去,再考慮第二個式的約束,就獲得對偶問題:
解出α後,求出w和b便可獲得模型:
從對偶問題解出的
是拉格朗日乘子,它恰對應着訓練樣本
。注意到支持向量機最優化問題中有不等式約束,所以上述過程需知足KKT條件,即要求:
最後一個條件,對任意訓練樣本
,總有
或
.
則有如下兩種狀況:
(1) 若
,則該樣本將不會在求和中出現,不會對f(x)有任何影響;
(2) 若
,則必有
,位於最大間隔邊界上,是一個支持向量。
這顯示出支持向量機的一個重要性質:訓練完成後,大部分的訓練樣本都不需保留,最終模型僅與支持向量有關.
如何求解
:二次規劃問題,經過SMO算法求解。
基本思路:每次選擇兩個變量α_i和α_j,並固定其餘參數。這樣,在參數初始化後,SMO不斷執行以下兩個步驟直至收斂:
(1) 選取一對需更新的變量
和
;
(2) 固定
和
之外的參數,求解式得到更新後的
和
.
分析:KKT條件違背的程度越大,則變量更新後可能致使的且標函數值減幅越大。
第一個變量:SMO先選取違背KKT條件程度最大的變量。
第二個變量:應選擇一個使且標函數值減少最快的變量,使選取的兩變量所對應樣本之間的間隔最大。
爲何更新兩個,而非一個?緣由是,若僅選擇一個,則其可有其餘變量導出。所以更新兩個。
SMO算法之因此高效,是因爲在固定其餘參數後,僅優化兩個參數的過程能作到很是高效。
以前的優化問題:
僅考慮
和
時,式中的約束可重寫爲:
其中c是使
成立的常數。用
消去上式中的變量
,則獲得一個關於
的單變量二次規劃問題,僅有的約束是
。
不難發現,這樣的二次規劃問題具備閉式解,因而沒必要調用數值優化算法便可高效地計算出更新後的
和
.
肯定偏移項b:
対任意支持向量
都有
,即
其中
爲全部支持向量的下標集,但現實任務中常採用一種更魯棒的作法:使用全部支持向量求解的平均值
在現實任務中每每很難肯定合適的核函數使得訓練樣本在特徵空間中線性可分。
緩解該問題的一個辦法是容許支持向量機在一-些樣本上出錯.爲此,要引入「軟間隔」的概念,如圖所示:
在最大化間隔的同時,不知足約束的樣本應儘量少.因而,優化目標可寫爲:
即,在間隔上加一個損失,容許錯分,可是損失應該儘可能小。
(1)0/1損失函數
顯然,當C爲無窮大時,迫使全部樣本均知足約束,因而等價於經典支持向量機方法;
當C取有限值時,容許一些樣本不知足約束。
然而,
非凸、非連續,不易直接求解。人們一般用其餘一些函數來代替
,稱爲「替代損失」(surrogate loss),一般是凸的連續函數且是
的上界。
(2)hinge損失函數
若採用hinge損失,則代價函數變成:
引入「鬆弛變量」(slack variables)
,可將重寫爲:
這就是經常使用的「軟間隔支持向量機」。
(3)其餘損失函數
損失函數:
標準:>0時,儘量小,<0時,儘量大。從而保證分類的準確性。
咱們假設訓練樣本是線性可分的,超平面能將訓練樣本正確分類。然而在現實任務中,原始樣本空間內也許並不存在一個能正確劃分兩類樣本的超平面。例如圖中的「異或」問題就不是線性可分的.
對這樣的問題,可將樣本從原始空間映射到一個更高維的特徵空間,使得樣本在這個特徵空間內線性可分。
例如在圖中,若將原始的二維空間映射到一個合適的三維空間,就能找到一個合適的劃分超平面。
如何映射?有沒有通用的辦法?
幸運的是,若是原始空間是有限維,即屬性數有限,那麼必定存在一個高維特徵空間使樣本可分。 令∅(x)表示將x映射後的特徵向量,因而,在特徵空間中劃分超平面所對應的模型可表示爲:
其中w和b是模型參數。
問題轉化爲:
其對偶問題是:
求解式涉及到計算
,這是樣本
與
映射到特徵空間以後的內積。
因爲特徵空間維數可能很高,甚至多是無窮維,所以直接計算
一般是困難的。
爲了避開這個障礙,能夠設想這樣一個函數:
即
與
在特徵空間的內積等於它們在原始樣本空間中經過函數κ(∙,∙ )計算的結果。
有了這樣的函數,咱們就沒必要直接去計算高維甚至無窮維特徵空間中的內積。
因而式可重寫爲:
因而,求解後便可獲得:
這裏的函數κ(∙,∙ )就是「核函數」(kernel function)。上式顯示出模型最優解可經過訓練樣本的核函數展開,這一展式亦稱「支持向量展式」(support vector expansion)。
問題:顯然,若已知合適映射ϕ(∙)的具體形式,則可寫出核函數κ(∙,∙ ),但在現實任務中咱們一般不知道ϕ(∙)是什麼形式。
合適的核函數是否必定存在呢?什麼樣的函數能作核函數呢?
答案是確定的。
定理(核函數) 令χ爲輸入空間,κ(∙,∙ )是定義在
上的對稱函數,則κ是核函數當且僅當對於任意數據
,「核矩陣」(kernel matrix)K老是半正定的:
定理代表,只要一個對稱函數所對應的核矩陣半正定,它就能做爲核函數使用。
在不知道特徵映射的形式時,咱們並不知道什麼樣的核函數是合適的,「核函數選擇」成爲支持向量機的最大變數。
一般,可選擇以下核函數,選擇性能最優者做爲某一問題的核函數:
注意:當d=1時,高斯核也成爲徑向基核函數(RBF)核。
此外,還可經過函數組合獲得,例如:
(1) 若κ_1和κ_2爲核函數,則對於任意正數
,其線性組合也是核函數:
(2) 若κ_1和κ_2爲核函數,則核函數的直積也是核函數;
(3) 若κ_1爲核函數,則對於任意函數g(x),也是核函數;
給定訓練樣本
,但願學得一個迴歸模型,使得
與
儘量接近,
和
是待肯定的模型參數。
假設咱們能容忍
與
之間最多有
的誤差,即僅當
與
之間的差異絕對值大於
時才計算損失.
因而,SVR問題可形式化爲:
其中C爲正則化常數,
是圖中所示的ϵ -不敏感損失(ϵ -insensitive loss)函數:
引入鬆弛變量
和
,可將式重寫爲:
引入拉格朗日乘子
,
再令
對
,
,
,
的偏導爲零可得:
上述過程當中需知足KKT條件,即要求:
SVR的解形如
能使式中的
的樣本即爲SVR的支持向量,它付必落在ϵ-同隔帶以外.顯然, SVR的支持向量僅是訓練樣本的一部分,即其解仍具備稀疏性.
若
,則必有
,
實踐中常採用一中更魯棒的辦法:迭取多個知足條件
的樣本求解b後取平均値。
若考慮特徵映射形式,則:
則SVR可表示爲:
其中
爲核函數。