機器學習之SVM初解與淺析(一):最大距離

   這段時間在看周志華大佬的《機器學習》,在看書的過程當中,有時候會搜搜其餘人寫的文章,對比來說,周教授講的內容仍是比較深入的,可是前幾天看到SVM這一章的時候,感受甚是晦澀啊,第一感受就是比較抽象,特別是對於像本人這種IQ不怎麼高的,涉及到高維向量以後,對模型的理解就比較懵了,特別是對於那個幾何距離(或者說是最大間隔),一直是模棱兩可,似懂非懂的感受,本人也看了其餘人寫的SVM的文章,好多都沒用講清楚那個最大間隔模型 d = 1/||w|| 爲何分子是1而不是|f(x)|。苦思冥想以後,給了一個適合本身理解的解釋。html

   現有n維數據集Dx={x1, x2, x3, ... , xi, ... , xn},其中樣本xi的類別yi∈Y={+1,-1}即數據集爲D,且D= {d1, d2, ... ,di , ... ,dm }={(x1,y1), (x2,y2), (x3,y3),... , (xj,yj), (xm,ym)}。其樣本分佈以下圖所示:java

wKiom1mZb6mxfxBiAAAlAQLxB2Y085.jpg-wh_50

   嘗試用一條「直線」(超平面)將這兩類數據點(向量)進行分類,位於使得位於兩側的樣本屬於不一樣的類。顯然,這樣的直線或者說是超平面有不少,那麼應該怎麼選取呢,如何定義一個最好的分類超平面呢?機器學習

   對於最好的超平面,從直覺上最中間的那條粗黑線是最好的,由於它使兩類樣本點都離其最遠,便可以使得分類模型的魯棒性最好,不至於像其餘超平面模型,對於樣本的擾動(可理解爲「噪聲」)「容忍性」小。顯然對於該「直線」能夠用w、b參數進行表示,其中w=(w1, w2, w3, ... , wi,  wn).ide

超平面爲:函數

wx +b = 0
學習

其中x = (xi1; xi2 ;xi3 ; ... ; xij; xim);位列向量,也能夠寫成w^T X + b = 0,那麼w就是列向量,這裏方便公式編輯採用第一種表示,意義同樣。顯然w、b都是未知的參數,聯想到線性規劃並進行推廣,若樣本點(向量)xi知足wxi+ b > 0 ; 則xi屬於+1類,即yi = +1 ;若wxi+ b < 0 ; 則xi屬於-1類,即yi = -1;定義函數f(xi) = wxi + b ,又定義g(xi,yi)= g(di) = yi * (wxi + b) = yi * f(xi)  ,顯然,yi與f(xi)老是同號的,故g(xi,yi) > 0。優化

   言歸正傳,爲何要定義函數f和g呢,由於咱們得經過這兩個函數來求得權向量w和閾值b,以肯定分類最好的超平面,那麼問題又來了,「最優」超平面需知足什麼條件呢,或者說,在知足什麼條件下,這個超平面「最優」?這就轉化爲了一個優化問題。剛纔討論的時候,咱們已經假設了該超平面L:.net

wx + b = 0 ;那麼對於給定的數據集D= {d1, d2, ... ,di , ... ,dn }={(x1,y1), (x2,y2), (x3,y3),... , (xi,yi), (xn,yn)};確定存在至少一個正樣本點 di = (xi, +1),至少一個負樣本dj = (xj, -1),他,對於它們各自而言,在正樣本中,di是「距離」L最近的樣本點(向量),設最近距離爲li同理,在負樣本中,dj是「距離」L最近的樣本點,設最近距離爲lj聯想二維空間中點到直線的距離公式,同時對此進行一個推廣,定義一個距離γ = li + lj = (|wxi + b| + |wxj + b| ) / ||w|| ,顯然,只有當γ最大時,L纔是咱們想要的超平面。即:htm

                                                            max γ  
blog

那麼問題又來了,單就上述γ定義的形式而言,彷佛不怎麼好求解最大值,這以上是我本身定義的,在周

的《機器學習》中,直接令:

                                                                            wxi+ b ≥ 1 (yi = +1)

                       {

                                                                            wxi+ b ≤ -1 (yi = -1)

而後,定義距離d = 2/||w||,本人疑惑就來了,爲什麼直接令wxi+ b ≥ 1 (yi = +1) 和   wxi+ b ≤ -1 (yi = -1),就幾何意義,這兩個面與超平面wxi+ b = 0「平行」且「距離」都爲1,就這麼「霸氣」地令,實在是令我百思不得其解,因而,開始參閱一些其餘人寫的博客,有不少人都不理解這個2是如何來的,我也沒有找到讓本身很容易理解的文章,卻是找到了一篇不錯的講SVM的博文(http://www.blogjava.net/zhenandaci/archive/2009/02/13/254519.html),可是也沒有講清楚距離那個d = 2/||w||,只好本身苦想。

   我發現,能夠這麼來解釋,上文中提到的li和lj,對於給定的樣本集,其到超平面的距離di和dj確定是

定的,即di = wxi +b中,雖然w和b是未知參數,可是di肯定,同理dj = wxj + b中,dj肯定,不妨設

                                                            DiLj = di + dj

則 DiLj亦是肯定的,因而乎:

                                                            γ = DiLj / ||w||

對於 max γ <=> max (1 / ||w||),這就至關於分別將di =  |wxi + b| / ||w|| ,dj =  |wxj + b| / ||w|| 進行歸一化得di' = 1 / ||w|| , dj' = 1 / ||w|| ,因而乎:

                                                            max 2 / ||w||

         s.t. g(di) = g((xi,yi)) ≥ 1  (i = 1, 2, 3, ... , m) ;

其中||w||爲範數,通常而言,是指向量長度,w = √w1^2 + w2^2 + ... + wn^2 則上述模型等價於:

                                                            min 1/2 * ||w||^2

         s.t. g(di) = g((xi,yi)) ≥ 1  (i = 1, 2, 3, ... , m) ;

就好理解了。

   位於 wx + b = ±1 上的樣本點(向量)稱爲"支持向量",彷佛跟該模型更多的利用了「支持向量」???,本身也不是很肯定(待續)。

相關文章
相關標籤/搜索