轉載請注明出處:http://blog.csdn.net/luoshixian099/article/details/51073885
支持向量機(Support Vector Machine)以前在分類、回歸問題中非常流行。支持向量機也稱為最大間隔分類器,通過分離超平面把原始樣本集划分成兩部分。
首先考慮最簡單的情況:線性可分支持向量機。即存在一個超平面能夠把訓練樣本分開。
1.線性可分支持向量機
1.考慮一個線性二分類的問題;例如以下左圖,在二維平面上有兩種樣本點x,目標值分別標記為{-1,1}。能夠作出無數條直線
2.一般來說,當樣本點離直線越遠。則分類正確的確信度越大;例如以下右圖所看到的,A,B,C三個樣本點都被預測分類到‘×’類中。可是對於A的分類正確的確信度比C大。因為點C里分類直線
1.1函數間隔與幾何間隔
由二維直線
一個點距離超平面的遠近能夠表示分類預測的確信程度。在超平面
函數間隔:超平面
定義超平面關於樣本集S的函數間隔為超平面(w,b)與S中全部樣本點的函數間隔的最小值
定義
注意到函數間隔實際上並不能表示點到超平面的距離,因為當超平面
幾何間隔:

如上圖所看到的:設樣本點A坐標為
假設點被正確分類。
幾何間隔不隨着超平面參數的變化而變化,比如超平面參數(w,b)變為(2w,2b)。函數間隔
函數間隔與幾何間隔的關系:
1.2間隔最大化
如上所述。支持向量機的基本想法是求解能夠正確划分訓練數據集並且幾何間隔最大的分離超平面。
上述問題,能夠轉變為一個凸二次規划問題。這是支持向量機的一個重要屬性,局部極值即為全局最值。
考慮函數間隔與幾何間隔的關系:

上述優化問題中,當超平面參數(w,b)同一時候變為(2w,2b),函數間隔也會變為

上述問題為一個凸優化問題,通過某些優化算法能夠求解。
以下繼續介紹拉格朗日對偶算法,能夠更進一步優化上述問題,同一時候自然引入核函數,推廣到高維數據。
1.3拉格朗日對偶性
有時考慮解決原始問題的對偶問題會更高效。
原始問題
寫出拉格朗日函數。當中
定義關於
由此原始問題的約束最優化問題變為極小極大問題:
設原始問題的最優解記為
對偶問題
把上述極小極大問題
定義:
設此極大極小問題的最優解記為
為了使得對偶問題與原始問題的最優解相等
1.4最優間隔分類器
回想原始問題:
寫成拉格朗日函數。因為僅僅有不等式約束所以僅僅包括拉格朗日乘子
原始問題最優解
對偶問題先求關於參數w,b的最小值,再求關於參數
首先,分別對w,b求偏導數並令為0。得:
把上述結果帶入拉格朗日函數
注意到上述是僅僅關於參數
以下的目的是解決上述優化問題。通常採用SMO算法,本篇文章暫不做介紹。假如已經得到最優解
當
依據KKT條件有
2.線性支持向量機
以上討論的內容是建立在數據是線性可分的情況。即存在一個分離超平面能夠把訓練數據分為兩部分。實際上數據並不會這么理想,例如以下圖所看到的。即存在某些樣本點不能滿足函數間隔大於等於1這個條件。
這時能夠為每一個數據點設置一個松弛因子
C稱為懲處參數(C>0)。C值越大對誤分類的懲處越大。因為當C為無窮大時,即成為了線性可分問題。
採用與線性可分同樣的過程。建立拉格朗日函數:
由對偶函數得。首先分別對
由上述KKT條件能夠得到:
3.非線性支持向量機
3.1 概念
如上圖所看到的,原始樣本數據線性不可分,即無法用一條直線或分離超平面將兩類分開。
可是對原始數據採用非線性變換
步驟:首先使用非線性變換將原始數據集映射到新空間中。稱為特征空間,在特征空間中數據將變的線性可分,然后採用線性支持向量機的方法訓練分離超平面參數。
但在高維上計算量會急劇增大。會造成維數災難,自然引入核技巧(kernal trick)。
3.2 核技巧
觀察線性支持向量機的對偶問題為:
上述目標函數中。僅僅包括原始數據的內積形式
由上述分析,僅僅須要找到一個合適的非線性變換
定義核函數
核技巧的方法即不用構造非線性映射
經常使用幾個核函數:
4.SVM后驗概率輸出
SVM分類器中判決函數
參數A,B通過最大釋然的方法求解,為防止過擬合。求解A,B參數的樣本數據應獨立於訓練分類的樣本。因為在訓練分類器階段,沒有考慮后驗概率的問題,因此SVM后驗概率結果不可靠。
5.幾種損失函數的比較
如圖:0-1損失是二分類問題的真正損失函數,合頁損失與logistic損失是對0-1的損失函數的近似。最小二乘損失強化了分類點在正確分類邊界處。
5.1合頁損失函數
對於線性支持向量機。目標函數是最小化
第一項關於被稱為經驗損失,定義
5.2logistic回歸損失
為了方便敘述,改變一下標記方法。記原始樣本數據為
即
採用最大似然函數:
目標函數能夠定義為對數似然的負數。同一時候加上一個二次正則化因子。
第一項即為logistic回歸損失函數
5.3最小二乘損失
與線下回歸相似,能夠採用最小二乘損失作為目標函數:
6.SVM多分類問題
1.one-versus-the-rest
對於K個類別的問題。在訓練樣本上,採用SVM訓練出K個分類器。每一個分類器將訓練樣本分成
也能夠採用:
同一時候,訓練樣本的不平衡也可能造成分類器有誤差。
2.one-versus-one
在K分類的情況下,訓練出
此種方法依舊造成部分數據不屬於不論什么類的問題,上右圖陰影部分所看到的。
3.其它方法
1.一次訓練K分類的SVM。
參數多。復雜度高;(Weston and Watkins 1999)
2.DAGSVM ;(Platt 2000)
參考:
1. PRML
2. MLAPP
3. CS 229-Andrew Ng