支持向量機中的函數距離和幾何距離怎麼理解?


SVM是通過超平面將樣本分為兩類。

在超平面wcdot x+b=0確定的情況下,|wcdot x+b|可以相對地表示點x距離超平面的遠近。對於兩類分類問題,如果wcdot x+b>0,則x

的類別被判定為1;否則判定為-1。

所以如果y(wcdot x+b)>0,則認為x的分類結果是正確的,否則是錯誤的。且y(wcdot x+b)的值越大,分類結果的確信度越大。反之亦然。

所以樣本點(x_{i}, y_{i})與超平面(w, b)之間的函數間隔定義為

gamma_{i} = y_{i} (wcdot x_{i} + b)

但是該定義存在問題:即wb同時縮小或放大M倍後,超平面並沒有變化,但是函數間隔卻變化了。所以,需要將w的大小固定,如||w||=1,使得函數間隔固定。這時的間隔也就是幾何間隔 。

幾何間隔的定義如下

gamma_{i} = y_{i} (frac{w}{||w||}cdot x_{i} + frac{b}{||w||})

實際上,幾何間隔就是點到超平面的距離。想像下中學學習的點(x_i, y_i)到直線ax+by+c=0的距離公式

d(x_i, y_i) = frac{|ax_i+by_i+c|}{sqrt{a^2+b^2}}

所以在二維空間中,幾何間隔就是點到直線的距離。在三維及以上空間中,就是點到超平面的距離。而函數距離,就是上述距離公式中的分子,即未歸一化的距離。

定義訓練集到超平面的最小几何間隔是

gamma = min_{i=1,...,n} gamma_{i}

SVM訓練分類器的方法是尋找到超平面,使正負樣本在超平面的兩側,且樣本到超平面的幾何間隔最大。

所以SVM可以表述為求解下列優化問題

underset{w, b}{max} ;;;;;; gamma

s.t. ;;; y_{i} (frac{w}{||w||}cdot x_{i} + frac{b}{||w||})geq gamma

以上內容在《統計學習方法》中,均有詳細的講解。

看到LZ在某評論中說《統計學習方法》詳細的看不下去,多說一句。我個人認為這本書是非常容易上手的教材了,很多內容講解的清晰又不啰嗦,至少比看很多英文原版輕鬆很多。而網路上很多博客的講解,又過於散亂。想要深入的學習,還是得看書。


函數間隔決定了數據點被分為某一類的確信度,而幾何間隔實際上就是點到(超)平面的距離。兩者是一個||w||的線性關係。那些支持向量就是函數間隔(也可以說是幾何間隔,因為作了歸一化限制)的臨界點。有了支持向量,就可以對未知點進行預測。詳細可參考李航《統計學習方法》。


個人對函數間隔與幾何間隔這樣理解。

對同一個超平面,通過比例縮放w和b,函數間隔也會同比例變化。也就是說,對於一個成功劃分正負實例的超平面(不一定最優),該平面固定,但是通過縮放w和b,可以使其function margin取任何正值。而我們的目標是找到具有最大margin的超平面。顯然通過最大化函數間隔沒有意義,因為任何成功劃分訓練實例的超平面都可以使函數間隔無限大。我們注意到,對一個超平面,函數間隔與∥w∥的比值保持不變,也就是說幾何間隔與超平面關聯。所以,我們目標是最大化幾何間隔,而且我們可以令函數間隔為1,然後最小化∥w∥達到最大化幾何間隔目的。


支持向量機通俗導論(理解SVM的三層境界) 看這裡分析對你是否有幫助,我也剛看機器學習方面的, 還有沒什麼分辨力。

幾何距離計算方法就是點到直線或平面距離的公式。


推薦李航的《統計學習方法》SVM章節,講得很清晰了。


假設我們的超平面可以用下面的公式表示

w^Tcdot x+b =0

那麼對於這個平面上任意兩個點 x^{i}x^{j} ,可以得到

w^Tcdot x^{i}=-b 1)

w^Tcdot x^{j}=-b 2)

把上面兩個點做差,可以得到

w^Tcdot (x^{j}-x^{j}) =0

x^{j}-x^{j} 這兩個點的差還是在這個平面上,所以可以得到w 是這個超平面的一個法向量,垂直於這個超平面。

對於空間中任意一個不屬於這個超平面的點 x^{1} ,它到這個超平面的距離要怎麼得到呢?

我們可以連接點 x^1 和點 x^{i} ,得到 x^{1}-x^{i} ,把它與超平面的法向量 w 做向量乘法,然後再除以法向量的長度,可以得到

frac{w^{T} cdot (x^{1} - x^{i})}{lVert w 
Vert}

上式帶入1)可以得到下式

frac{w^{T} cdot x^{1}+b}{lVert w 
Vert}

這裡我們沒有考慮到式子的正負,因為距離都是正的,所以結合向量機本身的假設把 y_{1} 乘上去,是的上面式子永遠非負,

我們就得到超平面關於特徵空間中某點 x^{1}幾何間隔了:

y^{1}*frac{w^{T} cdot x^{1}+b}{lVert w 
Vert} 3)

而幾何距離在一個數據集上的定義是超平面跟數據集中所有點的間隔中最小的那個間隔。

那什麼是函數間隔呢,其實就是式子3)少一個 lVert w 
Vert 而已。我認為函數間隔不是嚴格意義上的點到平面的距離,因為它沒有除掉法向量的長度,如果我們現在改變w和b,函數間隔就會跟著改變的,而幾何間隔不會。但另一方面,如果我們把 lVert w 
Vert 定為1,函數間隔和幾何間隔其實就是一回事兒了。

我覺得,理解幾何間隔是怎麼推得的比較重要,函數間隔根據定義知道一下就好了。


很多人都回答了這個問題,從我以前自己學的情況來看,還是要看書,首先,中學數學知識要紮實,微積分、概率論等都要掌握,之後看李航博士的《統計學習方法》會發現比較容易看懂。


我覺得間隔大不大,是相對的,因為增大與減小都是等比例的,最大的仍然是最大的,考了70分及格雖然很不值錢,如果別人都低於70分,還是第一嘛,哈哈!


Functional margin will scale up or down wrt w, geometric margin won"t. Thus by enlarging w, the functional margin will become as large as you want, which lets cost make no sence.


可惜搞SEO的要麼完全不懂這個,要麼就是完全相信這個,可惜這麼好的話題了。


推薦閱讀:

支持向量機(SVM)是否適合大規模數據?
為什麼支持向量機要用拉格朗日對偶演算法來解最大化間隔問題?
多標籤(multi-label)數據的學習問題,常用的分類器或者分類策略有哪些?
拉格朗日乘子法漏解的情況?

TAG:數據挖掘 | 機器學習 | SVM |