支持向量机-SVM

来源:互联网 发布:淘宝到家怎么样 编辑:程序博客网 时间:2024/06/02 19:29

  SVM是一个可监督学习模型,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。

  首先,支持向量机是由两个词组成的:支持向量+机。机是算法的意思,而要理解支持向量,需要从如下图入手:


这是一个二维线性分割问题:在二维平面内找到一条直线,使得两种不同类型的点可以正好分割开来,如上图的H。H确定后便可确定出与H平行,且与两个分别类相切的两条直线,如图H1和H2,而所谓的支持向量指的便是两个类中最靠近直线H的点,它们位于H1或者H2上。

  显而易见,满足上述条件的分割直线并不止一条(直线H稍微左挪或者右挪,或者稍微做旋转也都能满足要求),如何评价分割效果的好与坏呢?支持向量机的考评标准是H1与H2之间的距离margin:距离越远则分割效果越好,反之则越差(从容错性的角度上来看确实如此)。

这里我们把问题升级成多维,而假设分割的超平面(即二维情况下上图的直线H)为WWTWTX+b=0,其中W为一个1维列向量,共有该超平面维度的元素个数,X为1维行向量,同样有与超平面维度相同的元素个数,这样的话H的方程可细写为:w1x1+w2x2+b=0,SVM一般会把分类标签定义为1和-1,则两种类型的点分别处于以下的两个区域内:

WWTWTX+b<-1     ==>     w1x1+w2x2+b<-1

WWTWTX+b> 1     ==>     w1x1+w2x2+b> 1

以H和H1的距离d1为例:

H1方程即为:w1x1+w2x2+b=1

则这两条平行直线之间的距离为:,这里,下界同理。

H1与H2之间的距离D = d1 +d2 = ,如此以来,优化问题变为了求取min( ||W|| ),一般会乘以系数0.5,方便之后的求导运算:


  由于分类标签不是1就是-1(即y=1或y=-1),将之前得到的分类不等式两边乘以相应的分类标签,可以发现他们统一成为了同一个分类约束:,最终,加上分类约束的优化问题为:


这是一个带有不等式约束的拉格朗日乘子法求解极值问题(KKT问题),将约束条件右边转换成<0(或<=0)并乘上拉格朗日乘子ai,与原求解问题的右部相加,得:


对W和b求导并令其等于0得:

代回原方程得:

则求极小值问题转换为求极大值问题:

考虑到实际运用,在模型中加入了松弛变量,
这里写图片描述

指的是错误的分类点到其类别边界直线的距离,则上下类的分类约束变为:

整个问题变为:


显然上述问题还是KKT问题,乘入拉格朗日乘子相加得到目标方程:


分别对w,b,e求导并令结果等于0:


上述方程组的求解一般使用SMO算法,本人也暂时没看太懂其中原理,等理解了再分享出来,有兴趣的也可以到我之后分享的博客大拿链接去琢磨分析。


以上说的还只停留在线性可分层面,比如说如下的左图,二维情况下是无法用直线分割开来的,但是加入映射到三维,又可以采用一个平面将其分割开来。所以说,SVM求解线性不可分问题的实质,是将低位线性不可分的问题映射到足够高维,而在这个维度该问题可以由线性不可分问题变为线性可分问题。也就是说,SVM实质上还是将线性不可分问题转换为线性可分问题来求解。


举个实际的例子,有以下二维元素集:


它显然是线性不可分的,假设其中的点坐标为(x1,x2),现在利用如下映射关系将所有的点从二维映射至三维:

(x1,x2,x3) = 

得到三维空间上的分布图:


旋转视角到一定角度:


可以看出,在三维空间上两种类型的点集是可以通过一个平面切分开来的。


以上是二维映射到三维的情况,实际运用时并不会只是二维到三维这么简单,可能到N维甚至无限维,当然不可能通过找这种映射关系来切分。

实际上,SVM采用核函数来将问题从低维映射到高维,将原本线性问题求解拉格朗日乘子ai时的内积运算:

    三维情况例:K(x,z) = x1z1+x2z2+x3z3

用核函数替换掉,如高斯核函数,可以通过调节来控制映射维度的大小,越小维度越高:


这样做有一个好处是可以将问题映射到高维的同时求解仍然在低维,所以计算量仍然不变,这令SVM非常有竞争力。

最后附上一位大拿的SVM讲解,本篇有很多公式和图都是借用的这位大拿:

http://m.blog.csdn.net/blog/on2way/47729419

0 0
原创粉丝点击