1. 程式人生 > >機器學習中的超平面理解(SVM開篇之超平面詳解)

機器學習中的超平面理解(SVM開篇之超平面詳解)

目錄

一、什麼是超平面

二、點到超平面的距離

 三、 判斷超平面的正反


一、什麼是超平面

以上是三維為例子。 

通過查閱資料對超平面有了一定的認識, n 維空間中的超平面由下面的方程確定:

\large w ^ { T } x + b = 0

 其中,w 和 x 都是 n 維列向量,x 為平面上的點,w 為平面上的法向量,決定了超平面的方向,b 是一個實數,代表超平面到原點的距離。

\large \begin{array} { l } { x = \left( x _ { 1 } , x _ { 2 } , \ldots , x _ { d } \right) ^ { T } } \\ { w = \left( w _ { 1 } , w _ { 2 } , \dots , w _ { d } \right) ^ { T } } \end{array}

 

 那麼,w 為什麼是法向量呢?b 為什麼表示平面到原點的距離呢?下面給出詳細解釋: 我們對“平面”概念的理解,一般是定義在三維空間中的,即

\large A x + B y + C z + D = 0

這個平面由兩個性質定義:1、方程是線性的,是由空間點的各分量的線性組合。2、方程數量是1。這個平面是建立在“三維”上的。如果我們撇開“維度”這個限制,那麼就有了超平面的定義。

實際上,超平面是純粹的數學概念,不是物理概念,它是平面中的直線、空間中的平面的推廣,只有當維度大於3,才稱為“超”平面。它的本質是自由度比空間維度小1。自由度的概念可以簡單的理解為至少要給定多少個分量的值才能確定一個點. 例如, 三維空間裡的(超)平面只要給定了(x,y,z)中任意兩個分量, 剩下的一個的值就確定了. 先確定值的兩個分量是自由的, 因為它們想取什麼值就能取什麼值;剩下的那個是"不自由的", 因為它的值已經由另外兩確定了. 二維空間裡的超平面為一條直線. 一維空間裡超平面為數軸上的一個點。

在《 統計學習方法》一書給出如下說明:

其中,w與x都是D維列向量,x=(x1,x2,…,xD)T為平面上的點, w=(w1,w2,…,wD)T為平面的法向量。b是一個實數,,代表平面與原點之間的距離。 

所以顯而易見: 
二維平面就是\small \bg_green \LARGE \left \( W_{1}, W_{2} \right \)\left ( X_{1}, X_{2}\right )^{T}+b=0   即 \large W_{1}X_{1}+W_{2}X_{2}+b=0(直線方程) 

二、點到超平面的距離

 樣本空間中的任意一點 x,到超平面(w,b)的距離,可以表示為

\large \frac { \left| w ^ { T } x + b \right| } { \| w \| }

點到超平面上的點為什麼這麼計算呢?我在這裡再具體說一下。推導過程並不繁瑣(這裡以三維空間為例)。

點到平面的距離公式(可以作為類比):

\large d = \frac { \left| A x _ { 0 } + B y _ { 0 } + C z _ { 0 } + D \right| } { \sqrt { A ^ { 2 } + B ^ { 2 } + C ^ { 2 } } }

 上面利用了向量內積的等價替換,例如下面2個向量做內積。

\large \vec { a } \cdot \vec { b } = \left\{ a _ { 1 } b _ { 1 } + a _ { 2 } b _ { 2 } + a _ { 3 } b _ { 3 } + \ldots + a _ { n } b _ { n } \right\} = | \vec { a } | | \vec { b } | \cos \theta

 三、 判斷超平面的正反

 一個超平面可以將它所在的空間分為兩半, 它的法向量指向的那一半對應的一面是它的正面, 另一面則是它的反面。如果利用數學來判斷的話,需要利用到法向量 w。

 若將距離公式中分子的絕對值去掉, 讓它可以為正為負. 那麼, 它的值正得越大, 代表點在平面的正向且與平面的距離越遠. 反之, 它的值負得越大, 代表點在平面的反向且與平面的距離越遠。