支持向量机SVM(1)

SVM非常强,可用于分类、也可用于拟合,本篇简单介绍他的原理以及推导

一、线性可分:

支持向量机SVM(1)

这三条直线都可以将两类不同的点区分开,那么选那条线区分效果最好呢?

      直观的看起来是a,因为相比之下b与c离样本中的一些点太近了,很难有绝对把握说这个点在超平面的这边或者那边就一定是不同的类,因为超平面稍微一动就会改变这些点的分类属性。所以,应该使得产平面距离不同类的点尽可能大,这也就是最大函数距离的由来。

支持向量机SVM(1)

      接下来我们画出超平面a的两个平行面,距离分界线a最近的点(两种点都会落在这两条平行线上),而我们把分界线l放在a1与a2的中间,这三天线看起来像是一条功公路,这条路把不同的点分隔路的两旁,a1与a2之间的距离就是路宽,分类过程像是休一条能把两种不同类型的点分割开的马路,目的是修最宽的马路。(这种形象的比喻引用自公众号机器学习与自然语言处理)

       补充说明::直线(二维空间)、面(三维空间)、更高维时才称作超平面。

   支持向量机SVM(1)

用一个向量X表示特征向量,m表示点的数量,Rn表示n为空间,分界可以用下式表示:

支持向量机SVM(1)

出于简便考虑,我们用下式表示,其中b是一个常数:

    支持向量机SVM(1)

支持向量机SVM(1)

一般用向量形式描述。

支持向量机SVM(1)表示分界线上的所有的点,当它大于0,表示分界线上方区域,反之表示分界线下方区域:

支持向量机SVM(1)

     但是仅仅判断大于0或者小于0是不够的,根据前面修路的思想,我们需要确保修出一条路,使得在这条路的范围内没有数据点,如下图所示(思想是加入余量δ,也叫截距):

支持向量机SVM(1)

在实际推导过程中,为了计算方便,一般把δ换成1,现在有了新的判别条件:

支持向量机SVM(1)

为了追求简洁的形式,引入标签y(i)进行计算,表示对象的属性:

支持向量机SVM(1)

这样上述表达式就可以写成下面的这种形式:

支持向量机SVM(1)


二、什么是支持向量:

通过上面的讨论与推导,我们得到了一个限制条件:

支持向量机SVM(1),这是我们修路时要遵循的原则,那么这条路的路宽应该如何表示呢:

支持向量机SVM(1)


支持向量机SVM(1)

从上述推导我们发现,路宽仅仅与||W||(W的长度)相关,要让修的路最宽,意味着||W||要最小,即0.5||W||*||W||(平方怎么敲??囧)最小。我们明确一下我们的新目标:

支持向量机SVM(1)

这是一个基于KKT条件的二次规划问题,运用拉格朗日乘法解决这种问题,引入新的系数α:

支持向量机SVM(1)

这样问题转换成选取合适的参数α最小化支持向量机SVM(1)(也就是下面这个表达式):

支持向量机SVM(1)


支持向量机SVM(1)


我们让这两个式子等于0,我们可以得到:

支持向量机SVM(1)

因为α只有当:

支持向量机SVM(1)(即位于马路两边排水渠的时候)才能取成非零值,所有W只依赖边界上的点,正是位于边界上的点支撑起了整个分类平面,这也是支持向量机的名字由来。



另外补充:

1.支撑平面是指与支持向量相交的平面,分割平面是指两个支撑向量中间的面。