關於SVM類別選擇的一點思考

學習SVM時,關於類別選擇問題陷入了一個誤區,如今把這個過程記錄下來,但願有一樣疑問的童鞋也能注意一下。算法

圖1 二分類問題

如圖1所示,直線方程爲x+y-4=0,設直線上方的"o"爲正例,直線下方的"+"爲負例。當樣本點被超平面正確分類時,知足yi(w*xi +b) > 0條件,可是這個前提是假設**直線上方的點爲正例,下方的點爲負例。學習

如今換一種打標籤的方式,如今我設直線下方的點爲正例,上方的點爲負例,顯然yi(w*xi +b) < 0(好比說取直線下方的點(0,0),代入直線方程得w*xi+b=0+0-4<0,而此時yi=+1,因此yi(wxi +b) < 0),也就是說,即便我把數據點正確分類了,可是此時知足的是yi(wxi +b) < 0而不是yi(w*xi +b) > 0。那豈不是說明,若是我這樣打標籤的話,SVM理論就不成立了?優化

答案固然不是,但看似這樣想也沒錯,問題究竟出在哪呢?spa

這是由於咱們先入爲主了,想像一下,若是讓你本身解決這個分類問題,你怎麼解決?如今已知的是數據點和它對應的標籤,但你並不知道這條直線方程,好,如今咱們的目標固然是求這個直線方程。rem

(1)假設直線上方數據點是正例,下方的是負例,根據SVM算法,咱們求出直線方程是x+y-4=0,此時數據點被正確分類,知足yi(w*xi +b) > 0。it

(2)再假設直線上方數據點是負例,下方的是正例,根據SVM算法,咱們求出直線方程是-x-y+4=0,注意,如今的直線方程雖然與x+y-4=0是同樣的,但卻反映了不一樣的問題,此時數據點被正確分類,知足yi(w*xi +b) > 0。(讀者能夠把正例點(0,0)代入驗證一下。)class

最後再舉一個簡單的例子來闡述一下這個問題:學習方法

引用李航老師《統計學習方法》中的例7.1:已知一個如圖1所示的訓練數據集,其正例點是x1=(3,3)',x2=(4,3)',負例點是x3=(1,1)',('表示轉置)試求最大間隔分離超平面。引用

解:方法

根據訓練數據集構造約束優化問題:

圖2 優化問題

解得:w1=w2=0.5,b=-2,因此最大間隔分離超平面爲:0.5x1+0.5x2-2=0。數據點被正確分類。

如今把題目改動一下,設x1,x2爲負例點,x3爲正例點,則優化問題變成:

圖3 優化問題

解得:w1=w2=-0.5,b=2,因此最大間隔分離超平面爲:-0.5x1-0.5x2+2=0。數據點被正確分類。

也就是說,對於二分類問題,無論選哪一類爲正例,哪一類爲負例,都不影響分類的正確性,分離超平面也是同樣的。不一樣的是,一個超平面爲w*x+b=0,另外一個超平面爲-w*x-b=0,雖然表示的都是同一個超平面,但本質是不一樣的。這個差異保證了超平面一側的點代入w*x+b後的符號與相應的標籤y是一致的。

相關文章
相關標籤/搜索