支持向量機(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 (線性可分支持向量機):給定線性可分訓練數據集,經過間隔最大化或等價地求解相應的凸二次規劃問題學習獲得的分離超平面爲學習
以及相應的分類決策函數優化
稱爲線性可分支持向量機.ui
函數間隔和幾何間隔3d
定義7.2(函數間隔 functiona lmargin):對於給定的訓練數據集T和超平面(w, b),定義超平面關於樣本點(xi, yi)的函數間隔爲blog
定義超平面(w,b)關於訓練數據集T的函數間隔爲超平面(w,b)關於T中全部樣本點(xi, yi)的函數間隔之最小值,即ip
函數間隔能夠表示分類預測的正確性及確信度。可是成比例地改變w和b,例如將它們改成2w和2b,超平面並無改變,但函數間隔卻成爲原來的2倍。字符串
對分離超平面的法向量、加某些約束,如規範化,||w||=1,使得間隔是肯定的。這時函數間隔成爲幾何間隔。get
定義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稱爲支持向量。支持向量必定在間隔邊界上。
針對線性不可分訓練數據:
線性不可分意味着某些樣本點不能知足函數間隔大於等於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。
核技巧
非線性分類問題:若是能用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)是正定核函數
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的集合