機器學習 支持向量機(SVM)的理解和推導

支持向量機(support vector machines)

支持向量機是機器學習中的一種很重要的算法,相比於其他算法,支持向量機的優勢在於能夠通過核技術將數據從低緯度映射到高緯度來劃分數據集。原則是使決策邊界最大化。下面一步步推導過程。

決策邊界

首先給大家一個概念,什麼是決策邊界。
下圖兩堆數據集可以看成是國家戰爭邊界,綠色點和藍色點是兩個國家埋的地雷,假設有一個軍隊要穿過這個地雷帶,怎樣穿過去才更安全呢,若按照圖一那樣穿過去,會比圖二那樣穿過去更加危險,我們把這個邊界叫做決策邊界。我們要解決的就是尋找這個決策邊界的最大值。這樣穿過去纔會更加安全(分類效果更加的好)
在這裏插入圖片描述

距離的計算

不管這個數據是幾維的,我們假設這個決策邊界爲wTw^Tx+b=0(數據是二維的話,邊界是一條直線,數據是三維的話,邊界是一個平面),下面是一個三維的邊界。
在這裏插入圖片描述
要求點x到邊界的距離 ,可以用xx‘ 在垂直方向的映射來求 。
假設x’是平面上的點 存在wTw^Tx‘+b =0 即wTw^Tx’=-b
因爲在wTw^Tx+b中,wTw^T是x垂直於平面的向量,也就是法向量,|W|是法向量長度
要求 b在a方向上的投影 可以用下面的公式
在這裏插入圖片描述
解釋一下下面公式的意思
根據上面公式可求解第一步
wTw^T(x-x’) 展開爲wTw^Tx-wTw^Tx’ 因爲wTw^Tx’=-b 所以wTw^T(x-x’) =|wTw^Tx+b|(因爲距離,所以要加上絕對值)
在這裏插入圖片描述
上面的距離便是我們進一步的目標函數 ,要使這個距離最大化

數據標籤定義

因爲要分類,所以所有數據集都有標籤,我們設當X爲正例的時候 Y= +1, 當X爲負例的時候Y= -1
決策方程爲下圖方程 暫且把決策方程看成y=wTw^Tx+b 圖中是對x做了變化的(涉及到核變化),最後面會做說明。
當y(xi) >0 ==> yi =+1
當y(xi) <0 ==> yi =-1
綜合起來 yi*y(xi) 恆大於0 這個性質等下會用到
在這裏插入圖片描述
在這裏插入圖片描述

優化目標

我們要清楚我們要求的是什麼,支持向量機就是圍繞這個東西來玩。

通俗解釋:找到一條直線(w和b)使得離該線最近的點最遠。

從上面求出的點到面的距離:
在這裏插入圖片描述
因爲|wTw^Tx+b|恆大於0 ,在前面數據標籤定義最後得到的式子也是恆大於0 所以可以化簡爲沒有絕對值的形式。可以化簡爲:
在這裏插入圖片描述

對於決策方程,我們可以通過放縮使得其結果值≥1
在這裏插入圖片描述

根據我們的通俗解釋 :找到一條直線(w和b)使得離該線最近的點最遠。

可以把上面的式子轉化爲:
在這裏插入圖片描述
min括號內是指尋找離這條線最近的點,外面max是找地雷,使地雷到決策邊界的距離越大越好。

然後因爲下面的式子恆大於1
在這裏插入圖片描述
所以min爲1,我們只需要求1/|w|的最大值
在這裏插入圖片描述
所以現在的目標函數爲:
在這裏插入圖片描述
我們可以把求極大值的問題轉化爲求極小值的問題:1/2w2w^2的最小值(1/2爲了後面方便求導運算)

不要忘了!我們這個式子是在下面條件的約束下才成立的。
在這裏插入圖片描述

拉格朗日乘子法

要求方程在約束條件下的極值問題,可以用拉格朗日乘子法。

如下圖,當要求f0(x)的極小值 ,但約束於一些條件時,這裏的約束條件可以是不等式約束和等式約束,下面f1(x)是不等式約束,而h1(x)是等式約束。
在這裏插入圖片描述
都可以將式子轉化爲下圖形式:
在這裏插入圖片描述
而我們的目標函數只有一個約束條件,所以可以把原始轉化爲:
在這裏插入圖片描述
我們可以根據拉格朗日裏面的KKT性質 ,爲了方便計算和後面進行核變化更容易
(這裏看到一篇介紹這個性質的 ,可以參考一下
https://blog.csdn.net/bit_666/article/details/79865225)
將式子轉化爲下面這個式子,先求這個式子的最小值再求最大值。

在這裏插入圖片描述
我們先求最小值,對於當前式子來說,什麼樣的w和什麼樣的b能讓式子最小,說到最小值,我們要求偏導,分別對w和b求偏導,得到:
在這裏插入圖片描述
將偏導後的結果代入,得到下面的式子,整個推導過程如下:
在這裏插入圖片描述
接下來對a求極大值,
在這裏插入圖片描述
可以將問題轉化爲求極小值問題,
在這裏插入圖片描述
別忘了,還有條件,第一個是我們偏導後求出來的,第二個是拉格朗日乘子法需要滿足的條件。
在這裏插入圖片描述
α怎麼求呢,α的求解是比較麻煩的,我們通過一個比較簡單的例子來求解

在這裏插入圖片描述
中間的實線是決策邊界 x1(3,3)和x2(4,3)是正例,每個點都有一個α,y=+1,x3(1,1)是負例,y=-1
在這裏插入圖片描述
在約束條件那裏,我們可以得到α1+α2=α3 ,將數據代入上面式子,得到
在這裏插入圖片描述
那要求極小值,怎麼求,還是求偏導,對α1和α2求偏導,得到α1=1.5,α2=-1,但是並不滿足第二個約束條件,所以解應該在邊界上,那麼應該是α1=0 或者是α2=0,代入得
在這裏插入圖片描述
接着把結果代入到之前求偏導得到的w式子裏,b也可以根據y-wx求得
在這裏插入圖片描述
這樣就可以求得平面方程爲0.5x1+0.5x2-2=0

現在我們要來講這個算法爲什麼叫做支持向量機了。
機指的是 決策邊界
這個邊界是由x1,x3這些對應的α非0的向量支持的,是是支持向量,真正發揮作用的數據點

軟間隔

有時候數據會有一些噪音點,我們可以加入鬆弛因子,也就是說放鬆一點,邊界不要那麼嚴格。

我們可以在決策方程體現這一點,
在這裏插入圖片描述
既然引入了新的條件,我們需要有新的目標函數
在這裏插入圖片描述
當C越大,參數越小,分類越嚴格
當C越小,參數可以很大,分類可以有錯誤容忍

C是我們調包的時候需要調的一個參數

同樣運用拉格朗日乘子法,可以得到下面的公式。相比於之前的式子,只是約束條件變了。

在這裏插入圖片描述

核變化

下面來講支持向量機最最核心的部分,核變化。通過核變化,可以將數據從低緯度映射到一個高緯度的空間,便於分類。下面右邊的圖是三維的,相比於左邊二維的圖, 是不是更容易分類了呢。
在這裏插入圖片描述
面試的時候會有人經常問,你核變化了之後,數據真的到一個高維的空間計算了嗎。
下面舉一個小例子,假設有兩個數據,x=(x1,x2,x3) y=(y1,y2,y3) 這兩個數據是三維的,但在三維空間已經沒有辦法對他進行分類的,我們可以通過一個函數將其變成更高維的空間,比如九維的話,f(x)=(x1x1,x1x2,x1x3,x2x1,x2x2,x2x3,x3x1,x3x2,x3x3),由於在前面的式子裏,數據之間需要求內積,所以在新的空間裏,需要花費O(n2n^2)。
具體點,x =(1,2,3) y=(4,5,6),f(x)=(1,2,3,2,4,6,3,6,9),
f(y)=(16,20,24,20,25,30,24,30,36)
<f(x),f(y)>=16 + 40 + 72 + 40 + 100 +180 + 72 + 180 +324 =1024
現在在九維的情況下,似乎還能計算,但當數據映射到更好維度的時候,計算量就很大很大了。
但是我們發現K<x,y>=(<x,y>)² =(4+10+18)²=1024
這和<f(x),f(y)>得到的結果是一樣的。但效率卻提高了,花費O(n)。
所以核函數的好處就是,可以在一個低維空間去完成高維空間樣本內積的計算,效率還很高。

所以之前x前面一個很奇怪的符號,我們可以稱爲核函數,所謂的核函數就是做了這樣的一個映射。
在這裏插入圖片描述
在這裏插入圖片描述

ganma是一個核函數帶的一個參數,隱含地決定了數據映射到新的特徵空間後的分佈,gamma越大,支持向量越少,gamma值越小,支持向量越多。支持向量的個數影響訓練與預測的速度。

現在來總結一下:

支持向量機是一種分類模型,它的目的是尋找一個超平面來對樣本進行分割,分割的原則是間隔最大化。由簡至繁的模型包括:

當訓練樣本線性可分時,通過硬間隔最大化,學習一個線性可分支持向量機;
當訓練樣本近似線性可分時,通過軟間隔最大化,學習一個線性支持向量機;
當訓練樣本線性不可分時,通過核技巧和軟間隔最大化,學習一個非線性支持向量機;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章