从超平面到SVM

转载自:http://www.sohu.com/a/206572358_160850 自认为很好的一篇讲SVM基础

SVM(support vector machines,支持向量机)是机器学习算法里面非常重要的一个二分类模型,不过该模型也可以算是机器学习算法里面最基础、最难理解的一个算法,因为该算法涉及到大量的数学知识,包括线性代数、高等数学,所以本文将从最基本的知识讲起,逐步深入讲清楚SVM的原理。

一、深入理解超平面
很多讲解支持向量机的文章从一开头就开始讲超平面及其方程,这样对多数没有基础的人来说较难理解,下面将从一维直线讲起,带你逐步过渡理解超平面。
例如,下面是一个只有x轴的一维坐标轴,该轴同样存在原点,x轴正方向和x轴反方向,且该轴上分布了很多点:
在这里插入图片描述
其中,红色的圆圈和绿色的菱形表示该坐标轴上的样本点,绿色的菱形坐标从左至右依次为:-5,-3,-1;红色的圈圈坐标从左到右依次为:2,3,5,6,7;此时,假如要求在坐标轴上找一个分割点,来分割红色的圆圈和绿色的菱形,如何去找呢?

显然的,仅仅靠眼睛就可以找到很多分割点,比如:-0.5,0,1,1.5等多个坐标点都可以把这些样本点分成两部分,一部分在左侧,一部分在右侧,不过,如果此时我只允许找一个点来分割这两部分样本,并且要求此点分割效果最好,如何去找呢?

那么此时,问题就变成了:“在坐标轴上找一个分割点,能划分两部分样本,并且要求此点分割效果最好”。对于这个问题,寻找分割点是很容易的,因为很多点都可以分割,但是如何去衡量该点就是最好的呢?从坐标轴上的点的分布可以看出,要分的绿色菱形和红色圆圈在菱形坐标=-1和圆圈坐标=2处就开始分开了,所以在闭区间(-1,2)直接任取一点都可以将这两部分样本分开,且只能取这里面的点,关于如何效果最好,可以类比修公路,即菱形代表村庄A,圆圈代表村庄B,我要在两个村庄之间修一条公路且不能干涉两村庄的生活(鸣笛噪音、路灯),我只需要在两个村庄之间最靠近的那两户人家的中间修公路就可以了(同样适用于下面讲的二维直角坐标系的情况),也就是坐标点为:(-1+2)/2=0.5处。

在这里插入图片描述
上面是一维坐标下的情况,此时,开始考虑二维直角坐标系下的如下情况:

已知有5个红色的正例样本点x,坐标分别为(0,1)、(0,2)、(1,1)、(1,2)、(2,2);3个绿色的负例样本点o,坐标分别为(2,1)、(3,1)、(3,2)
在这里插入图片描述
其中,正例样本点可以记作其分类y=+1,负例样本点可以记作其分类y=-1,这样,在坐标系x2-x1中就可以认为有两类样本,一类是正例,用x表示,一类是负例,用o表示,每个样本点的坐标都可以用(x1,x2)来表示,这里的(x1,x2)可以类比平面直角坐标系中的(x,y),只是将y换成了x2,这样通过x1、x2后面的数字就可以判断该样本是几维的,并且这样,每个样本点都可以用一个唯一的坐标来表示,也可以认为这是一个向量,另外,需要注意的是,样本点的坐标可以认为是机器学习里面的各个特征,即样本点(x1,x2)表示的是特征x1,x2,它对应的分类就是这个坐标的正反例,红色的x表示正例,绿色的o表示反例,如样本点(1,1),如果要整理成训练数据里面的一条样本的话,就是:

x1, x2, y = 1,1,+1

明白了上面约定的一些符号后,就可以引出主要的话题了,现在要在两类样本点之间找一条直线来将两类样本点分开,并且和前面那个问题一样,要求划分效果最好,如何做呢?

在这里插入图片描述
如上图,这两类样本之间存在多条直线可以划分,对于此问题,可以借鉴前面讲到的村庄修公路,只需要找到两个村庄里面离得最近的两户人家,修的公路离这两户人家同时最远即在中间修即可,不过,此处变成了二维空间,要想找到最近的那两户人家不再那么简单了,此时可以转化成数学问题,即把寻找这两户人家的过程转化为求两点之间的距离即可,所以根据两点距离公式:

在这里插入图片描述在这里插入图片描述|AF|2=9、|BF|2=4、|CF|2=1、|DF|2=10、|EF|2=5、|AG|2=5、|BG|2=2、|CG|2=1、|DG|2=4
、|EG|2=1、|AH|2=10、|BH|2=5、|CH|2=2、|DH|2=9、|EH|2=4
从上面的距离计算可以看出,已经用距离的平方代替了距离,经过计算得到了三对距离CF、CG、EG,那么此问题就转化为了在四个点C、E、F、G中找一条直线将两类样本效果最好的分开。这个问题和前面的修公路一样,只需在三对距离之间找到一个中点就好了,所以可以连线CF、CG、EG,找到它们的中点,然后连线,正好三点共线得到直线y=x-0.5,此问题解决。

在这里插入图片描述
不过,这是眼睛看到后利用几何知识得到的结果,如果是三维、四维甚至更高维度如何去找这条直线(高维称之为超平面)呢?那么此时要把该问题转化为纯数学计算问题,根据上面讲的,该问题可以分两步进行解决:
(1)找到两类样本之间最近的那一部分样本点(这部分上面已经解决,用距离公式即可,高维空间同样适用)

(2)找到一条直线(高维空间称之为超平面)使得(1)中最近的那些样本点到此直线(或超平面)的距离相等且尽量最大,此处可以用“点到直线的距离”来解决,并且由于要把两类样本分开,所以必然一部分样本点在直线上方,一部分在直线下方,根据直线的规律可知(斜率大于0),若(x0,y0)在直线上方,则满足Ax0+By0+C>0,若(x0,y0)在直线下方,则满足Ax0+By0+C<0。

在这里插入图片描述好了,此时上面的问题,已经转化为一个纯数学问题了,那么就按照上面两个步骤来求这条直线的具体方程:

(1)点已经求得了,分别是C(2,2),E(1,1),F(3,2),G(2,1)

(2)假设该方程为Ax+By+C=0,则根据公式联立方程:

在这里插入图片描述由于A、B均不为0,所以可以赋值A=1,则得到B=-1、C=-0.5,最终求得直线x-y-0.5=0,即上面得到的直线y=x-0.5。

好了,通过上面的过渡,从一维到二维已经理解了如何划分样本点了,但是在实际问题中,导致一个事件发的的因素不会是单一因素或简单的两个因素(一个因素对应一个维度或一个特征),对于多个特征的情况,其在数学上的表示就不再是二维直角坐标系可以表达的了,有可能是三维坐标系、四维坐标系甚至更高维度坐标系,此时划分样本的不再是一维里面的一个点,二维里面的一条直线,有可能是三维里面的一个平面,四维里面的一个超平面(四维空间里面的平面很难想象,可以认为是一个超平面),那么此时可以把之前讲的二维方程过渡到更高维度:

因为二维空间里面,一条直线的方程可以表示为:

Ax+By+C=0

三维空间里面,平面的方程可以表示为:

Ax+By+Cz+D=0

依次推广,n维空间的超平面方程可以表示为:

Ax1+Bx2+Cx3+Dx4+Ex5+Fx6+…+K=0

因为n维空间对应的是n维坐标系,仅仅用x、y、z几个字母较难表示,所以此处用x1、x2、x3、…、xn来表示n维坐标系,各个维度的系数此处也可以用w1、w2、w3、…、wn来表示,所以n维空间里面的超平面方程可以写成如下形式:

w1x1+w2x2+w3x3+w4x4+…+wnxn+b=0

x相乘可以看作是内积的相乘:

在这里插入图片描述可以将x看作w,y看作x则上面超平面方程就变成了:

[w,x]+b = 0 ,即wTx+b=0

所以,样本空间中,任何一个超平面都可以用方程如下方程表示:

WTX+b=0

其中,W=(w1,w2,w3,…,wn)为法向量,b为位移项可以认为是截距,该超平面可以唯一的由此方程决定。

可能,此处有人会不理解,为何该方程的法向量正好是该平面方程的变量系数呢?此处可以参考高数平面方程那一节,解释如下:
在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值