1. 程式人生 > >手推SVM(一)-數學推導

手推SVM(一)-數學推導

  1. SVM的想法
  2. SVM中在數學上目標
    2.1 判定條件
    2.2 最大間隔假設
  3. SVM的推導
    3.1 第一種境界
    3.2 第二種境界
    3.3 第三種境界-kkt條件

SVM的推導過程和他的地位一樣重要,雖然很久以前就已經接觸過SVM了,但總感覺理解不是很深,接著聽課的熱度,順便寫篇文章讓自己理解更深刻一點,本文假設你只會簡單的向量乘法,推匯出SVM。

1.SVM的想法

監督學習,作為一個二分類任務,在平面上表示就是希望有這麼一條分類邊界,能把正負樣本分開,每種分類器畫的分類邊界都不一樣,到底哪個最好,只能看問題,看資料,看實際的應用場景。
這裡寫圖片描述
上圖中,有三條決策邊界,而SVM的關鍵假設是 :找到一條直線到樣本點兩邊的距離最大,也就是margin最大。這樣的好處就是模型具有更好的魯棒性。

什麼是魯棒性呢?
通俗理解來說就是更能容忍誤差,比如下圖中的紅色xx,從左到右是點到直線的距離越來越遠的,如果是最左邊的一條線,假設有一個點和紅色叉叉比較接近,但剛好在紅色叉叉的下方,這時候,模型會判定這條線藍色小圈圈的,而最右邊的那條線則會判定為紅色叉叉,所以相比來說,最右邊的線比最左邊的線具有更好的魯棒性。
這裡寫圖片描述

上圖是點到線的距離,那換成線到點的距離是不是一樣的呢?

這裡寫圖片描述
很容易想到我們希望這條街的街寬最大,但是,該怎麼定義呢?

用數學表示式表達出來可以有這樣的式子,街寬用術語來說就是margin:

OK,這是我們的想法,那我們怎麼實現這個想法呢?

2.SVM中在數學上目標

2.1 判定條件

假設中間那條實線是最好的決策邊界,做w⃗ 為垂直於中間那條線的向量,新來一個點,與0組成向量表示為u⃗ ,如果u⃗ w⃗ 上的投影大於某一數值C,則判定該點為正樣本,用向量表示為:

w⃗ ||w||u⃗ >=C把C移過來可以寫成:1||w||(w⃗ u⃗ +b)>=0

這裡寫圖片描述

2.2 最大間隔假設

為了讓決策邊界更好的劃分樣本,也為了模型具有更好的泛化能力,我們希望模型在訓練集中,這條街的寬度儘可能大,同時,因為1||w||是可變的,對整體的公式沒有影響,相當於係數,用數學公式表達這個想法就是:

w⃗ X++b>=1w⃗ X+b<=
1
當然這個1不是規定的,也可以是更大的數,但如果是10,我總能夠對方向量w⃗ 進行適當的伸縮,讓它又變回1,所以為了計算方便,我們把它設成1.這就是SVM的最大間隔假設。

再來回顧一下,我們的總目標就是找到這樣引數w⃗ ,b能判斷樣本是正樣本還是負樣本,同時在訓練集中,要求它的間隔儘可能得大。

  1. SVM的推導

3.1 第一種境界

提個要求很容易,但具體的引數應該怎麼求呢?
為了求解方便,我們用一個小技巧,把最大間隔假設合成一個式子:

yi(w⃗ X++b)>=1yi=1,1其實這裡的yi相當於一個符號,其中對於邊界上的點(街邊)要求:yi(w⃗ X⃗ +b)=1

那這個街寬應該怎麼求出來呢?假設我們只會向量的乘法,我們來看一下怎麼通過向量的乘法求出街的寬度。

下方為負樣本,上方為正樣本,在法向量w⃗ 上選取位於街邊的正樣本,可以得到正,負樣本的距離為

x+x_|x+x_|,那街的寬度不就是向量x+x_在法向量上的投影嗎?width=(x+x_)w⃗ ||w⃗ ||=x+w⃗ ||w⃗ ||xw⃗ ||w⃗ ||=1b||w⃗ ||