svm中的數學和演算法

來源:互聯網
上載者:User

標籤:style   http   使用   資料   os   width   

支援向量機(Support Vector Machine)是Cortes和Vapnik於1995年首先提出的,它在解決小樣本、非線性及高維模式識別中表現出很多特有的優勢,並可以推廣應用到函數擬合等其它機器學習問題中。

一、數學部分

1.1二維空間

支援向量機的典型應用是分類,用於解決這種問題:有一些事物是能夠被分類的,可是詳細怎麼分類的我們又說不清楚,比方說中三角的就是C1類,圓圈的就是C2類,這都是已知的,好,又來了一個方塊,這個方塊是屬於C1呢還是屬於C2呢,說不清楚。SVM演算法就是試著幫您把這件事情說清楚的。

在二維空間裡(這時候樣本有兩個參照屬性),SVM就是在C1和C2中間劃一條線g(x)=0,線兒上邊的屬於C1類,線兒下邊的屬於C2類,這時候方塊再來,咱就有章程了。

     

關於g(x) = 0得再囉嗦幾句,g(x)裡邊的x不是橫座標,而是一個向量,也不是解析幾何裡邊的斜率,也是向量。是一個向量積。比方在解析幾何意義上的直線y = -x-b,換成向量標記法就是 ,這裡w就是那個,x就是那個。

對C1類中的點:g(x) > 0;對於 C2類中的點:g(x) < 0 ;

假設我們用y來表示類型,+1代表C1類,-1代表C2類。

那麼對於全部訓練樣本而言,都有:,那麼g(x) = 0 就行正確切割全部訓練樣本的那條線,僅僅要把g(x) = 0這條線給找出來就能湊合用了。

這也就僅僅能湊合用,由於滿足這個條件的g(x) = 0 太多了,追求完美的我們要的是最優的那條線。怎麼才是最優的呢?直覺告訴我們g(x) = 0這條線不偏向C1那邊,也不偏向C2那邊,就應該是最優的了吧。對,學名叫分類間隔,紅線的長度就是分類間隔。

在二維空間中,求分類間隔,能夠轉化為求點到線的距離,點到線的距離能夠表示為(向量表示)。為簡單計,把整個二維空間歸一化(等比放大或縮小),使得對於全部的樣本,都有|g(x)|>=1,也就是讓C1和C2類中離g(x)=0近期的訓練樣本的|g(x)|=1,這時分類間隔就是,這個間隔越大越好,那麼||越小越好。

1.2多維空間

如今我們已經在2維空間中抽象出一個數學問題,求滿足例如以下條件的g(x)=0:

,即在滿足條件下能使取最小值的那個w。在二維空間中,w能夠近似的理解為斜率,在樣本確定,斜率確定的情況下,中的那個b也是能夠確定的,整個 = 0也就確定了。

如今我們討論的僅僅是二維空間,可是我們驚喜的發現,在二維空間中的結論能夠非常easy的推廣到多維空間。比方說:

我們仍然能夠把多維空間中的切割面(超平面)表示為。

多維空間中點到面的距離仍然能夠表示為。例如以,平面表示為,x是在面上的投影,r是x到面的距離,簡單推導例如以下:

w向量垂直於平面,有:,把上式帶入中得到,化簡得到,所以,向量x到平面的距離,這和二維空間中結論也是一致的。

如今我們把SVM從2維空間推廣到多維空間,即求滿足例如以下條件的g(x)=0:

1.3拉格朗日因子

這是一個典型的帶約束條件的求極值問題,目標函數是的二次函數,約束函數是的線性函數:二次規劃問題。求解二次規劃問題的一般性方法就是加入拉格朗日乘子,構造拉格朗日函數(理論上這兒應該另一些額外的數學條件,拉格朗日法才是可用,就略過了)。

詳細求解過程例如以下:

1、構造拉格朗日函數

        

當中和b是未知量。

2、對和b求偏導數,令偏導數為0。

, 即

3、把上式帶回拉格朗日函數,得到拉格朗日對偶問題,把問題轉化為求解

4、最後把問題轉化為求解滿足下列等式的

1.4線性化

好,如今我們再來梳理一下svm的分類邏輯,在空間中找一個切割面(線)把樣本點分開,切割面(線)的最優條件就是分類間隔最大化,分類間隔是基於點到平面(直線)的距離來計算的。問題是全部的切割面都是平面,全部的切割線都是直線嗎?顯然不是。

比方特徵是房子的面積x,這裡的x是實數,結果y是房子的價格。如果我們從樣本點的分布中看到x和y符合3次曲線,那麼我們希望使用x的三次多項式來逼近這些樣本點。

在二維空間中這是非線性,這樣我們前面的推理都沒法用了------點到曲線的距離?不知道怎麼算。可是假設把x映射到3維空間,那麼對於來說,就是線性,也就是說,對於低維空間中非線性線(面),在映射到高維空間中時,就能變成線性。於是我們還須要把問題做一個小小的修正,我們面臨的問題是求解:

,這裡面引入了一個Kernel,核函數,用於樣本空間的線性化。

1.5鬆弛變數

      上面就是一個比較完整的推導過程,可是經驗表明把上述條件丟給電腦進行求解,基本上是無解的,由於條件太苛刻了。實際上,最常常出現的情況例如以紅色部分,在分類過程中會出現雜訊,假設對雜訊零容忍那麼非常有可能導致分類無解。

      

為瞭解決問題又引入了鬆弛變數。把原始問題修正為:

依照拉格朗日法引入拉格朗日因子:

對上式分別求的導數得到:

, 即

帶回得到拉格朗日的對偶問題:

另外當目標函數取極值時,約束條件一定是位於約束邊界(KKT條件),也就是說:

分析上面式子能夠得出下面結論:

時:能夠不為零,就是說該點到切割面的距離小於,是誤分點。

時:為零,大於零:表示該點到切割面的距離大於是正確分類點。

時:為零,,該點就是支援向量。

再用數學語言提煉一下:

令,其對的偏導數為:

KKT條件能夠表示為:

用表示該KKT條件就是:

若,則

全部的 大於全部的。這裡b作為中間數被忽略了,由於b是能夠由推導得到的。

二、演算法部分

對於樣本數量比較多的時候(幾千個),SVM所須要的記憶體是電腦所不能承受的。眼下,對於這個問題的解決方案主要有兩種:塊演算法和分解演算法。這裡,libSVM採用的是分解演算法中的SMO(串列最小化)方法,其每次訓練都僅僅選擇兩個樣本。基本流程例如以下:

這裡有兩個重要的演算法,一個是的選擇,還有一個是的更新。

2.1的選擇演算法

選擇兩個和KKT條件違背的最嚴重的兩個,包括兩層迴圈:

外層迴圈:優先選擇遍曆非邊界樣本,由於非邊界樣本更有可能須要調整,而邊界樣本經常不能得到進一步調整而留在邊界上。在遍曆過程中找出的全部樣本中值最大的那個(這個樣本是最有可能不滿足條件的樣本。

內層迴圈:對於外層迴圈中選定的那個樣本,找到這種樣本,使得:

最大,上式是更新中的一個算式,表示的是在選定,最為更新運算元的情況下,最大。

假設選擇的過程中發現KKT條件已經滿足了,那麼演算法結束。

2.2的更新演算法

因為SMO每次都僅僅選擇2個樣本,那麼等式約束能夠轉化為直線約束:

轉化為圖形表示為:

那麼的取值範圍是:

把帶入中,得到一個一元二次方程,求極值得到:

終於:

2.3其它

上面說到SVM用到的記憶體巨大,還有一個缺陷就是計算速度,由於資料大了,計算量也就大,非常顯然計算速度就會下降。因此,一個好的方式就是在計算過程中逐步去掉不參與計算的資料。由於,實踐證明,在訓練過程中,一旦達到邊界(=0或者=C),的值就不會變,隨著訓練的進行,參與運算的樣本會越來越少,SVM終於結果的支援向量(0<

LibSVM採用的策略是在計算過程中,檢測active_size中的值,假設到了邊界,那麼就應該把對應的樣本去掉(變成inactived),並放到棧的尾部,從而逐步縮小active_size的大小。

b的計算 ,基本計算公式為:

理論上,b的值是不定的。當程式達到最優後,僅僅要用隨意一個標準支援向量機(0<<C)的樣本帶入上式,得到的b值都是能夠的。眼下,求b的方法也有非常多種。在libSVM中,分別對y=+1和y=-1的兩類全部支援向量求b,然後取平均值。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.