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

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。
 
內容:

推薦svm理論基礎的bloghtml


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的條件消去一項得:

所以,獲得,
spa

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

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


回到正題,如此將原始約束最優化問題轉化爲對偶最優化問題,原始最優化的解可求(具體可證):
分離超平面爲:
分類決策函數爲:
此式稱爲SVM的對偶形式,只依賴於輸入x和訓練樣本xi的內積
線性可分SVM學習算法:


支持向量在定義:
稱爲SV
支持向量必定在邊界上,所以
αi*>0,故, or
注意:現實狀況多是數據集含有噪聲,致使數據集線性不可分。3d

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算法:
htm

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
相關文章
相關標籤/搜索