机器学习----SVM(1)

机器学习----SVM(1)

转载 2016年05月04日 15:39:49

以前觉得SVM没有什么,就是计算一个分类超平面而已,但是最近深入学习研究,才发现里面的理论太深了。不过还好,有位大牛的博客帮了很大的忙。强烈推荐大家仔细研究这篇博客,我的博客是在我对了这篇博客后自己的理解,也可以说是大牛博客的精简版。大牛的博客分成了三部分,层层递进。为了便于大家理解,我将三部分分成了三篇博客,同时对原博客的讲解内容和顺序做了一些调整。说了这么多还没给出大牛的博客链接:

http://blog.csdn.net/v_july_v/article/details/7624837

本篇博客是大牛博客第一层次的讲解,主要让读者对SVM有个宏观上的了解。

     1、先从一个简单的线性分类的例子开始。   

如下图所示,现在有一个二维平面,平面上有两种不同的数据,分别用圈和叉表示。由于这些数据是线性可分的,所以可以用一条直线将这两类数据分开,这条直线就相当于一个超平面,超平面一边的数据点所对应的y全是 -1 ,另一边所对应的y全是1


    这个超平面可以用分类函数表示,当f(x) 等于0的时候,x便是位于超平面上的点,而f(x)大于0的点对应 y=1 的数据点,f(x)小于0的点对应y=-1的点,如下图所示:

         

注意:1、有的资料上定义特征到结果的输出函数与这里定义的实质是一样的。为什么?因为无论是,还是,不影响最终优化结果。下文你将看到,当我们转化到优化的时候,为了求解方便,会把yf(x)令为1,即yf(x)是y(w^x + b),还是y(w^x - b),对我们要优化的式子max1/||w||已无影响。

2、借由上图先引入一个概念支持向量,SVM叫支持向量机,那什么是支持向量呢?上如中再两条虚线上的数据点就是支持向量。


2、如何确定这个超平面呢?

从直观上而言,这个超平面应该是最适合分开两类数据的直线。而判定“最适合”的标准就是这条直线离直线两边的数据的间隔最大。所以,得寻找有着最大间隔的超平面。

2.1函数间隔和几何间隔概念

在具体讲解怎么确定超平面之前,先来了解两个概念函数间隔和几个间隔。而理解这两个概念,先来回归一下点到平面的距离公式:

                                

如果平面已经确定,也就是平面公式的系数已经确定,则点到平面的距离可以用|Ax + By + Cz + D|来表示。

2.1.1 函数间隔

有了上面的点到平面的距离公式,我们引入函数间隔就容易许多了。在超平面w*x+b=0确定的情况下,|w*x+b|能够表示点x到距离超平面的远近,而通过观察w*x+b的符号与类标记y的符号是否一致可判断分类是否正确,所以,可以用(y*(w*x+b))的正负性来判定或表示分类的正确性。于此,我们便引出了函数间隔(functional margin)的概念。

    定义函数间隔(用表示)为:

 

                                                           

而超平面(wb)关于T中所有样本点(xiyi)的函数间隔最小值(其中,x是特征,y是结果标签,i表示第i个样本),便为超平面(w, b)关于训练数据集T的函数间隔

          mini  (i=1,...n)

注意:函数间隔存在一个问题,就它具有任意的伸缩性。如果我们将w,b分别扩大2倍,变成2w,2b,超平面并没有变化,但是函数间隔却扩大了2倍。换句话说,在超平面不变的情况下,函数间隔可以任意伸缩。

这样具有任意伸缩性的距离并不适合我们度量点到超平面的距离,因此引入了下面的几何间隔。

2.1.2 几何间隔

假定对于一个点 ,令其垂直投影到超平面上的对应点为 x0 是垂直于超平面的一个向量,为样本x到超平面的距离,如下图所示:

                            

根据高中平面几何知识,有

其中||w||为w的二阶范数(范数是一个类似于模的表示长度的概念),是单位向量(一个向量除以它的模谓之单位向量)。

注意:几何距离就是上面公式中的系数r,我们要导出r=()的结果。推到过程如下

由于  是超平面上的点,满足  ,代入超平面的方程,可得,即随即让此式的两边同时乘以,再根据,即可算出 

                                       

 为了得到的绝对值,令乘上对应的类别 y即可得出几何间隔(用表示)的定义

                                             


从上述函数间隔和几何间隔的定义可以看出:几何间隔就是函数间隔除以||w||,而且函数间隔y*(wx+b) = y*f(x)实际上就是|f(x)|,只是人为定义的一个间隔度量,而几何间隔|f(x)|/||w||才是直观上的点到超平面的距离。

3、最大间隔分类器的定义

 对一个数据点进行分类,当超平面离数据点的“间隔”越大,分类的确信度(confidence)也越大。所以,为了使得分类的确信度尽量高,需要让所选择的超平面能够最大化这个“间隔”值。这个间隔就是下图中的Gap的一半,即我们上面提到的几何间隔。

于是最大间隔分类器(maximum margin classifier)的目标函数可以定义为:

    同时需满足一些条件,根据间隔的定义,有

其中,s.t.,即subject to的意思,它导出的是约束条件

    回顾下几何间隔的定义可知:如果令函数间隔等于1则有 = 1 / ||w||,从而上述目标函数转化成了

    这个目标函数便是在相应的约束条件下,最大化这个1/||w||,而1/||w||便是几何间

。   

注意:上面我们令等于1,但是为什么能这样做呢?

1.对于一个线性可分问题,任意给定一个分类正确的超平面,都有一个最小函数间隔,为了方便书写,记做r^,这个r^,是方向向量w和截距b的函数,因为分类的点是给定的;
2.也就是说r~=r^ (w,b),而求最大几何间隔的问题就是要求出一组w,b使得r^ /||w||,最大。此时约束的条件是任意给定的一个点的函数间隔大于等于r^,也就是yi(w xi+b)>=r^ ;
3.下面做一个变量替换,用w’ = w/r^,和b' = b/r^代替上面的w和b,这样的新变量仍旧是w和b的函数,所以最大化仍然可以进行。于是,把这两个新的变量代入到原来的约束最大化问题中,就变成了,在yi(w' xi+b')>=1的条件下,求使得1/||w'||最大化的w,b。
4.这样一来,通过一个变量替换,关于w和b的问题等价地换成了w',b' 的问题,这就是支持向量机所采用的形式。

更直白的解释是因为函数间隔可以任意伸缩,因此将最小函数间隔任意扩大或者缩小一定倍数是不影响问题的,从而可以直接令最小值为1 .但为什么是1而不是2呢?其实不过是在不等式的两边同时除以一个因子:r^(当然,这个因子是 > 0的)。即:yi(w xi+b)>=r^ =》 yi(w/r^ xi+b/r^)>=r^/r^,而得到yi(w' xi+b')>=1。

更详细的讲解请看原博客评论42楼。

如下图所示,中间的实线便是寻找到的最优超平面(Optimal Hyper Plane),其到两条虚线边界的距离相等,这个距离便是几何间隔,两条虚线间隔边界之间的距离等于2,而虚线间隔边界上的点则是支持向量。由于这些支持量刚好在虚线间隔边界上,所以它们满足还记得我们把 functional margin 定为 1 了吗?上节中:处于方便推导和优化的目的,我们可以令=1),而对于所有不是支持向量的点,则显然有

                   

猜你喜欢

转载自blog.csdn.net/longlovefilm/article/details/79604933