第7章 支持向量機
支持向量機(support vector machines, SVM)是一種二類分類模型。它的基本模型是定義在特征空間上的間隔最大的線性分類器;支持向量機還包括核技巧,這使它成為實質上的非線性分類器。支持向量機的學習策略就是間隔最大化,可形式化為一個求解凸二次規划(convex quadratic programming)的問題,也等價於正則化的合頁損失函數的最小化問。支持向量機的學習算法是求解凸二次規划的最優化算法。
支持向量機學習模型:線性可分支持向量機(linear support vector machine in linearly separable case )、線性支持向量機(linear support vector machine)及非線性支持向量機(non-linear support vector machine)。學習方法包括:硬間隔最大化(hud margin maximization)、軟間隔最大化(soft margin maximization)、核技巧(kernel trick)。通過使用核函數可以學習非線性支持向量機,等價於隱式地在高維的特征空間中學習線性支持向量機。這樣的方法稱為核技巧(kernel trick)
7.1 線性可分支持向量機與硬間隔最大化
定義7.1 (線性可分支持向量機):給定線性可分訓練數據集,通過間隔最大化或等價地求解相應的凸二次規划問題學習得到的分離超平面為
以及相應的分類決策函數
稱為線性可分支持向量機.
函數間隔和幾何間隔
定義7.2(函數間隔 functiona lmargin):對於給定的訓練數據集T和超平面(w, b),定義超平面關於樣本點(xi, yi)的函數間隔為
定義超平面(w,b)關於訓練數據集T的函數間隔為超平面(w,b)關於T中所有樣本點(xi, yi)的函數間隔之最小值,即
函數間隔可以表示分類預測的正確性及確信度。但是成比例地改變w和b,例如將它們改為2w和2b,超平面並沒有改變,但函數間隔卻成為原來的2倍。
對分離超平面的法向量、加某些約束,如規范化,||w||=1,使得間隔是確定的。這時函數間隔成為幾何間隔。
定義7.2(幾何間隔 geometric margin):對於給定的訓練數據集T和超平面(w, b),定義超平面關於樣本點(xi, yi)的函數間隔為
定義超平面(w,b)關於訓練數據集T的函數間隔為超平面(w,b)關於T中所有樣本點(xi, yi)的函數間隔之最小值,即
函數間隔和幾何間隔的關系:
如果超平面參數w和b成比例地改變(超平面沒有改變),函數間隔也按此比例改變,而幾何間隔不變。
間隔最大化
支持向量機學習的基本想法是求解能夠正確划分訓練數據集並且幾何間隔最大的分離超平面。對線性可分的訓練數據集而言,線性可分分離超平面有無窮多個(等價於感知機),但是幾何間隔最大的分離超平面是唯一的。這里的間隔最大化又稱為硬間隔最大化。
間隔最大化的直觀解釋是:對訓練數據集找到幾何間隔最大的超平面意味着以充分大的確信度對訓練數據進行分類,也就是說,不僅將正負實例點分開,而且對最難分的實例點(離超平面最近的點)也有足夠大的確信度將它們分開。
線性可分支持向量機的學習算法——最大間隔法(maximum margin method)。
定理7.1 (最大間隔分離超平面的存在唯一性):若訓練數據集z線性可分,則可將訓練數據集中的樣本點完全正確分開的最大間隔分離超平面存在且唯一。
支持向量和間隔邊界
在線性可分情況下,訓練數據集的樣本點中與分離超平面蹌離最近的樣本點的實例稱為支持向量( support vector )。支持向量是使約束條件式等號成立的點,即
下圖中在H1和H2上的點就是支持向量
H1和H2之間的距離稱為間隔(margin)。間隔依賴於分離超平面的法向量w,等於2/||w||。H1和H2稱為間隔邊界.
在決定分離超平面時只有支持向量起作用,而其他實例點並不起作用。如果移動支持向量將改變所求的解;但是如果移動其他實例點,甚至去掉這些點,則解是不會改變的。由於支持向量在確定分離超平面中起決定性作用,所以將這種分類模型稱為支持向量機。支持向量的個數一般很少,所以支持向量機由很少的“重要的”訓練樣本確定。
學習的對偶算法(dual algorithn)
構建拉格朗日函數(Lagrange function),引進拉格朗日乘子(Lagrange multiplier):
根據拉格朗日對偶性,原始問題的對偶問題是拉格朗日函數的極大極小問題
定理7.2:設a*是對偶最優化問題的解,則存在下標j使得aj* >0,並可按下式求得原始最優化問題的解:
算法7.2(線性可分支持向量機學習算法)
定義7.4(支持向量):將訓練數據集中對應於ai*>0的樣本點(xi, yi)的實例xi稱為支持向量。支持向量一定在間隔邊界上。
7.2 線性支持向量機與軟間隔最大化
針對線性不可分訓練數據:
線性不可分意味着某些樣本點不能滿足函數間隔大於等於1的約束條件,為了解決這個問題,可以對每個樣本點引進一個松弛變量,約束條件變為:
線性不可分的線性支持向量機的學習問題變成凸二次規划(convex quadratic progamming )問題(原始問題):
定義7.5(線性支持向量機):對於給定的線性不可分的訓練數據集,通過求解凸二次規划問題,即軟間隔最大化問題。得到的分離超平面為
以及相應的分類決策函數
稱為線性支持向量機.
學習的對偶算法(dual algorithn) :拉格朗日函數
通過求解對偶問題得到
定理7.3:設a*是對偶最優化問題的一個解,則存在一個分量0<aj* <C,可得原始最優化問題的解:
算法7.3(線性支持向量機學習算法)
支持向量
線性不可分的情況下,將對偶問題的解a*中對應於aj* > 0的樣本點(xi,yi)的實例xi稱為支持向量(軟間隔的支持向量)。
軟間隔的支持向量xi或者在間隔邊界上,或者在間隔邊界與分離超平面之間,或者在分離超平面誤分一側。
若a*<C,0<約束<1,則分類正確,xi在間隔邊界與分離超平面之間;
若a*<C,約束=1,則xi在分離超平面上:
若a*<C,約束>1,則xi位於分離超平面誤分一側.
合頁損失函數
線性支持向量機學習還有另外一種解釋,就是最小化以下目標函數
目標函數的第1項是經驗損失或經驗風險,函數
稱為合頁損失函數(hinge loss ftmction)
定理7.4 線性支持向量機原始最優化問題等價於最優化問題:
合頁損失函數不僅要分類正確,而且確信度足夠高時損失才是0。
7.3 非線性支持向量機與核函數
核技巧
非線性分類問題:如果能用Rn中的一個超曲面將正負例正確分開,則稱這個問題為非線性可分問題.
求解方法:進行非線性變換,將非線性問題變成線性問題。
核技巧應用到支持向量機,其基本想法就是通過一個非線性變換將輸入空間(歐氏空間Rn或離散集合)對應於一個特征空間(希爾伯特空間H),使得在輸入空間Rn中的超曲面模型對應於特征空間H中的超平面模型(支持向量機)。
定義7.6(核函數)設X是輸入空間,H為特征空間,如果存在一個映射映射函數
使得對所有屬於X的x,z,函數K(x,z)滿足條件
則稱K(x,z)為核函數。
核技巧的想法是,在學習與預測中只定義核函數K(x,z),而不顯式地定義映射函數。對於給定的核K(x,z),特征空間x和映射函數的取法並不唯一,可以取不同的特征空間,即便是在同一特征空間里也可以取不同的映射。
核技巧在支持向量機中的應用
在對偶問題的目標函數中的內積(xi*xj)可以用核函數K(xi, xj)來代替:
分類決策函數也可用核函數代替,變為:
這等價於經過映射函數將原來的輸入空間變換到一個新的特征空間,將輸入空間中的內積(xi*xj)變換為特征空間中的內積。在新的特征空間里從訓練樣本中學習線性支持向量機。當映射函數是非線性函數時,學習到的含有核函數的支持向量機是非線性分類模型。
在核函數給定的條件下,可以利用解線性分類問題的方法求解非線性分類問題的支持向量機。學習是隱式地在特征空間進行的,不需要顯式地定義特征空間和映射函數。這樣的技巧稱為核技巧。
正定核(positive definite kernel function)的充要條件
定理7.5(正定核的充要條件) 設K:X*X->R是對稱函數,則K(x,z)為正定核函數的充要條件是對任意xi屬於X,i=1,2,... ,m, K(x,z)對應的Gram矩陣
是半正定矩陣.
定義7.7 (正定核的等價定義)
設X包含於Rn,K(x,z)為定義在X*X上的對稱函數,如果對任意xi屬於X,i=1,2,... ,m, K(x,z)對應的Gram矩陣
是半正定矩陣,則稱K(x,z)是正定核。
常用核函數
(1) 多項式核函數(polynomial kernel function)
對應的支持向量機是一個P次多項式分類器.在此情形下,分類決策函數成為
(2)高斯核函數(Gaussian kernel function)
對應的支持向量機是一個高斯徑向基函數( radial basis function )分類器.在此情形下,分類決策函數成為
(3)字符串核函數(string kernel function)
核函數不僅可以定義在歐氏空間上,還可以定義在離散數據的集合上。比如,字符串核是定義在字符串集合上的核函數。
兩個字符串s和t上的字符串核函數是基於映射
的特征空間中的內積
字符串核函數氣kn(s, t)給出了字符串s和t中長度等於n的所有子串組成的特征向量的余弦相似度(cosine similuity)。直觀上,兩個字符串相同的子串越多,它們就越相似,字符串核函數的值就越大。字符串核函數可以由動態規划快速地計算。
非線性支持向量分類機
定義7.8 (非線性支持向量機) 從非線性分類訓練集,通過核函數與軟間隔最大化,或凸二次規划,學習得到的分類決策函數
稱為非線性支持向量,K(x,z)是正定核函數
7.4 序列最小最優化算法(sequential minimal opfimization,SMO)
SMO算法要解如下凸二次規划的對偶問題:
SMO算法是一種啟發式算法,其基本思路是:如果所有變量的解都滿足此最優化問題的KKT條件(Karush-Kuhn-Tucker conditions),那么這個最優化問題的解就得到了。因為KKT條件是該最優化問題的充分必要條件。否則,選擇兩個變量,固定其他變量,針對這兩個變量構建一個二次規划問題。這個二次規划問題關於這兩個變量的解應該更接近原始二次規划問題的解,因為這會使得原始二次規划問題的目標函數值變得更小。重要的是,這時子問題可以通過解析方法求解,這樣就可以大大提高整個算法的計算速度。子問題有兩個變量,一個是違反KKT條件最嚴重的那一個,另一個由約束條件自動確定。如此,SMO算法將原問題不斷分解為子問題並對子問題求解,進而達到求解原問題的目的。
整個SMO算法包括兩個部分:求解兩個變量二次規划的解析方法和選擇變量的啟發式方法.
兩個變量二次規划的求解方法
不失一般性,假設選擇的兩個變量是a1,a2,其他變量ai (i=3,4, ..., N)是固定的。SMO的最優化問題的子問題可以寫成:
假設初始可行解為a1old和a2old,最優解為a1new和a2new,滿足
L與H是a2new所在的對角線段端點的界
如果y1 != y2,
如果y1 = y2,
根據約束條件,有
引入記號,
代入到最優化問題中,有
這樣,通過對W進行求導可以得到
定理7.6 最優化問題沿着約束方向未經剪輯時的解是
變量的選擇方法
第1個變量的選擇
SMO稱選擇第1個變量的過程為外層循環。外層循環在訓練樣本中選取違
反KKT條件最嚴重的樣本點,並將其對應的變量作為第1個變量。具體地,檢
驗訓練樣本點(xi,yi)是否滿足KKT條件,即
該檢驗是在范圍內進行的。在檢驗過程中,外層循環首先遍歷所有滿足條件
的樣本點,即在間隔邊界上的支持向量點,檢驗它們是否滿足KKT條件。如果這些樣本點都滿足KKT條件,那么遍歷整個訓練集,檢驗它們是否滿足KKT條件。
第2個變量的選擇
SMO稱選擇第2個變量的過程為內層循環。假設在外層循環中已經找到第1個變量a1,現在要在內層循環中找第2個變量a2。第2個變量選擇的標准是希望使a2有足夠大的變化.
由定理7.6可知a2是依賴於|E1-E2|的,為了加快計算速度,一種簡單的做法是選擇a2使其對應的|E1-E2|最大。因為a1已定,E1也確定了。如果E1是正的,那么選擇最小的Ei作為E2;如果E1是負的,那么選擇最大的Ei作為E2。在特殊情況下,如果內層循環通過以上方法選擇的a2不能使目標函數有足夠的下降,那么采用以下啟發式規則繼續選擇a2。遍歷在間隔邊界上的支持向量點,依次將其對應的變量作為a2試用,直到目標函數有足夠的下降。若找不到合適的a2,那么遍歷訓練數據集;若仍找不到合適的a2,則放棄第1個a1,再通過外層循環尋求另外的a1。
計算閾值b和差值Ei
由變量選擇的檢驗條件可得,
如果a1new和a2new同時滿足條件那么
。如果a1new和a2new是0或者C,那么b1new和b2new以及它們之間的數都是符合KKT條件的閾值,這時選擇它們的中點作為bnew。
Ei值的更新要用到bnew值,以及所有支持向量對應的aj
其中S是所有支持向量xj的集合