引言
前序學習進程中,對向量相關的基本知識進行了學習,鏈接為:
向量的值和方向
向量點積
在實際的支持向量機算法使用中,最核心的目標是找出可以實現分類的超平面,超平面就是分割的點、線或者面,不要在這個名字上花費太多力氣。
在中學數學里,我們知道含有兩個未知數的二元一次方程y=kx+b可以表達直線,含有三個未知數的三元一次方程Ax+By+Cz=0可以表達面。
稍微換一個思路,兩個未知數按照線性關系組合,它們應當位于一條直線上;三個未知數則可以把這條直線旋轉360度,線動成面,三元一次方程可以表達面。
對于數據的分割,也可以細分討論:
- 當所有點都沿著一條線分布,在這條線上取一個中間點就可以把點分割成兩部分;
當所有點在xoy坐標平面上分布,需要畫一條直線才能將所有點分割成兩部分;
當做有點在0xyz坐標系上分布,需要畫一個平面才能將所有點分割成兩部分。
超平面方程定義
從大家都很熟悉的直線定義介入:y=kx+b。
- 第一步,將其改寫為:x2=kx1+b
- 第二步,移項為kx1-x2+b=0
- 第三步,定義變量向量X=(x1,x2),權重向量W=(w1,w2)=(k,-1),把原式轉化為:
W?X+b=0W\cdot X+b=0 W?X+b=0
至此,直線的表達換成了向量點積,并且向量W和X可以是任意維度。換句話說,支持向量機實現分割的超平面,就是用向量點積表達的點、線或者面。本質上,超平面是個點集。
增強向量
在前序討論中,大家已經看到通過矩陣點積可以表達分割超平面,但這個公式不夠簡潔,還需要把b單獨列出,基于此,我們想辦法構造新的向量,使得超平面的表達是一個單純的矩陣點積。
這種人為增加一個向量元素的新向量,就是增強向量。
對于變量向量X,增加一個變量x0=1,此時得到:
Xˉ=(x0,x1,x2)=(1,x1,x2)\bar{X}=(x0,x1,x2)=(1,x1,x2)Xˉ=(x0,x1,x2)=(1,x1,x2)
對于權重向量W,增加一個變量w0=b,此時得到:
Wˉ=(w0,w1,w2)=(b,k,?1)\bar{W}=(w0,w1,w2)=(b,k,-1)Wˉ=(w0,w1,w2)=(b,k,?1)
此時超平面的向量表達式轉化為:
Wˉ?Xˉ=0\bar{W} \cdot \bar{X}=0 Wˉ?Xˉ=0
總結
學習了超平面用向量點積表示的基礎知識。