? ? SVM是一種傳統(tǒng)的學習算法,多用于二分類問題。根據(jù)SVM處理的問題樣本是否線性可分可以將SVM分為三種類型。如果存在一個劃分超平面可以完美的分隔開所有樣本,那么這種SVM叫“線性可分SVM”,通過“硬間隔最大化”學習得到模型;如果存在一個劃分超平面可以分隔開絕大部分樣本,只有少量樣本不能正確劃分,則可以通過“軟間隔最大化”學習得到模型,這種SVM叫“線性SVM”;還有一種情況,上面兩種情況均無法滿足,比如“異或問題”,這樣的SVM稱為“非線性SVM”,需要引入核函數(shù),再按照“軟間隔最大化”的方法訓練模型。
? ? 總之,SVM學習策略的核心是“間隔最大化”。本文用于推導的公式是基于線性可分SVM的,也就是討論“硬間隔最大化”的數(shù)學原理。那么什么是“間隔”,什么又是“支持向量”,先來看一張圖片。

? ? 假設樣本數(shù)據(jù)集,其中
,上圖中的“+”“-”表示正樣本和負樣本,可以看出,五條線表示五種超平面的劃分方法,那么哪個才是最合適的呢?直觀地理解,加粗的線是一種最佳的劃分超平面,因為它不僅可以正確分開所有樣本點,還處于最“中間”的位置。這會使得超平面劃分的泛化能力更強(如果給樣本加入噪聲或擾動,更不易分類錯)。換言之,此分類器的魯棒性更強,對未知的數(shù)據(jù)的分類錯誤率更低。
? ? 下面,我們逐步引出“間隔”的概念。在樣本空間中,劃分超平面的方程為(可從二維平面的角度理解),樣本中任意點到劃分平面的距離
就是
。還是看上面的圖,樣本被完全正確的分類,也就是說如果樣本為正,則
,如果樣本為負,則
。
? ? 我們觀察到,即使是離平面最近的樣本,也是與平面有一定距離的,離劃分超平面最近的那幾個向量,就是“支持向量”。由此可以看出SVM的一個特性,超平面的選擇只與支持向量的值有關(guān),如果更改甚至刪掉其他的部分樣本,模型不會受到影響。這就是“支持向量機”。支持向量機的個數(shù)一般很少,所以支持向量機是由少數(shù)“重要的”樣本決定的。
????我們這樣描述所有樣本,令
? ? 其中,表示樣本編號。這里解釋一下,為什么可以令表達式
而不是嚴格
。前面提到,離劃分平面最近的樣本點與平面是有一定的距離的,我們看劃分超平面的方程
,
和
是可以同時擴大、縮小相同倍數(shù)而不改變原方程的,那么在正樣本的原方程可以寫為
,除了自變量之外的三個參數(shù)可以同時擴大或縮小就成了上面的方程。那什么時候等號成立呢?自然就是當樣本為“支持向量”的時候。這時兩個異類的支持向量到平面的距離之和為:
;
? ? 這就是“間隔”的定義。不難看出,我們的目標應該是找到間隔最大的超平面,也就是
? ? 我們將其改寫為最小值函數(shù):
? ? 上式被稱為SVM的基本型(后文統(tǒng)一稱作“原問題方程”)。那如何求解這個問題呢?我們對其對偶問題進行求解,這樣做有兩個原因,一是對偶問題只涉及到一個參數(shù),更易求解,二是自然引出核函數(shù),核函數(shù)也是SVM的核心之一。對上式使用拉格朗日乘子法即可得到對偶問題:
? ? 我們最終要求解的問題時極大極小問題,即,首先計算極小的部分,根據(jù)大學數(shù)學的基本知識,令
對
和
求偏導:
? ? 代入原式,得:
????所以對偶問題要解的方程是:
? ? 只需要解出來一個向量即可。這里現(xiàn)成的、高效的算法是SMO算法。
SMO的基本思路是先固定
之外的所有參數(shù),求
上的極值。每次SMO會選擇兩個變量
,并固定其他參數(shù)。
? ? 在每次迭代時,選擇一對需要更新的變量,固定其他變量,也就是:
? ? 這樣,可以表示為
的函數(shù),對偶問題要解的極大值方程為單變量二次規(guī)劃問題,易于求解。求解出
之后,再求解
,有如下定理:
若
是對偶問題的解,那么存在
,且原問題方程的解為:
? ? 最后模型表示為:
? ? 另外,由于原問題方程滿足KKT條件,即
? ? 可以看出,對任意訓練樣本,要么,要么
,如果是前者,那么不影響模型的結(jié)果,如果是后者,可以看出樣本在間隔邊界上,是一個支持向量。這也呼應了前文“模型只與支持向量有關(guān)”的結(jié)論。