支持向量机(SVM)算法(一)

本文介绍了支持向量机(SVM)的基本概念,通过一个天使与魔鬼的游戏故事生动展示了SVM寻找最佳分隔超平面的过程。SVM的目标是最大化间隔,使支持向量远离超平面,从而提高分类的泛化能力。文章还探讨了超平面的数学定义、点到超平面距离的计算以及相关数学概念,为理解SVM算法奠定了基础。

序言:

       有人说, 支持向量机是整个机器学习中最复杂的算法;

       还有人说,如果支持向量机没学好,机器学习就白学了。

       从今天开始,我将开始该算法的学习,看看需要花多久才能掌握它。

童话故事:

关于SVM,流传着一个关于天使与魔鬼的故事。

传说魔鬼和天使玩了一个游戏,魔鬼在桌上放了两种颜色的球,如图3.1所示。魔鬼让天使用一根木棍将它们分开。这对天使来说,似乎太容易了。天使毫不犹豫的找根棍子一摆,便完成了任务,如图3.2所示。魔鬼又加入了更多的球。随着球的增多,似乎有的球不能再被原来的木棍正确分开,如图3.3所示。

SVM实际上是在为天使找到木棒的最佳放置位置,使得两边的球都离分隔它们的木棒足够远,如图3.4所示。依照SVM为天使选择的木棒位置,魔鬼即使按刚才的方式继续加入新球,木棒也能很好地将两类不同的球分开,如图3.5所示。

看到天使已经很好地解决了用木棒线性分球的问题,魔鬼又给了天使一个新的挑战,如图3.6所示。按照这种球的摆法,世界上貌似没有一根木棒可以将它们完美分开。但天使毕竟有圣力,他一拍桌子,便让这些球飞到了空中,然后凭借圣力抓起一张纸片,插在了两类球的中间,如图3.7所示。从魔鬼的视角看这些球,像是被一条曲线完美的切开了,如图3.8所示。

后来,数据科学家们把这些球称为“数据”,把木棍称为“分隔面”,找到最大间隔的木棒位置的过程称为“优化”,拍桌子让球飞到空中的圣力叫“核映射”,在空中分隔球的纸片称为“分隔超平面”。这便是SVM的童话故事。

SVM概论:

在高维的特征空间中,用于切割分类的平面被称为“分隔超平面”,如果是在2维的空间中,分隔超平面退化成一条线。因此,就会引出一个推论:样本点在二维特征空间中,分隔超平面是一维的(退化成直线);在三维的特征空间中时分隔平面变成两维;如果是维度为n的更高维特征空间,分隔超平面将会是n-1维。有时候,分隔超平面也被叫做决策边界。

在分隔超平面的两侧,数据被分隔两方,这种场景就像被银河相隔的牛郎与织女。 分隔在两侧的数据分属两个分类,所以截止目前可以认为SVM是一个二分类算法。

看一下下图A框,如果我们要找一条决策边界来区分两类数据,会有B、C、D三种分法,哪种才是合适的呢?

从三个分类图中可以直观看出,D图的直线是最好的,因为它对未知样本数据进行正确分类的适应性更好。在机器学习中,我们称之为泛化性能更好。但我们如何找分隔超平面呢?

事实上,我们希望找出那些离分隔超平面距离最近的样本点,并确保它们离超平面的距离最远。这里的距离被称为“间隔(margin)”。请注意,这里把这些距离称之为“间隔”其实不太准确,实际上,这里的距离只是真正的SVM中的间隔的一半,后面还会继续说到真正的间隔。

间隔的最大化能确保我们的分类器有最佳的泛化性能,如D图中所画的决策边界那样。而那些距离分隔超平面最近的样本点,我们称之为“支持向量(support vector)”。为什么称之为“向量”呢?是因为这些点在高维空间中,是由高维数据组成。

我们的目标要最大化支持向量到决策边界的距离,因此需要寻找这个问题的求解方法。

数学定义与公式:

在正式寻找答案之前,有必要再次熟悉一些相关的数学概念,否则可能就看不下去了。

1、普通平面的一般式方程:w_1x_1+w_2x_2+w_3x_3+d=0

这个公式容易理解,在三维空间中,三个点才能唯一确定一个平面,因此需要三个变量x_1,x_2,x_3,外加一个常量d,表示该平面到坐标原点的距离。而且系数w_1,w_2,w_3不能同时为0。如果存在同时为0的情况,该平面会被压缩成一条线或一个点。

如果令w=(w_1,w_2,w_3), x=(x_1,x_2,x_3),该平面公式如果转化为向量形式,就会变成两个向量的点积形式:

w^Tx+b=0

2、法向量

法向量是空间解析几何的一个概念,垂直于平面的直线所表示的向量为该平面的法向量。由于空间内有无数个直线垂直于已知平面,因此一个平面都存在无数个法向量(包括两个单位法向量。单位法向量就是模长为1的法向量)。三维平面的法向量是垂直于该平面的三维向量,用方程w_1x_1+w_2x_2+w_3x_3+d=0表示的平面,向量(w_1,w_2,w_3)就是其法向量。

3、超平面的方程:

n维空间中的超平面由下面的方程确定:w^{T}x+b=0

w与x都是n维列向量,x=(x_1,x_2,.....x_n)^T为平面上的点,w=(w_1,w_2,.....w_n)^T为平面的法向量。b是一个位移项, 代表平面与原点之间的距离。请注意其中w,x均是列向量,加上转置变成行向量。

4、向量的模

向量的模指的是忽略方向,该向量的长度。有点类似绝对值这样的概念,如|-2|=2, |2|=2,只跟长度有关。

给定一个向量x=(x_1,x_2,x_3),则该向量的模|x| = \sqrt{x_1^2+x_2^2+x_3^2}

5、向量的点积(内积)

给定两个向量x=(x_1,x_2,x_3)和w=(w_1,w_2,w_3),其内积是:\vec{x} \cdot \vec{w} = x_1w_1 + x_2w_2 + x_3w_3

6、L2范数

L2范数是指向量中各元素的平方和然后开根。其定义如下:

||w||_2 = \sqrt{\sum_{i}{x_i^2}}

7、点到超平面的距离:

给定一个平面Ax+By+Cz+D=0,和平面外一点Q(x_0,y_0,z_0),现在计算二者间距离d。如图:

取平面内任意一点P(x,y,z),连接\vec{PQ}成为一个向量,过P做平面的法向量\vec {n}=(A,B,C)。从图可知,Q到平面的距离就是\vec{PQ}在法向量\vec{n}上的投影长度,所以:

d = |\vec{PQ}| \cdot \cos \theta

   = \frac{|\vec{n}|}{|\vec{n}|} \cdot |\vec{PQ}| \cdot \cos \theta         (乘以再除以相同的值最终值不变)

因为\vec{n} \cdot \vec{PQ} = |\vec{n}| \cdot |\vec{PQ}| \cdot \cos\theta,所以上式等价于:

   = \frac{\vec{n} \cdot \vec{PQ}}{|\vec{n}|}                         (分子部分正好是两个向量的点积)

因为\vec {n}=(A,B,C),且\vec{PQ}=(x_0-x, y_0-y,z_0-z),使用向量点积公式和向量模计算公式,继续计算:

   = \frac {A(x_0-x) + B(y_0-y) + C(z_0-z)}{\sqrt{A^2 + B^2 + C^2}}

   = \frac {Ax_0+By_0+Cz_0-(Ax+By+Cz)}{\sqrt{A^2 + B^2 + C^2}}

因为P(x,y,z)点在平面内,所以满足Ax+By+Cz+D=0,那么Ax+By+Cz=-D,代入上式可得:

   =  \frac {Ax_0+By_0+Cz_0+D}{\sqrt{A^2 + B^2 + C^2}}

为了保证结果必须不为负数,符合距离的物理意义,所以给分子取绝对值,可得:

   = \frac {|Ax_0+By_0+Cz_0+D|}{\sqrt{A^2 + B^2 + C^2}}

到此,我们就获得了点到平面的距离公式。

如果结合L2范数,以及超平面的向量公式,该公式还有另一种向量化的方程式:

\vec {x} = (x,y,z)\vec {w} = (A,B,C),则

上面的距离计算公式就可以转化为:

d=\frac{|w^Tx+b|}{||w||}

注意,为了书写方便,一般情况下L2范数的下标2会被省略掉。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值