標籤:img 等於 分類 ima tps fc7 package svm idt
簡介:
支援向量機(SVM)是一種二分類的監督學習模型,他的基本模型是定義在特徵空間上的間隔最大的線性模型。他與感知機的區別是,感知機只要找到可以將資料正確劃分的超平面即可,而SVM需要找到間隔最大的超平面將資料劃分開。所以感知機的超平面可以有無數個,但是SVM的超平面只有一個。此外,SVM在引入核函數之後可以處理非線性問題。
SVM根據資料的不同可以分為以下三種形式:
1.線性可分支援向量機,也叫做硬間隔支援向量機,處理的資料是線性可分的,通過硬間隔最大化來學習一個線性可分的模型。
2.線性支援向量機,也叫做軟間隔支援向量機,當資料近似線性可分時,通過引入鬆弛因子,軟間隔最大化學習一個線性可分的模型。
3.非線性支援向量機,當資料線性不可分時,通過引入核函數將資料對應到高維空間後,學習得到一個非線性支援向量機。
線性可分支援向量機
考慮一個二分類問題,當資料可以在分布空間中通過一個超平面將正負範例分割開,一面為正類,一面為負類,我們就稱資料是線性可分,這個分離超平面的方程為:w*x+b=0。而線上性可分資料中存在著無數個超平面可以將資料分割開(參考感知機),我們要找到其中最好的超平面,這個超平面不僅可以將訓練集資料很好的劃分開,還有更好的泛化能力。中很顯然直線B是最好的一條分割線,所以選擇間隔最大的一個超平面作為我們需要的最優的超平面。
圖1
求解超平面w*x+b=0就是求w和b,以及對應的分類決策函數f(x)=sign(w*x+b),稱之為線性可分支援向量機。
根據點到直線距離公式:
圖2
其中A為w向量,C為b,因為超平面的y值為0,所以對於支援向量機的點到超平面距離可以寫作:
圖3
又因為w*x+b的邊界為正負1,兩個邊界到超平面的距離和γ等於2倍的r,所以圖3又可以寫作:
圖4
這就是幾何間隔。是支援向量機的各個概念圖:
圖5
當資料點為正類時,其y=+1,w*x+b>=+1,當資料點為負類時y=-1,w*x+b<=-1,所以y*(w*x+b)始終大於等於1,其中y*(w*x+b)成為函數間隔。
要找到間隔最大的超平面,也就是要找到滿足y*(w*x+b)>=1約束條件的參數w和b,使得γ最大。即:
圖6
顯然為了最大化間隔,僅需最大化||w||,這等價於最小化||w||的2次方,所以可以重寫為:
圖7
其中目標函數和約束函數都是連續可微的凸函數,並且目標函數是二次函數,約束函數是仿射函數,所以該約束問題是一個凸二次規劃問題。
求解凸二次規劃約束問題常用的辦法是引入拉格朗日乘子,通過求解對偶問題得到原始問題的解。這就是線性可分支援向量機的對偶演算法。
首先定義拉格朗日函數,對每個不等式約束引入拉格朗日乘子αi>=0,i=1,2,3....n.拉格朗日函數為:
圖8
這樣就把帶有約束問題的求極值問題轉為無約束求極值問題,接下來根據拉格朗日對偶性求解原始問題的對偶問題:
圖9
以上就是求解線性可分支援向量機的全部過程,求解得到w和b之後就可以得到分類超平面:
圖10
以及分類決策函數:
圖11
根據圖9中w*和b*的結果可以看出,w*和b*只依賴於αi>0對應的(xi,yi)樣本點,這些樣本點稱為支援向量。
線性支援向量機
當資料近似線性可分時,也就是說資料中存在雜訊點,我們通過引入鬆弛因子,使函數間隔加上鬆弛因子ξ後大於等於1,這樣約束條件就變成:
圖12
對於每個鬆弛因子ξi需要支付一個代價,所以目標函數也就是代價函數變為:
圖13
其中C>0稱為懲罰參數,是超參數需要我們手動調參,C值越大時對誤分類的懲罰增大,支援向量機的間隔寬度越窄,C值越小時對誤分類的懲罰越小,支援向量機的間隔寬度越寬。而ξ的幾何意義代表著,誤分類資料點離正確分類一側的距離,是幾何距離。
那麼這個鬆弛因子ξ是怎麼來的呢?因為資料是近似可分的存在著許多噪音點,所以當計算代價函數時,這些誤分類點要算入代價函數中去。這些誤分類點的函數間隔y*(w*x+b)<=-1,所以代價函數可以寫成帶有0/1損失函數的集合函數,就是當資料點的函數間隔減去1小於0的話(誤分類點),需要計算入代價函數,資料點的函數間隔減去1大於0的話(正確分類點),不需要計算入代價函數:
圖14
但是0/1損失函數的數學性質不好,非凸非連續性。所以一般使用他的代替損失函數“hinge損失max(0,1-z)”代替它,則代價函數也就是目標函數變為:
圖15
用ξ替代max部分,就是ξ<=1-y*(w*x+b),所以帶有約束條件的目標(代價)函數就變為下面的形式:
圖16
所以SVM的損失函數也可以看作是帶有L2正則項(||w||^2)的hinge損失函數。以上就是線性支援向量機的帶有約束條件的最佳化目標函數,求解w和b的過程與線性可分的方法一致,都是通過引入拉格朗日乘子,這裡不再重複。其中一些列需要滿足的約束條件稱為KKT條件。
非線性支援向量機
當資料樣本非線性可分時,也就是在當前的資料空間內(或者說當前維度內)無法找到一個超平面將資料分割開,那麼需要我們將資料從當前的維度映射到更高維度後,使資料變成線性可分的,而將資料對應到高維的函數稱之為核函數。
為什麼在SVM求解帶有約束條件的最佳化問題時我們使用引入拉格朗日乘子方法,一是因為求解簡單,二是可以很方便的引入核函數K(x,z)。
通過引入核函數之後,對偶問題的目標函數就變成:
圖17
最後求解出w*和b*之後的決策分類函數:
圖18
這樣通過核函數的引入,可以用求解線性支援向量機的方法求解非線性支援向量機。學習是隱式的,不是瞭解核函數是如何計算以及資料到底被映射到哪一維空間的,但是需要我們手動的選擇核函數。常用的核函數有:
多項式核:
圖19
高斯核(徑向基核):
圖20
線性核,sigmoid核以及其他核函數等。通常使用先驗知識或者交叉驗證的方式選擇核函數,但是如果無先驗知識的情況下,一般選擇高斯核。為什麼選擇高斯核呢?因為可以將資料對應到無窮維空間。
SMO序列最小最佳化
該學習方法是為了簡單求解SVM中的參數的一個演算法,並不是很重要(調包俠^-^),所以沒有很詳細的看,以後有時間看完再更新到本文中。
待更新。。
參考書籍:
《統計學習方法》李航 著
《機器學習》 周志華 著
《小象學院機器學習課程》 鄒博
機器學習-支援向量機SVM