一、機器學習算法的常見流程
一般的機器學習分類算法,我們可以通常從三個步驟得到,以SVM算法為例,這里規定正例的y為1,負例的y為-1
Step 1: Function Set(Model)
Step 2: Loss function
理想情況下的loss function(ideal loss)是當g(x)和y不相等的情況下的樣本相加,但是這種情況下的損失函數是不可微分的,所以無法用梯度下降法訓練。
Step 3:Gradient descent
第三步就是用梯度下降法訓練模型了,我們現在的目標是尋找一種適合SVM的loss function。
二、Hinge Loss
接下來我們來分析SVM采用哪種損失函數比較合適,此坐標系橫坐標表示y*f(x),縱坐標表示loss。
首先分析Square loss的情況,從圖像上可以看出y*f(x)的值越接近於1越好,但y*f(x)很大的時候,loss越大,顯然不合理
sigmod+square loss的情況:函數曲線變化太平緩,梯度下降的performance比較差
Sigmod + cross entropy(邏輯回歸采用的損失函數)
hinge loss(SVM采用的損失函數)
假設此時的樣本是正例,即yn為1。其實f(x)大於0就已經能正確分類了,但hinge loss里還是強調f(x)>1,圖中penalty的部分就是margin,此時的margin為1,為什么是1呢,因為此時的hinge loss與Ideal loss最接近,都經過(0,1)點。
三、梯度下降法訓練SVM
按照我們在一中的定義,我們可以得到SVM的定義
由於hinge loss是凸函數,L2范數是凸函數,所以他倆之和仍然是凸函數,仍然可以用梯度下降法訓練
從下面的公式推導可以看出,hinge loss從幾何意義上看就是傳統的SVM,保證yn,f(x)同號的同時,需要大於間隔減去松弛變量,此時的1是間隔(margin)。
四、傳統的最大間隔法訓練SVM
支持向量機是一種二類分類模型,它的基本模型是定義在特征空間上的間隔最大的線性分類器(有別於LR,只是尋找一個能將樣本點分開的決策邊界,SVM強調間隔最大化),所以它的基本學習策略就是間隔最大化。該問題可形式化求解一個凸二次規划問題,進一步利用拉格朗日對偶性,可將原始問題轉換為對偶問題,通過求解對偶問題(dual problem)得到原始問題(primal problem)的最優解。引入對偶問題一是能使問題容易求解,二是自然引入核函數,進而推廣到非線性分類問題。
支持向量機的基本想法就是求解能夠正確划分訓練數據集並且幾何間隔最大的分離超平面。
接下來是線性可分支持向量機算法的詳細推導過程:
對於線性不可分的分類問題,一個基本思路——向高維空間轉化,使其變得線性可分。可以使用一個變換,將元空間的數據映射到新空間;然后再新空間里用線性分類學習方法訓練數據中學習分類模型,核技巧就是屬於這樣的方法。核技巧應用到SVM,其基本想法就是通過一個非線性變換將輸入空間對應於一個特征空間,使得在輸入空間中的超曲面模型對應於特征空間的超平面模型,這樣,分類問題的學習任務通過在特種空間中求解線性支持向量機就可以完成。
我們注意到線性支持向量機的對偶問題中,無論是目標函數還是決策函數(分離超平面)都只涉及到輸入實例與實例之間的內積。在對偶問題中的目標函數中的內積可以用核函數來代替,此時對偶問題的目標函數就變為:
五、SVM多分類
SVM應用於多分類問題有常見的三種方法:一對一法、一對其余法、DAG法。
- 一對其余法:
一類對余類法(One versusrest,OVR)是最早出現也是目前應用最為廣泛的方法之一,其步驟是構造k個兩類分類機(設共有志個類別),其中第i個分類機把第i類同余下的各類划分開,訓練時第i個分類機取訓練集中第i類為正類,其余類別點為負類進行訓練。判別時,輸入信號分別經過k個分類機共得到k個輸出值fi(x)=sgn(gi(x)),若只有一個+1出現,則其對應類別為輸入信號類別;實際情況下構造的決策函數總是有誤差的,若輸出不只一個+1(不只一類聲稱它屬於自己),或者沒有一個輸出為+1(即沒有一個類聲稱它屬於自己),則比較g(x)輸出值,最大者對應類別為輸入的類別。
這種方法的優點是,對k類問題,只需要訓練k個兩類分類支持向量機,故其所得到的分類函數的個數(k個)較少,其分類速度相對較快。
- 一對一法:
該方法在每兩類問訓練一個分類器,因此對於一個k類問題,將有k(k-1)/2個分類函數。當對一個未知樣本進行分類時,每個分類器都對其類別進行判斷.並為相應的類別“投上一票”,最后得票最多的類別即作為該未知樣本的類別。決策階段采用投票法,可能存在多個類的票數相同的情況,從而使未知樣本同時屬於多個類別,影響分類精度。
- DAG法(有向無環圖)
DAG-SvMS是由PIatt提出的決策導向的循環圖DAG導出的,是針對“一對一"SvMS存在誤分,拒分現象提出的。這種方法的訓練過程類似於“一對一”方法,k類別問題需要求解k(k-1)/2個支持向量機分類器,這些分類器構成一個有向無環圖。該有向無環圖中含有k(k-1)/2個內部節點和k個葉結點,每個節點對應一個二類分類器。
DAG-SVMS簡單易行,只需要使用k一1個決策函數即可得出結果,較“一對一"方法提高了測試速度,而且不存在誤分、拒分區域;另外,由於其特殊的結構,故有一定的容錯性,分類精度較一般的二叉樹方法高。然而,由於存在自上而下的“誤差積累”現象是層次結構固有弊端,故DAG-SVMS也逃脫不掉。即如果在某個結點上發生了分類錯誤,則會把分類錯誤延續到該結點的后續結點上.
參考書籍及鏈接:
李宏毅機器學習
《統計學習方法》——李航
http://blog.sina.com.cn/s/blog_5eef0840010147pa.html