作者:寒小陽
時間:2016年9月。
出處:http://blog.csdn.net/han_xiaoyang/article/details/52683653
聲明:版權所有,轉載請聯繫作者並註明出處
1.引言
是的,咱們第1篇blog介紹了目標;第2篇blog介紹了向量相關的背景數學知識,看到了如何求解Margin的值;今天這個部分主要目的是和大家一起來看看,選擇最優超平面的推理過程。
以下是本篇的一個簡短目錄:
- 如何找到最優超平面
- 如何計算兩超平面間的距離
- SVM的最優化問題是什麼
2.如何找到最優超平面
在第2篇blog的結尾我們計算了點
有些情況下我們得到的超平面能夠很好地完成不同類別樣本點的分隔,但是卻不是最佳的超平面。比如以下這個超平面是第2篇blog中求解出來的超平面。
然而第1篇blog的內容告訴我們,最優超平面是一個與數據點有最大間隔的平面。在上圖中我麼可以看到
可以在上圖中看到最優超平面,在我們找的最初的超平面的稍左位置,而它剛好是M_2的中點處的這條垂線。所以在SVM當中,超平面和間隔確實是密切相關的。
只要找到一個分隔超平面,我就能計算平行於這個超平面的間隔。得到間隔之後,就能通過它的中點找到另外一個超平面(比如上圖的中間藍色直線)。
- 尋找最大間隔,就是尋找最優超平面
3.我們如何找到最大間隔
說起來這個過程還挺簡單的:
- 讀取你的數據集。
- 找到兩個平行超平面,可以劃分數據並且兩平面之間沒有數據點。
- 最大化上述兩個超平面間隔
OK,按照上面的步驟,咱們一步步看吧。
步驟1:讀取想分類的數據集
大多數時候,你會遇到二分類問題(多分類問題可以轉化成二分類問題解決),數據將由n個向量
每一個
而且,大多數時候,比如當你做文本分類,向量
在集合論中的初始數據集的更正式的定義是:
步驟2:找到兩個平行超平面,可以劃分數據並且兩平面之間沒有數據點。
在平面上劃線來區分數據很容易。但很多情況下數據是高維的,劃分數據就變得困難,因爲你沒辦法把它畫出來。(對了,即使你的數據是二維的,也有可能找不到分離超平面!只有在數據線性可分時,這樣一條線才能找到。)
線性可分 與 非線性可分
因此,假設我們的數據集
我們在之前看到過超平面的方程可以寫做
不過細心的同學,會在維基百科中的SVM中看到下面的描述:
任何超平面都可以寫成 滿足
w⋅x−b=0 的點x 的集合
首先,本文采用
在我們的定義中,向量w與x有三個維度,但在維基百科中是二維的:
給出兩個三維向量
給出兩個二維向量
現在如果我們在方程(2)的兩邊減去b得到:
對於這篇文章的剩餘部分,我們將使用二維向量(如方程(2))。
給出一個超平面
我們選擇其他兩個劃分數據集的超平面的
設定
不過再仔細想想,你會發現
還有一個事情咱們得確認一下:它們之間沒有任何的數據點。我們只選擇那些符合以下兩個約束的超平面:
對於每一個向量
滿足
咱們來試着理解一下上面的約束,在下面的圖中,所有的紅點都是
因此,讓我們看看下面的圖,並考慮點
當
當
類似的,對於
在下圖,我們看到一對超平面滿足約束:
比如下面是一些不滿足約束條件的情況情況:
當不滿足約束時,很清楚能看到超平面之間有了數據點。
OK,所以到此爲止,我們找到了一個約束條件–從而能夠選擇兩個中間沒有數據點的超平面。當然,這裏舉得例子是二維平面的,而實際上對於更高維的空間也是成立的。
大家總是喜歡更精簡的表達形式,所以我們結合一下兩種約束。
方程
兩邊同乘
這意味着方程式
在方程
將方程式
OK,我們得到了一個很簡潔的約束條件(方程8),它和方程4,5在數學上是等價的,也能保證兩超平面間沒有數據點。
步驟3:兩個超平面之間的距離最大化
哈哈,大家稍微提起一點精神吧,這是本節內容中最難的部分。不過會盡量寫細一點,相信大家,應該沒啥問題的。
a)我們的兩個超平面之間的距離是什麼
OK,現在要做的事情是最大化兩個超平面之間的距離,那兩個超平面之間的距離怎麼計算呢?好,一步步來,我們先做一些標定:
0 是滿足約束w⋅x−b=−1 的超平面1 是滿足約束w⋅x−b=1 的超平面x0 是0 上的一點
對了,從
我們現在試着找出m的值。
感覺上
不過m是一個標量,
我們可以找到距離
OK,結合這張圖,你就更清楚了,我們有長度m而缺少另外一個向量的關鍵信息:方向。
OK,標量加向量是沒法算了,但大家都知道,向量乘以標量,會得到另外一個縮放後的向量。
OK,所以我們其實是想要找到這樣一個向量:
- 長度爲m
- 方向垂直於平面
1
仔細看看超平面的形式,我們發行已經有一個垂直
我們定義
如果我們用
∥k∥=m k 垂直於1 ,因爲它與u 具有相同方向
那
對,就是通過這樣一個方式把m轉換成一個可以和向量
如果我們在向量
我們可以用
用方程式
將式子展開可得
向量與自己的內積是它的模的平方,所以:
因爲
OK,贊,我們找到了一種計算
b) 如何最大化兩個超平面之間的距離
我們現在有一個公式來計算間隔:
在這個公式中,我們唯一可以改變的變量是
當
當
當
大家很容易發現,
最大化間隔也就是最小化
我們的目標是最大化間隔。在所有滿足約束條件超平面中,我們選擇有最小
有了以下的優化問題:
解決這個問題有點像求解方程。一旦解出來答案,我們會找到滿足約束條件,也使得
4.結論
這篇博客做了一個小小的推導,最後得到的結論是:爲了找到最優超平面,咱們需要解決一個優化問題。優化問題有點棘手,可能又需要一些額外的數學知識來解決他們。感興趣的同學繼續follow[第4部分:]吧。