机器学习之——SVM

来源:互联网 发布:vr拼接软件 编辑:程序博客网 时间:2024/06/03 17:59
SVM是一种应用比较广泛的分类器,全名为Support Vector Machine,即支持向量机,在没有学习SVM之前,我对这个分类器汉字的理解是支持/向量机,学习之后,才知道原名是支持向量/机,我对这个分类器的名字理解是:通过具有稀疏性质的一系列支持向量从而得到一个比较好的分类器,这个分类器在名称里面体现为Machine。下面是我对于学习SVM理论后认为几个需要理解和掌握的知识点
  • 函数间隔(functional margin) and 几何间隔(geometric margin)
  • 支持向量的理解
  • SVM的最优化问题的解决
首先给出一个一般介绍SVM开篇的一类型的图:

这幅图上看,可以很清楚的看见,SVM实现了两类数据的分类,在这幅图中,有中间的一条横线就是我们要得到的分类器,在二维平面表现为直线(线性分类)或者曲线(非线性分类),在高维空间表现为超平面(hyperplane)。

回顾一下机器学习(一)--- 监督学习之回归中有关于逻辑回归的知识:对于分类器hypothesis,,在而进行二分类的问题上,现在对于该函数,用超平面的表达式:进行替换,对于二分类问题而言,需要说明的是:

联系该公式与上图之间的联系,当大于0的时候,则数据分类的label为1,反之则定为-1。由此引出关于函数间隔的定义,functional margin:

其中的值为{+1,-1},当值为+1时,为了达到很好的分类效果,括号里面的值需要表现为positive,且是较为大的正值,而对值为-1,括号里面的值则需要表现为negative,且是绝对值较为大的负值。

为了比较大的函数间隔,达到很好的confidence,即分类结果更加准确可信,有可能简单的增加w和b的值,但是这样简单的处理是没有任何意义的,因为我们的目的就是为了找到一个比较好的超平面,应该是w,b是不同,在三维空间内,w代表的是分类平面的法向量,对于简单的乘上一个因子,实质上平面并没有发生改变,因此这并不是我们需要的结果。

接着我们需要引出几何间隔,geometric margin的概念。

对于上图,B点是A点在超平面上的投影,对于B点的坐标,这是一个很简单的立体几何问题,对于超平面的法向量,w,我们可以很容易求得它的单位向量,由此可以余弦角,由此可以很容易根据A的坐标求得B的坐标,即:。由因为B点是落在超平面上的,由此可以得到以下结果:

经过简单的线性代数的处理,可以得到:

感觉是不是有点似曾显示的感觉,非常类似点到平面的距离的公式,因为它有可能是负值,因为少了一个绝对值符号,再经过简单的处理:

这样就保证了非负性质。这就是几何间隔的定义式

可以看到几何间隔和函数间隔是非常类似的,但是点到平面的距离是不会因为w,b的缩发生变化,在这一点上,几何间隔比函数间隔更具有意义和价值。

因此,对于以上的二分类问题,可以得到以下的抽象模型:定义

:通过学习和训练,可以得到一组,使得能够达到最大。


===================================================================================

接下来需要讨论上面提出的模型的求解问题。

通过函数间隔和几何间隔的关系,经过转换,可以得到:

这里需要深入的讨论一下的问题。这也是我在理解SVM的时候始终不太明白的问题,在SVM的理论学习中,通常会有。的限制


对于,我们可以采取任意的缩放因子,这里当然就对有了一定的限制。但是可以肯定的是,通过缩放,可以使得。同时缩放,对于几何间隔是没有影响的。

======================================题外话===============================================

但是还有一个问题,一开始容易陷入怪圈的问题:对于最小间隔,可能在真实情况中,需要分类的数据到超平面的间隔可能是小于1的。那么加入最小间隔为1的这样一个限制,不就把这样一部分点过滤掉了,导致计算的时候不考虑这部分点。

对于这个问题,我的理解是。首先这样理解的因果关系是有问题的,首先我们就是为了使得最小间隔最大化,从而得到,得到分类器。那么在不确定超平面的表达式之前,函数间隔是变化的,不存在过滤不过滤的说法。加入“1”的限制,仅仅是为了方便处理。

========================================================================================

解释完的取值问题,接着开始正题,模型的求解问题。当时,可以将以上的模型求解转换为一下模型的求解:

这个问题,是一个典型的凸优化问题,可以用QP模型来求解。

至此,关于SVM的基础知识点就已经全部清点完毕,下一篇将会讲解在以上提出的模型的求解问题。但是我总觉得还有已给关键的名词没有给出,是什么呢?对了,就是支持向量的概念。

========================================================================================

前面我们讨论了关于的取值问题,给出了的限制条件。对于满足的值为1的数据,我们称为支持向量。如下图所示:

上图和本文的第一张图可以看到,满足的向量,即支持向量,是很少的,即具有稀疏性。


学习SVM理论基础后,更进一步了解SVM算法就是了解SVM的算法的求解了,SVM算法的求解是一个凸优化问题,可以使用QP优化包进行求解,但是Platt提出了SMO算法,能够大大提升SVM模型的求解速度,这一节中主要就学习和掌握SVM算法的求解,会涉及到很多的数学公式,也是看了好久,查阅了好多资料,才从蒙蔽状态慢慢解放出来,然后对照着着比较简单的SMO算法,对照着算法流程,才慢慢变成半蒙蔽状态。

首先接着上一节理论基础遗留下的SVM算法的优化模型:



对于这种存在条件约束的优化问题,可以使用拉格朗日乘法来解决,学过高数的人,看着拉格朗日倍感亲切咯。

因此模型可以变成以下模型:



============================拉格朗日对偶性的讨论==============================

为了一般性的讨论问题,除了不等式条件,在这里,还引入等式条件,将上式一般化一下模型:

因此以拉格朗日处理以上模型的求解问题,得到:



上述模型抽象为:


其中代表primal,即原始模型的求解。


所以得到以下等价模型:


接着提出一个对偶性问题:上边是最大值的最小化,对偶问题应该就是最小值的最大化,即:


可以很好的理解是:最大值的最小化大于等于最小值的最大化,对用一个式子的全局极值而言。因此可以得到以下关系:



在某种条件下,上式的等号可以满足,这个条件称为KKT条件:


其中:是原始模型问题的的解,则是对偶问题的解。

===================================题外话============================================

      那么这里就有需要思考和注意的问题了,就是为什么要把问题转换到对偶问题的求解上来呢

在原始模型问题的求解上,即最大化值得最小化问题上,最大化是通过对alpha和beta的优化求解,最小化是通过w优化求解。

而对偶问题的求解上,即最小化值得最大化问题上,最小化是通过w的优化求解,最大化则是通过alpha和beta的求解上。

因此经过处理后,我们可以把模型的求解转换到alpha的求解上,这个就能引入所谓的SMO算。

====================将拉格朗日对称性应用于SVM模型求解===========================


回到SVM的模型求解问题上:经过拉格朗日处理后,得到了以下模型:



导:首先是实现最大化,对w求偏导:

得到关系式一



b求导,得到关系式二:



将关系式一带入到模型中,则得到:



由于关系二的原因,式子简化为:


因此最后的模型求解转化为:



其中需要注意的是,测试集的数据x的label的最后表达式为:



对于该式,有以下几点说明:

  • 由于支持向量具有稀疏性,因此对于大部分的值为0,因此内积的计算仅仅只是测试数据与支持向量的内积,预算量较少
  • 测试数据和支持向量均为列向量,因此避免了复杂的矩阵计算
  • 这种内积性质可以很好的应用到核的概念中
============================="核"用于解决非线性分类=============================

经过一系列的推导,最终转换到了由的优化问题,从而求解模型优化。最后的式子是向量的内积的概念在其中,而我们上面讨论的问题都是以线性分类为基础的,从超平面的表达式就可以看出,对于非线性的分类问题呢?需要怎么求解,这就需要引出核的概念了。

核总的来说,就是一个映射函数,将一组特征向量,映射到高维的空间中,使得在低维空间不能线性分类解决的非线性问题,在高维空间内可以以线性概念解决。

下面是一组关于利用核进行映射后的概念性的解释图:

      

        二维空间                                                                                                             三维空间

可以明显看到,在三维空间内,可以找到一个平面实现非线性的分类。

对于核的具体描述和分析,可以参见以下博客:

  • http://blog.csdn.net/abcjennifer/article/details/7849812       
  • http://blog.csdn.net/v_july_v/article/details/7624837 
  • http://cs229.stanford.edu/notes/cs229-notes3.pdf#page=1

但是由于在映射过程中,并不能保证完全的线性化,如下图:

左图是一个最优的margin classfier的情形,但是由于部分数据点映射的问题,导致跑偏的情况,所以最后的分类是右图的情形,这个分类器就不是最优的情形。对于着心中数据点成为outlier。因此需要进行一定的正则化,控制这种情况。



其中C是为了控制margin最大的超平面和保证数据点的偏差最小的权重,是人为设定的。经过推导,仿照之前的拉格朗日的方法,得到:




从而得到:



对于这个问题,可以用过SMO算法有效的解决。以上是SVM的模型问题,下一节将会继续学习如何将SMO算法应用于该问题的求解中。



转摘自:http://blog.csdn.net/mao19931004/article/details/51580501

0 0
原创粉丝点击