1. 程式人生 > >class-支持向量機SVM全析筆記

class-支持向量機SVM全析筆記

pin png 表示 倍增 arc 介紹 其他 2.3 vertica

support vector machines,SVM是二類分類模型。定義在特征空間上間隔最大的線性分類器,由於包括核技巧實質上成為非線性分類器。學習策略是間隔最大化,可形式化為求解凸二次規劃問題(convex quadratic programming)。求解算法是求解凸二次規劃的最優化算法。
SVM學習方法分為線性可分支持向量機(linear support vector machine in linearly separable case)、線性支持向量機(linear support vector machine)、非線性支持向量機(non-linear support vector machine)
。當數據線性可分時,通過硬間隔最大化(hard margin maximization)學習線性svm稱為硬間隔SVM。當數據近似線性可分,通過軟間隔最大化(soft margin maximization)學習線性svm稱為軟間隔SVM。當數據線性不可分時,使用核技巧(kernel trick)及軟間隔最大化學習非線性SVM。

當輸入 空間是歐式空間或離散集合,特征空間是希爾伯特空間,核函數(kernel function)表示將輸入從輸入空間映射到特征空間得到的特征向量之間的內積。核函數可以學習非線性svm,其實就是在更高維的特征空間中學習線性svm。 內容: 1 線性可分與硬間隔最大化

1.1 線性可分SVM
1.2 函數間隔和幾何間隔
1.3 間隔最大化
1.4 求解最優化的算法:對偶算法(dual algorithm)
2 線性支持向量機與軟間隔最大化
2.1 線性SVM
2.2 學習算法:dual algorithm
2.3 支持向量
2.4 合頁損失函數hinge loss function
3 非線性支持向量機與核函數
3.1核技巧kernel trick
3.2 正定核positive define kernel function
3.3 常用核函數
3.4 非線性支持向量機
4 序列最小最優化算法sequential minimal optimization SMO
4.1 兩個變量二次規劃的解析方法

4.2 變量的選擇方法

推薦svm理論基礎的blog


1 線性可分與硬間隔最大化

1.1 線性可分SVM

SVM的學習是在特征空間上進行的,SVM所有輸入都是由輸入空間轉換到特征空間,但是在線性可分SVM和線性SVM中假設這兩個空間元素一一對應,而非線性SVM中,是非線性映射。回顧線性可分的定義是存在一個線性函數能夠將兩類樣本完全分開的數據稱為線性可分數據。
思想:給定特征空間的訓練集T={(x1,x2),…(xN,yN)},X屬於Rn,Y={+1,-1}稱為正類,負類。學習的目標是在特征空間找到一個分離超平面,能將實例完全分類。超平面方程w·x+b=0,法向量w,b截距,可用(w,b)來用。這裏用間隔最大化來最優化分離超平面。
線性可分支持向量機定義:訓練集通過間隔最大化或等價地求解相應凸二次規劃問題學習model分離超平面技術分享圖片;分類決策函數為技術分享圖片。這裏的超平面對應將線性可分數據正確劃分且間隔最大。

1.2 函數間隔和幾何間隔

一個點距離超平面的遠近可以表示分類預測的確信程度,較遠的可更為可信。函數間隔(function margin)的概念簡單說就是用|w·x+b|能夠相對的表示點x距離超平面的遠近,w·x+b的符號與label y的符號是否一致表示分類是否正確,因此可用y(w·x+b)表示分類正確性和確信度。即超平面(w,b)關於樣本點(xi,yi)的函數間隔為:技術分享圖片
超平面的函數間隔所有樣本點中函數間隔最小值:技術分享圖片,表示超平面的預測正確性和確信度。
以上函數間隔存在問題:當法向量w,截距b成倍增加如2w,2b,超平面未變,但是函數間隔成為原來的2倍。
處理:將w規範化,如,||w||=1,||w||為L2範數,這就是幾何間隔(geometric margin),即
技術分享圖片(其實就是中學的點到直線的距離公式)
同理,超平面要求為所有樣本點中幾何間隔最小值技術分享圖片。超平面關於樣本點的幾何間隔就是實例點到超平面的帶符號距離(signed distance)
幾何間隔和函數間隔的關系是:技術分享圖片
雖然當||w||=1時二者相等,但是幾何間隔因為歸一化的問題,不會因為w,b的成倍變化而變化。

1.3 間隔最大化

滿足分類條件的超平面可能有無窮多個,但是幾何間隔最大化就將得到唯一超平面——稱為硬間隔最大化。幾何間隔最大的好處是能夠對距離最近的點也能有很好的劃分,即對未知數據的預測能力更強。

  1. 幾何間隔最大化分離超平面
    約束最優化問題:對幾何間隔(約束:所有樣本中最小間隔的的間隔)γ最大化。即
    技術分享圖片
    根據二者關系式可得
    技術分享圖片
    可以發現,函數間隔的成倍增加對於不等式的約束沒有影響,對目標函數的優化也沒有影響。取γ hat=1則1/||w||最大化等價於1/2(||w||2),因此得到線性可分支持向量機學習最優化問題
    技術分享圖片(這就是凸二次規劃問題(convex quadratic programming))。
    求解了本約束最優化問題,就能得到線性可分SVM模型。
    最大間隔(maximum margin method)算法:
    技術分享圖片

補充一下凸優化的概念:
凸優化問題就是約束最優化問題:
技術分享圖片
其中f為目標函數,g為約束函數,f,g均是R空間上連續可微的凸函數,約束函數h是R上的仿射函數(即形式y=ax+b,作為對比線性函數為y=ax)。
當目標函數f是二次函數且約束函數g是仿射函數時,凸優化問題就是凸二次規劃問題。

  1. 最大間隔分離超平面的存在唯一性
    這裏要證明這個結論,分為兩個存在性,唯一性。
    存在性:
    訓練集線性可分,必存在可行解;目標函數有下界,必有解;訓練集既有正類又有負類,因此(0,b)不是最優可行解技術分享圖片
    唯一性:
    反證法,假設存在兩個最優解。 具體如下:
    技術分享圖片
    技術分享圖片
  2. 支持向量和間隔邊界
    支持向量(support vector):線性可分情況下,訓練數據集的樣本點與分離超平面距離最近的樣本點實例,對約束條件化簡為:技術分享圖片
    正類點,支持向量H1在超平面:技術分享圖片
    負類點,支持向量H2在超平面:技術分享圖片
    技術分享圖片
    H1與H2之間的距離稱為間隔(margin),H1,H2稱為間隔邊界。
    可以發現,支持向量決定分離超平面,其他點不起作用,故將這種方法稱為SVM,支持向量很少但決定了model。

1.4 求解最優化的算法:對偶算法(dual algorithm)

對原始的最優化問題應用拉格朗日對偶性,求解對偶問題(dual problem)得到原始問題(primal problem)最優解。
首先構建Lagrange function:對約束引入拉格朗日乘子(Lagrange multuplier),得,
技術分享圖片其中,α為multiplier向量。
根據對偶性,原始問題轉化為技術分享圖片
分兩步走:
*先求min部分:分別對w,b求偏導,並另偏導為0。
技術分享圖片得,技術分享圖片
將w的表達式代入L函數,同時利用第二個summation=0的條件消去一項得:
技術分享圖片
因此,得到,
技術分享圖片

  • 再求第二個部分max
    技術分享圖片將其換號轉化為求極小值:
    技術分享圖片此式就是算法中使用的式子

這裏補充一些基礎知識:
[深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT條件] http://blog.csdn.net/xianlingmao/article/details/7919597)
第二個理解博客


回到正題,如此將原始約束最優化問題轉化為對偶最優化問題,原始最優化的解可求(具體可證):技術分享圖片
分離超平面為:技術分享圖片
分類決策函數為:技術分享圖片
此式稱為SVM的對偶形式,只依賴於輸入x和訓練樣本xi的內積
線性可分SVM學習算法:
技術分享圖片
技術分享圖片
支持向量在定義:
技術分享圖片稱為SV
支持向量一定在邊界上,因此技術分享圖片
αi*>0,故,技術分享圖片 or技術分享圖片
註意:現實情況可能是數據集含有噪聲,導致數據集線性不可分。

2 線性支持向量機與軟間隔最大化

2.1 線性SVM

簡單來說就是數據集中存在一些特異點(outlier),正是因為這些點的存在導致數據變得線性不可分,容易想到的是除去這些點,數據集仍然變得線性可分。線性不可分意味著某些點不滿足約束條件技術分享圖片
為了解決這個問題對每個樣本點(xi,yi)引入一個松弛變量ξi>=0,則約束條件為技術分享圖片
同時,對每個松弛變量ξi,在目標函數引入ξi技術分享圖片
其中,C>0稱為懲罰參數,C變大對誤分類懲罰增大,變小誤分類懲罰減小。最小化目標函數的兩層含義:對最大間隔盡量小;同時誤分類點個數也盡量小,C是調和二者的系數。從而可以根據上節內容來學習此處的svm模型,稱為軟間隔最大化。
線性不可分線性SVM學習模型:凸二次規劃(原始問題):
技術分享圖片
因這個問題是context quadratic programming,因此關於(w,b,ξ)的解是存在的,w唯一,b不唯一存在於某一區間。
通過求解上述凸優化問題得到分離超平面:技術分享圖片;相應分類決策函數:技術分享圖片,這就是線性支持向量機,比線性可分SVM更具有廣適性。

2.2 學習算法:dual algorithm

對偶問題:
技術分享圖片
原始最優化拉格朗日函數為:技術分享圖片技術分享圖片
對L的w,b,ξ求偏導=0,即得到對偶問題,求解對偶問題得到原始問題的解:
技術分享圖片
線性SVM算法:
技術分享圖片

2.3 支持向量

線性不可分時,將對偶問題的解技術分享圖片中對應於技術分享圖片稱為支持向量(軟間隔的支持向量)
支持向量到邊界的距離:技術分享圖片
α和ξ對分類的影響:
技術分享圖片
技術分享圖片


此處書上講解不太詳細可看http://www.cnblogs.com/pinard/p/6100722.html
其中,這也是一系列SVM原理介紹。


2.4 合頁損失函數hinge loss function

與以上思路(軟間隔最大化,凸二次規劃)不同的是,最小化以下目標函數:
技術分享圖片
其中,第一項為經驗風險,則合頁損失函數為:技術分享圖片,第二項為正規化項
右下角的“+”符號為取正值的函數:
技術分享圖片
L式的含義是:當樣本點被正確分類且函數間隔大於1時損失為0,否則技術分享圖片
因此線性SVM原始最優化問題
技術分享圖片等價於技術分享圖片
技術分享圖片
合頁損失函數是0-1損失函數的上界又稱為代理損失函數(surrogate loss funtion),虛線為感知機的損失函數,可見合頁損失函數更靠右所以對學習提出更高的要求。

3 非線性支持向量機與核函數

3.1核技巧kernel trick

  1. 非線性分類問題
    對於數據集中(此處還是正負類),用一個超曲面才能將類別分開的叫做非線性可分。比如下圖:用一個橢圓曲線將其分開。
    技術分享圖片技術分享圖片
    非線性問題不好求解,故需要將非線性空間的點轉化為線性空間的點,因此需要非線性變換技術分享圖片
    技術分享圖片
    線性方法求解非線性問題分為兩步:
  • 首先使用一個變換將原空間的數據映射到新空間;
  • 在新空間用線性分類的學習方法從訓練數據學習分類模型。
    ————這就是核技巧kernel trick的思想。
    核技巧的基本想法:通過一個非線性變換將輸入空間(歐式空間Rn或離散集合)對應於一個特征空間(希爾伯特空間H),使得輸入空間中超曲面模型對應於特征空間H中超平面模型(SVM),分類問題的學習任務通過在特征空間求解線性SVM就可以完成。
  1. 核函數的定義
    技術分享圖片
    技術分享圖片(註意是內積inner product)
    φ(x)為映射函數,K(x,z)為核函數。
    通常,在學習和預測中只定義核函數K而不顯式的定義映射函數φ,因為直接計算K(x,z)更容易。註意到特征空間可能是高維的甚至是無窮維的,對給定的核函數有不同的特征空間和映射,即使同一特征空間映射也不同。
  2. 核函數在SVM中的應用
    在線性支持向量機的對偶問題中,無論是目標函數還是決策函數都只涉及輸入實例與訓練實例之間的內積,如果將對偶問題中的內積xi·xj用核函數來代替K(xi,xj)=φ(xi)·φ(xj),
    對偶函數目標函數為:
    技術分享圖片
    分類決策函數為:
    技術分享圖片
    說明:映射函數將原來的輸入空間的內積xi·xj變換為新的特征空間的內積φ(xi)·φ(xj),在新的特征空間裏,從訓練樣本中學習SVM,當映射函數是非線性函數時,學到的含有核函數的SVM是非線性分類模型。
    要註意的是在給定K的條件下,解決非線性分類問題的SVM的學習是隱式的在特征空間進行,不需要顯式的定義映射函數和特征空間,因此稱為核技巧。核函數的有效性需要通過實驗驗證。

3.2 正定核positive define kernel function

由上可知映射函數是不知道的,那麽一個函數K(x,z)滿足什麽樣的條件才是核函數?——正定核。


補充矩陣知識:
正定:所有特征值均大於0;
半正定:所有特征值均大於等於0;
貼一個知乎回答:
技術分享圖片
用戶語冰對特征值大於0與變換角度小於0的關系闡述:特征值就是原空間某一個基在變換後的空間的長度變化系數,大於0表示方向一致,小於0表示方向相反。變換後夾角小於90度,其實隱藏的含義是變換後的向量投影回原向量時方向不變。用特征值不小於零或者大於零的條件做限制可以更直觀也更嚴格地表達出這一個特點
Gram矩陣:v1,v2,…,vn 是內積空間的一組向量,Gram 矩陣定義為: Gij=?vi,vj?,顯然其是對稱矩陣。
性質:Gram矩陣是半正定的;
一個重要應用是計算線性無關:一組向量線性無關 當且僅當 Gram行列式不等於0.
技術分享圖片


技術分享圖片

  1. 定義映射,構成向量空間S
    先定義一個映射φ:技術分享圖片
    定義線性組合:技術分享圖片技術分享圖片
    線性組合為元素的集合S,由於S對加法和數乘封閉,所以S構成一個向量空間。
  2. 在S上定義內積,使其成為內積空間
    技術分享圖片
    定義運算‘‘:技術分享圖片
    要證‘
    ‘是空間S的內積,只需證

    技術分享圖片
    技術分享圖片
    證明以上得出結論S是內積空間:
    技術分享圖片
  3. 將內積空間S完備化為希爾伯特空間
    求f的範數:技術分享圖片,因此S為賦範向量空間,泛函理論得知分析得知不完備的賦範向量空間一定可以完備化得到完備賦範向量空間H。一個內積空間當作為一個賦範向量空間是完備的時候就是希爾伯特空間。
    ——稱為再生核希爾伯特空間(reproducing kernel Hilbert space)。由於核K具有再生性,即滿足技術分享圖片
    技術分享圖片——稱為再生核
  4. 正定核的充要條件
    技術分享圖片
    技術分享圖片
    定義7.7對於構造核函數非常有用。但是對於一個具體核函數來說檢驗其是否為正定核並不容易。實際問題中常常應用已有的核函數。

3.3 常用核函數

  1. 多項式核函數polynomial kernel function
    技術分享圖片
    對應SVM是一個p次多項式分類器,在此情況下,分類決策函數為
    技術分享圖片
  2. 高斯核函數Gaussian kernel function
    技術分享圖片
    對應的SVM是高斯徑向基函數radial basis function分類器,分類決策函數為:
    技術分享圖片
  3. 字符串核函數string kernel function
    核函數不僅可以定義在歐式空間上,還可以定義在離散數據集合上。字符串核函數是定義在字符串集合上的核函數,在文本分類,信息檢索,生物信息學等方面都有應用。
    書上講解十分學術化因此,這裏推薦一個博客:http://blog.csdn.net/shijing_0214/article/details/51134802
    技術分享圖片
    技術分享圖片
    長度的定義是指定序列下的序列號,從1開始,比如lass das,的asd序列號為(2,3,6)和(2,4,6)所以長度為5因此這裏映射後為2λ^5.
    兩個字符串s,t上的字符串核函數是基於映射φn的特征空間中的內積:
    技術分享圖片
    字符串核函數kn(s,t)給出了字符串s,t中長度等於n的所有子串組成的特征向量余弦相似度(cosine similarity)。兩個字符串相同的子串越多,他們越相似,字符串核函數的值就越大。

3.4 非線性支持向量機

技術分享圖片
利用核技巧可以將線性分類的學習方法應用到非線性分類問題上,將線性SVM擴展到非線性SVM中,只需將線性SVM對偶形式中的內積函數換成核函數。
非線性SVM學習算法:
技術分享圖片

4 序列最小最優化算法sequential minimal optimization SMO

凸二次規劃問題具有全局最優解,但是當訓練樣本很大時,這種求解算法很低效。故這裏提出一個SMO算法,以快速實現(1998年 Platt提出)。
要解決的問題是:凸二次規劃的對偶問題
技術分享圖片
SMO基本思路:啟發式算法,KKT條件時最優化問題的充要條件,如果滿足則解就得到了。否則,選擇兩個變量,固定其他變量,針對這兩個變量構建二次規劃問題,這就使得原始問題變得更小,可以通過解析方法得到,提高計算速度;應該要求關於這兩個變量的解更接近於原始二次規劃的解。註意子問題有兩個變量,一個是違反KKT條件最嚴重的一個,另外一個由約束條件自動確定,如此SMO將原問題不斷分解為子問題求解,進而達到求解原始問題的目的。
比如,將約束條件中假設兩個變量alpha1,alpha2,其他固定,那麽等式約束為:
技術分享圖片
SMO算法包括兩部分:兩個變量二次規劃的解析方法,選擇變量的啟發式方法。

4.1 兩個變量二次規劃的解析方法

還是假設兩個變量為alpha1,alpha2,則:
技術分享圖片技術分享圖片
目標函數省略了不含這兩個變量的常數項,ζ是常數。
首先觀察約束條件,然後在約束條件下求解:
技術分享圖片
經過畫圖和變形,發現這已經變成中學學過的線性規劃的問題,這裏不等式約束變成一個區域,等式約束變成一條平行於正方形約束區域的對角線的直線,兩個變量可相互表示,因此兩個變量最優解的問題變成了單變量最優化的問題。
技術分享圖片

4.2 變量的選擇方法

選擇兩個變量,至少一個變量嚴重違反KKT條件。

  1. 第一個變量選擇
    SMO中將選擇第一個變量稱為外層循環。外層循環選擇訓練樣本中違反KKT條件最嚴重的樣本點,檢驗方法是:
    技術分享圖片
    技術分享圖片技術分享圖片
    說明:該檢驗是在技術分享圖片範圍內進行的。檢驗過程中,外層循環首先遍歷所有滿足條件技術分享圖片的樣本點,即在間隔邊界上的支持向量點,檢驗他們是否滿足KKT條件。若這些均滿足,那麽遍歷整個訓練集檢驗他們是夠滿足KKT條件。
  2. 第二個變量的選擇
    SMO稱這個選擇為內層循環。假設外層循環找到alpha1,那麽這裏alpha2的要求是希望alpha2能有足夠大的變化。根據以上手寫的結論,alpha2 依賴於|E1-E2|,如果alpha1已經找到則E1也會確定。如果E1是正的,那麽選擇最小的Ei作為E2,如果E1是負的,那麽選擇最大的Ei作為E2。為了節省計算時間,將所有的Ei保存在一個列表中。
    特殊情況下,如果內層循環通過以上方法選擇的alpha2不能不能使目標函數有足夠的下降,那麽采用啟發式規則繼續選擇,遍歷間隔邊界上的支持向量點,一次對alpha2進行試用,直到目標函數有足夠的下降。若找不到合適的,遍歷整個訓練集,若扔找不到合適的,放棄alpha1,再通過外層循環尋求另外的alpha1。
  3. 計算閾值b,和差值Ei
    技術分享圖片
    技術分享圖片
    合並化簡後:
    技術分享圖片
    每次完成兩個變量的優化後,還必須更新對應的Ei值,並將它們保存在Ei表中
    技術分享圖片
    b1,b2的關系:
    技術分享圖片
    SMO算法:
    技術分享圖片
    技術分享圖片
    總結SMO
    技術分享圖片
    推薦博客:https://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html

class-支持向量機SVM全析筆記