本文主要是介绍谁都能学会的SVM(支持向量机)分类器(一)超平面篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
谁都能学会的SVM(支持向量机)分类器(一)超平面篇
机器学习领域问题实现模式一般为特征+分类器,SVM分类器在机器学习分类器领域地位举足轻重。
SVM擅长解决什么类型的问题呢?
1.小样本
2.非线性(松弛变量、核函数为SVM精髓)
3.高维模式识别(例如文本分类)
从感知机开始,引入超平面的概念
n 维空间中的超平面由下面的方程确定:
w T x + b = 0 w^Tx+b=0 wTx+b=0其中,w和x都是n维列向量,x 为平面上的点,w 为平面上的法向量,决定了超平面的方向,b 是一个实数,能决定超平面到原点的距离。
x = ( x 1 , x 2 , x 3 , ⋅ ⋅ ⋅ , x n ) T x={(x_1,x_2,x_3,\cdot\cdot\cdot,x_n)}^T x=(x1,x2,x3,⋅⋅⋅,xn)T w = ( w 1 , w 2 , w 3 , ⋅ ⋅ ⋅ , w n ) T w={(w_1,w_2,w_3,\cdot\cdot\cdot,w_n)}^T w=(w1,w2,w3,⋅⋅⋅,wn)T
- w为什么是法向量?
- b为什么能决定超平面到原点的距离?
- 关于超平面是否会经过原点的问题
在查超平面的定义时,其百度百科词条写道:因为是子空间,所以超平面一定经过原点,很多博客根据这个定义默认了此概念,并没有过多的解释,在介绍支持向量机超平面时,加上超平面一定经过原点。虽然过不过原点对后面的SVM的学习没有过多影响,还是要弄清楚这一点。如果超平面一定过原点,那b代表的超平面与原点间的位移,不就恒为0了吗?
为了帮助理解,首先做一个概念区分(线性子空间&仿射子空间):
-
线性子空间: 如果 W W W是线性空间 V V V的一个非空子集,记作 W ≤ V W≤V W≤V则
- W W W必须包含0向量,因为0肯定属于 V V V
- 如果向量 x x x属于 W W W空间,则向量 C ∗ x C*x C∗x也必须属于 W W W空间(乘法封闭性)
- 如果两个向量 A A A和 B B B属于 W W W空间,则向量 A + B A+B A+B也属于 W W W空间(加法封闭性)
-
仿射子空间: V V V的一个非空子集 Y Y Y为 V V V的仿射子空间,如果存在一个 V V V的线性子空间 W ≤ V W≤V W≤V和向量 a 0 ∈ V a_0∈V a0∈V,那么 Y = a 0 + W = { a 0 + β ∣ β ∈ W } Y=a_0+W=\{a_0+\beta\vert\beta\in W\} Y=a0+W={a0+β∣β∈W}由此可以得出结论:仿射子空间是对应线性子空间的平移,而支持向量机所说的超平面泛指仿射子空间,该超平面并不一定经过原点。百度百科默认子空间代表线性子空间,因此它所构成的超平面一定经过原点。超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0式中,b为位移项,决定了超平面到原点的距离。
说了这么多只解释清楚了是否过原点的问题,所以 w w w为什么是法向量?
降维说明一下该问题,建立方程: a x + b y + c = 0 ax+by+c=0 ax+by+c=0 y = − a x − c b y=\frac{-ax-c}b y=b−ax−c其包含的点集Q为:
令 x = t 令x=t 令x=t ( t , − a t − c b ) = t ( 1 , − a b ) − ( 0 , c b ) (t,\frac{-at-c}b)=t(1,-\frac ab)-(0,\frac cb) (t,b−at−c)=t(1,−ba)−(0,bc)该函式是经过点(0, c b \frac cb bc),方向为(1,- a b \frac ab ba)的直线
令 n = ( a , b ) 令n=(a,b) 令n=(a,b),则 n ∗ ( t , − a t − c b ) + c = 0 n*(t,\frac{-at-c}b)+c=0 n∗(t,b−at−c)+c=0
在Q点集上任取一点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0), c = − n ∗ ( x 0 , y 0 ) c=-n*(x_0,y_0) c=−n∗(x0,y0)
则 n ∗ ( t , − a t − c b ) − n ∗ ( x 0 , y 0 ) = 0 ⇔ n ∗ ( ( t , − a t − c b ) − ( x 0 , y 0 ) ) = 0 n*(t,\frac{-at-c}b)-n*(x_0,y_0)=0\Leftrightarrow n*((t,\frac{-at-c}b)-(x_0,y_0))=0 n∗(t,b−at−c)−n∗(x0,y0)=0⇔n∗((t,b−at−c)−(x0,y0))=0
由于 ( t , − a t − c b ) 和 ( x 0 , y 0 ) (t,\frac{-at-c}b)和(x_0,y_0) (t,b−at−c)和(x0,y0)都为点集 Q Q Q上的一点,所以证明了 n ⊥ L n\perp L n⊥L
同理将该方法推向多维依然适用,说了这么多终于可以证明 w w w为什么是超平面的法向量
点到直线的距离
针对超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0,由点到直线的距离可以推出,任意点到超平面的距离 d d d:
d = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ d=\frac{\vert w^Tx+b\vert}{\vert\vert w\vert\vert} d=∣∣w∣∣∣wTx+b∣
这篇关于谁都能学会的SVM(支持向量机)分类器(一)超平面篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!