机器学习之——SVM
来源:互联网 发布:vr拼接软件 编辑:程序博客网 时间:2024/06/03 17:59
- 函数间隔(functional margin) and 几何间隔(geometric margin)
- 支持向量的理解
- 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
- 机器学习之——SVM
- 机器学习之SVM
- 机器学习之SVM
- 学习——机器学习之初始SVM
- 机器学习——SVM
- 机器学习之—支持向量机(SVM)
- 机器学习之SIFT&SVM
- 【机器学习算法】之SVM
- 机器学习之SVM分类
- 机器学习之初识SVM
- 机器学习实战之SVM
- 机器学习之SVM简介
- [机器学习之SVM] 线性SVM还是非线性SVM?
- 机器学习笔记——SVM
- svm代码c++——机器学习
- 机器学习复习——SVM
- 【机器学习算法2】——SVM
- 机器学习模型——SVM
- REST client 基于浏览器的测试工具
- 3DMAX渲染透明带影子动画帧
- 解决javax.servlet.jsp.JspException cannot be resolved to a type
- 【ssm架构】系统架构-三层架构
- 多规模行人检测策略
- 机器学习之——SVM
- UVa815
- codevs 舞会邀请
- 7个去伪存真的JavaScript面试题
- 深入理解Spring系列之二:BeanDefinition解析
- Fxx and game(bc上的题)
- android view相对于根布局的坐标获取
- iOS/OS X中的高精确度定时器
- 友链——Pray2018