機器學習系列(15)_SVM碎碎念part3:如何找到最優分離超平面

作者:寒小陽
時間:2016年9月。
出處:http://blog.csdn.net/han_xiaoyang/article/details/52683653
聲明:版權所有,轉載請聯繫作者並註明出處

1.引言

是的,咱們第1篇blog介紹了目標;第2篇blog介紹了向量相關的背景數學知識,看到了如何求解Margin的值;今天這個部分主要目的是和大家一起來看看,選擇最優超平面的推理過程

以下是本篇的一個簡短目錄:

  • 如何找到最優超平面
  • 如何計算兩超平面間的距離
  • SVM的最優化問題是什麼

2.如何找到最優超平面

第2篇blog的結尾我們計算了點A 到超平面間的距離p ,然後計算間隔爲2p
有些情況下我們得到的超平面能夠很好地完成不同類別樣本點的分隔,但是卻不是最佳的超平面。比如以下這個超平面是第2篇blog中求解出來的超平面。


cmd-markdown-logo

然而第1篇blog的內容告訴我們,最優超平面是一個與數據點有最大間隔的平面。在上圖中我麼可以看到M1 間隔(仔細看,沒有過G點),在兩條藍線之間,它不是完美分類數據點的最大間隔。最大間隔爲M2 ,如下圖所示:


cmd-markdown-logo

可以在上圖中看到最優超平面,在我們找的最初的超平面的稍左位置,而它剛好是M_2的中點處的這條垂線。所以在SVM當中,超平面和間隔確實是密切相關的。

只要找到一個分隔超平面,我就能計算平行於這個超平面的間隔。得到間隔之後,就能通過它的中點找到另外一個超平面(比如上圖的中間藍色直線)。

  • 尋找最大間隔,就是尋找最優超平面

3.我們如何找到最大間隔

說起來這個過程還挺簡單的:

  • 讀取你的數據集。
  • 找到兩個平行超平面,可以劃分數據並且兩平面之間沒有數據點。
  • 最大化上述兩個超平面間隔

OK,按照上面的步驟,咱們一步步看吧。

步驟1:讀取想分類的數據集

大多數時候,你會遇到二分類問題(多分類問題可以轉化成二分類問題解決),數據將由n個向量xi 組成。
每一個xi 與一個值yi 相關聯,yi 代表元素屬於類(-1)或類(+1)。請注意,yi 只能有兩個可能的值 -1或1。
而且,大多數時候,比如當你做文本分類,向量xi 有很多維度,我們可以說,X是一個p維向量(如果總共p維)。所以你的數據集 是n個元素(xi,yi) 對組成的集合。
在集合論中的初始數據集的更正式的定義是:

={(xi,yi)xip,yi{1,1}}ni=1

步驟2:找到兩個平行超平面,可以劃分數據並且兩平面之間沒有數據點。

在平面上劃線來區分數據很容易。但很多情況下數據是高維的,劃分數據就變得困難,因爲你沒辦法把它畫出來。(對了,即使你的數據是二維的,也有可能找不到分離超平面!只有在數據線性可分時,這樣一條線才能找到。)


cmd-markdown-logo
線性可分 與 非線性可分

因此,假設我們的數據集 是線性可分的。怎麼找超平面呢?回到超平面方程:

我們在之前看到過超平面的方程可以寫做

wTx=0

不過細心的同學,會在維基百科中的SVM中看到下面的描述:

任何超平面都可以寫成 滿足wxb=0 的點x 的集合

首先,本文采用wx 代替wTx 。然後,關於b 的部分,是這樣的。

在我們的定義中,向量w與x有三個維度,但在維基百科中是二維的:
給出兩個三維向量w(b,a,1)x(1,x,y)

wx=b×(1)+(a)×x+1×ywx=yaxb(1)

給出兩個二維向量w(a,1)x(x,y)

wx=(a)×x+1×ywx=yax(2)

現在如果我們在方程(2)的兩邊減去b得到:

wxb=yaxbwxb=wx(3)

對於這篇文章的剩餘部分,我們將使用二維向量(如方程(2))。

給出一個超平面H0 劃分數據集並且滿足:

wxb=0

我們選擇其他兩個劃分數據集的超平面的H1H2 ,有如下的方程:

wxb=δ
wxb=δ

設定δδ 的原因是爲了讓H0H1H2 等距。

不過再仔細想想,你會發現wb 是可以縮放的,這裏的變量δ 其實是沒有必要的,爲了簡化(不引入那麼多未知數),我們通過一定的縮放,讓δ=1 來簡化問題。OK,所以我們有了一下形式的2個超平面:

wxb=1wxb=1

還有一個事情咱們得確認一下:它們之間沒有任何的數據點。我們只選擇那些符合以下兩個約束的超平面:
對於每一個向量xi
滿足

wxib1for xi1(4)
或者
wxib1for xi1(5)

咱們來試着理解一下上面的約束,在下面的圖中,所有的紅點都是1 類,所有的藍點都是1 類。

因此,讓我們看看下面的圖,並考慮點A ,它是紅的所以是1 類,我們需要驗證它不違反約束wxib1

xi=A 我們看到超平面上的點滿足wxib=1 ,同樣的B點也是。

xi=C 我們看到超平面上的點滿足wxib>1 ,同樣的D、E、F、G點也是。

類似的,對於1 類的點也滿足約束。


cmd-markdown-logo

在下圖,我們看到一對超平面滿足約束:


cmd-markdown-logo

比如下面是一些不滿足約束條件的情況情況:


cmd-markdown-logo
cmd-markdown-logo
cmd-markdown-logo

當不滿足約束時,很清楚能看到超平面之間有了數據點。

OK,所以到此爲止,我們找到了一個約束條件–從而能夠選擇兩個中間沒有數據點的超平面。當然,這裏舉得例子是二維平面的,而實際上對於更高維的空間也是成立的。

大家總是喜歡更精簡的表達形式,所以我們結合一下兩種約束

方程(4)(5) 可以合併成一個單一的約束,我們從方程(5) 開始

for xi1wxib1

兩邊同乘yi (在該約束中始終爲-1)
yi(wxib)yi(1)

這意味着方程式(5) 可以寫做:

yi(wxib)1for xi1(6)

在方程(4) 中,因爲y_i =1,它不改變不等號方向。

yi(wxib)1for xi1(7)

將方程式(6)(7) 寫在一起 :
yi(wxib)1for all1in(8)

OK,我們得到了一個很簡潔的約束條件(方程8),它和方程4,5在數學上是等價的,也能保證兩超平面間沒有數據點。

步驟3:兩個超平面之間的距離最大化

哈哈,大家稍微提起一點精神吧,這是本節內容中最難的部分。不過會盡量寫細一點,相信大家,應該沒啥問題的。

a)我們的兩個超平面之間的距離是什麼

OK,現在要做的事情是最大化兩個超平面之間的距離,那兩個超平面之間的距離怎麼計算呢?好,一步步來,我們先做一些標定:

  • 0 是滿足約束wxb=1 的超平面
  • 1 是滿足約束wxb=1 的超平面
  • x00 上的一點

對了,從x0 到超平面1 的垂直距離m就是我們所說的間隔。x0 在超平面0 上,所以m是超平面01 間的距離。

我們現在試着找出m的值。


cmd-markdown-logo

感覺上x0 如果和另一個超平面距離m的話,我們加上m應該會得到另一個超平面上的點。

不過m是一個標量,x0 是一個向量,在一個向量上加一個標量的運算是完成不了的。那我們將m變換成一個向量,我們將能夠做一個加法。

我們可以找到距離x0 爲m的所有的點,大家都知道,它是下圖這樣的一個圓:


cmd-markdown-logo

OK,結合這張圖,你就更清楚了,我們有長度m而缺少另外一個向量的關鍵信息:方向

OK,標量加向量是沒法算了,但大家都知道,向量乘以標量,會得到另外一個縮放後的向量。

OK,所以我們其實是想要找到這樣一個向量:

  • 長度爲m
  • 方向垂直於平面1

仔細看看超平面的形式,我們發行已經有一個垂直1 的向量,是w (因爲1wxb=1


cmd-markdown-logo

我們定義u=www 的單位向量,即u=1 ,且它和w 有相同的方向,垂直於平面1


cmd-markdown-logo

如果我們用u 乘以m ,得到向量k=mu ,讓k滿足:

  • k=m
  • k 垂直於1 ,因爲它與u 具有相同方向

k 就是我們正在尋找的向量。


cmd-markdown-logo

k=mu=mww(9)

對,就是通過這樣一個方式把m轉換成一個可以和向量x0 相加的向量k

如果我們在向量x0 上加上k ,可以得到向量z0=x0+k (終點在超平面1 上),如下圖所示


cmd-markdown-logo

z01 上意味着

wz0+b=1(10)

我們可以用x0+k 代替z0

w(x0+k)+b=1(11)

用方程式(9) 替代k

w(x0+mww)+b=1(12)

將式子展開可得

wx0+mwww+b=1(13)

向量與自己的內積是它的模的平方,所以:

wx0+mw2w+b=1wx0+mw+b=1wx0+b=1mw

因爲x00 上,所以wx0+b=1 ,帶入:

1=1mwmw=2m=2w

OK,贊,我們找到了一種計算m 的方法

b) 如何最大化兩個超平面之間的距離
我們現在有一個公式來計算間隔:

m=2w

在這個公式中,我們唯一可以改變的變量是w 的模。比如:
w=1 時,m=2
w=2 時,m=1
w=4 時,m=12

大家很容易發現,w 的模越大,間隔越小。

最大化間隔也就是最小化w 的模。

我們的目標是最大化間隔。在所有滿足約束條件超平面中,我們選擇有最小w 的超平面,因爲這意味着有最大間隔。

有了以下的優化問題

yi(wxib)1i=1,,nww,b

解決這個問題有點像求解方程。一旦解出來答案,我們會找到滿足約束條件,也使得w 最小的值對(w,b) 。對,你可以把它叫做最優超平面的方程!

4.結論

這篇博客做了一個小小的推導,最後得到的結論是:爲了找到最優超平面,咱們需要解決一個優化問題。優化問題有點棘手,可能又需要一些額外的數學知識來解決他們。感興趣的同學繼續follow[第4部分:]吧。

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