话说svm

一.问题:

1.      Svm是什么

2.      什么是支持向量

3.      什么是最优间隔分类法

4.      最优间隔分类法与最小二乘、最大似然法的比较

5.      什么是拉格朗日

6.      什么是对偶

7.      为什么要做对偶

8.      什么是KKT条件

9.      为什么满足KKT条件强对偶成立

10.  Svm如何解决非线性问题?神经网络呢?

11.  什么是核函数

12.  Svm如何面对噪音问题

13.  什么是松弛变量

14.  松弛变量项vs权重惩罚项

15.  什么是结构风险、期望风险、经验风险、置信范围

16.  Svm如何体现结构风险最小化的?

17.  Svm如何做经验风险和置信范围的平衡的?

18.  什么是坐标下降法?(not梯度下降)

19.  什么是SMO算法

20.  SMO算法如何求解

二.思路

Svm是一个有监督的模型,那么在模型训练的过程中,一定是有一个评价标准的,或者叫做目标函数,也就是按照什么样的目标来训练,像我们之前用过的有最小二乘法、最大似然法

对于svm来说,目标函数是怎么得到的什么呢,是通过一个叫最优间隔的方法,何为最优间隔,最优间隔指的是能够使正负样本分开,并且分开的间隔最大,思考一下,如果数据是线性可分的,那么可以让数据分开的超平面有很多,那么到底选择哪个超平面呢,就是选择那个使得数据分开的间隔最大的超平面,在这种思路的指导下,我们就得到了目标函数。其实这里体现的就是结构风险最小化的原则,能将数据分开代表的是经验风险,也就是分类误差,最大化间隔代表的是置信范围,结构风险最小化和经验风险与置信范围之间的权衡在模型含有噪音的情况下体现的更加淋漓尽致,卖个关子,后面看。

有了目标函数,如何求解呢,这个时候就需要最优化理论来帮忙了,具体来说,这个问题是不等式约束的最优化问题,我们的思路就是构造拉格朗日函数,将有约束的问题转化为无约束的问题,构造完了之后我们发现这个问题是不好求解的,进而我们将这个原始问题转化为对偶问题,这个时候我们就会有疑问,原始问题和对偶问题的解是一样的么,或者什么情况下两者的解是一样的,答案是在满足KKT条件的时候。构造了目标函数,有了优化方法,是不是将这个问题一股脑的交给数值优化算法就可以了。等等,好像不是这样的,前面只是在处理线性可分的问题。

线性不可分的情况应该怎么处理呢,如果让我们回到那个年代,把这个问题交给我们,我们会采取什么样的思路呢,我觉得比较好想的一种方法就是人多力量大的方法,一个线性的分类器不行那么组合多个线性的分类器,当然,如果简简单单的组合线性分类器还是处理不了非线性问题,那么就在线性分类器的输出上加一个非线性的函数是不是就可以了,恩,是的,这种思路的代表就是神经网络,也就是在拓扑结构上下功夫。那么还有别的方法么,有,但是可能不太好想,所以发明这种算法的人确实很牛,其中一种方法就是SVM,SVM的思路我觉得并不是很好想,我猜这也是SVM比神经网络来的稍晚一些的原因。

SVm处理非线性问题的思路是什么呢,数据在低维空间中不可分,那么在高维空间中是不是就线性可分了呢,是的,不然就不会说了,svm就是将低维空间不可分的数据映射到高维从而使得数据可以线性可分,线性可分之后就可以用到前面的最优间隔法了。

维度增高了,计算量也就随着增大了,如何解决计算量的问题呢,按照前面的思路,由低维映射到高维,维度增加的速度是恐怖的,例如2维会映射到5维,3维会映射到19维,这样在向量内积的计算上会带来很大复杂度,工程上使用的模型要求简单、可解释啊。如此高的复杂度怎么能满足工程上的要求,作为一个在学术界和工业界都混得开的模型来说,解决这个问题自然不在话下,这个问题如果交给我们,我们如何思考,向量先从低维映射到高维再计算内积,那能不能先计算内积再做映射呢,很多好的想法都是从这种疑问中产生的,我觉得这种思维我们也是具备的,这里的关键问题就是计算完内积时如何做映射,这个其实需要根据数据的分布来做,例如通过数据分析发现数据的正负样本是成椭圆形的,那么就构造一个椭圆形的映射曲线,说起来简单,对于高维数据,如何发现这样一个映射函数呢,很难,不过人们在实际运用的过程中发现了几个函数,在实际的数据中的效果还不错,所以就用这些发现的函数来做映射,这些函数就叫做核函数。这个时候我们的问题看似解决了,回顾一下我们的思路,对于线性可分的数据,我们直接用最优间隔法来训练,对于线性不可分的,我们映射到高维从而达到了线性可分,对于计算量的问题,采用核函数。

那么有没有在高维依然线性不可分的情况呢,当然有,例如数据中的噪音,特征完全一样,但是类标签不一样,当然这是一种极端的情况,不管怎么做映射都不能做到线性可分,这个时候怎么办呢,退一步海阔天空么,别那么严肃,放松一下限制条件,允许错分,也就是允许经验风险不为0,这样做的好处就是会增加分类间隔,从而减小置信范围,所以这是一个经验风险和置信范围权衡的问题,具体怎么做呢,就是加一个叫做松弛变量的因子,下面的问题就剩求解了,可以使用数值优化的算法,不过,svm没有使用通用的梯度下降、牛顿法等来进行参数的计算,而是采用了类似坐标下降法的算法,具体的算法在下面的推导上看。

总结一下svm的思路,svm就是这样一个一环扣一环的模型,有问题,有解决方案。

线性可分=>最优间隔法

线性不可分=>映射到高维空间

映射到高维空间中计算量大=>核技巧

数据含有有噪音=>松弛变量

加快求解速度=>SMO算法

三.推导

1.      最优间隔分类器

最优分类器主要有几点,

一是理解一下什么是最优间隔法,体现出的是什么思想

二是了解怎么由最优间隔法得到目标函数

三是跟最小二乘法、最大似然法做一下比较。

2.      最优化方法

在求解目标函数的时候,使用了最优化方法,主要有几点

一是体会解决不等式约束最优化问题的思路

二是理解原始问题的表达

三是理解为什么要将原始问题变为对偶问题

四是理解什么是KKT条件

五是理解为什么满足KKT条件时原始问题跟对偶问题的解是一样的

六是理解支持向量的真正含义

3.      核

核技巧,这里主要是做一下介绍,这个部分如果要研究应该可以研究的很深,主要有几个问题

一是低维到高维映射的思路

二是理解核函数的作用

4.      噪音

有噪音的情况是svm比较精彩的地方,主要精彩的地方就是结构风险最小化中经验风险和置信范围的权衡问题。

我们训练模型的目的其实就是希望模型的期望风险最小,期望风险最小指的是模型在预测未知样本的时候误差最小,遗憾的是,因为是未知样本,这个误差我们是得不到的,那怎么办呢,有人得到了期望风险的上界,既然不能最小化期望风险,那么我们就最小化期望风险的上界吧,这个上界是什么呢,就叫做结构风险。

结构风险是有两部分构成的,一是经验风险,这是大多数模型采用的优化目标,二是vc置信范围,vc置信范围与两个因素有关,一是样本数量,二是vc维,vc维表示的是模型复杂程度

在本问题当中,||w||表示的是置信范围,而表示的是经验风险,C表示的是误差的权重,当C越大时,表示经验风险越重要,相对的置信范围就没那么重要,这个时候容易造成过拟合,当C越小时,表示的是经验风险没那么重要,相对的置信范围显得更加重要,那么这个时候就要考虑是否会造成过拟合。想想我们之前在做线性回归和逻辑回归时加的权重惩罚项,是不是就是考虑了结构风险最小化原则。

5.      SMO算法

SMO是一个求解方法,主要理解几个问题

一是坐标下降法的思路

二是KKT条件在选择alpha的作用

三是具体的推导过程。

6.      代码演示

四.参考文档

1.        http://blog.csdn.net/xceman1997/article/details/7971398

2.        http://blog.pluskid.org/?page_id=683

3.        http://zhihaozhang.github.io/2014/05/09/svm2/

4.        《统计学习方法》

时间: 2024-10-29 06:21:50

话说svm的相关文章

Relation Extraction中SVM分类样例unbalance data问题解决 -松弛变量与惩罚因子

转载自:http://blog.csdn.net/yangliuy/article/details/8152390 1.问题描述 做关系抽取就是要从产品评论中抽取出描述产品特征项的target短语以及修饰该target的opinion短语,在opinion mining里面属于很重要的task,很多DM.NLP相关的paper在做这方面的工作.基本的思路是: (1)从sentence的parse tree(比如stanford parser)中选取候选target结点和候选opinion结点,然

SVM详解

SVM入门(一)至(三)Refresh 按:之前的文章重新汇编一下,修改了一些错误和不当的说法,一起复习,然后继续SVM之旅. (一)SVM的简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中[10]. 支持向量机方法是建立在统计学习理论的VC 维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本

SVM入门(三)线性分类器Part 2

上回说到对于文本分类这样的不适定问题(有一个以上解的问题称为不适定问题),需要有一个指标来衡量解决方案(即我们通过训练建立的分类模型)的好坏,而分类间隔是一个比较好的指标.    在进行文本分类的时候,我们可以让计算机这样来看待我们提供给它的训练样本,每一个样本由一个向量(就是那些文本特征所组成的向量)和一个标记(标示出这个样本属于哪个类别)组成.如下:Di=(xi,yi).xi就是文本向量(维数很高),yi就是分类标记.    在二元的线性分类中,这个表示分类的标记只有两个值,1和-1(用来表

模式识别之svm()---支持向量机svm 简介1995

转自:http://www.blogjava.net/zhenandaci/archive/2009/02/13/254519.html 作者:Jasper 出自:http://www.blogjava.net/zhenandaci/ (一)SVM的八股简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中[10].支持向量机方法是

SVM算法入门

转自:http://blog.csdn.net/yangliuy/article/details/7316496SVM入门(一)至(三)Refresh 按:之前的文章重新汇编一下,修改了一些错误和不当的说法,一起复习,然后继续SVM之旅. (一)SVM的简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中[10]. 支持向量机方法

SVM再次总结 - 2 - 线性可分支持向量机

说明:此篇是作者对"SVM"的第二次总结,因此可以算作对上次总结的查漏补缺以及更进一步的理解,所以很多在第一次总结中已经整理过的内容在本篇中将不再重复,如果你看的有些吃力,那建议你看下我的第一次总结: http://blog.csdn.net/xueyingxue001/article/details/51261397 如何定位唯一的分隔超平面 如上所示,有无数根线可以把两种样本的完全正确分开,那么谁是最优的? SVM是这样求的: 1,假设上图中这一个个分隔超平面的方程是: f(x,

解密SVM系列(一):关于拉格朗日乘子法和KKT条件

写在之前 支持向量机(SVM),一个神秘而众知的名字,在其出来就受到了莫大的追捧,号称最优秀的分类算法之一,以其简单的理论构造了复杂的算法,又以其简单的用法实现了复杂的问题,不得不说确实完美. 本系列旨在以基础化的过程,实例化的形式一探SVM的究竟.曾经也只用过集成化的SVM软件包,效果确实好.因为众人皆说原理复杂就对其原理却没怎么研究,最近经过一段时间的研究感觉其原理还是可以理解,这里希望以一个从懵懂到略微熟知的角度记录一下学习的过程. 其实网络上讲SVM算法的多不胜数,博客中也有许多大师级博

SVM面试知识点总结

1. SVM 原理 SVM 是一种二类分类模型.它的基本思想是在特征空间中寻找间隔最大的分离超平面使数据得到高效的二分类,具体来讲,有三种情况(不加核函数的话就是个线性模型,加了之后才会升级为一个非线性模型): 当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机: 当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机: 当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机. 2. SVM 为什么采用间隔

[白话解析] 深入浅出支持向量机(SVM)之核函数

[白话解析] 深入浅出支持向量机(SVM)之核函数 0x00 摘要 本文在少用数学公式的情况下,尽量仅依靠感性直觉的思考来讲解支持向量机中的核函数概念,并且给大家虚构了一个水浒传的例子来做进一步的通俗解释. 0x01 问题 在学习核函数的时候,我一直有几个很好奇的问题. Why 为什么线性可分很重要? Why 为什么低维数据升级到高维数据之后,就可以把低维度数据线性可分? What 什么是核函数,其作用是什么? How 如何能够找到核函数? 不知道大家是否和我一样有这些疑问,在后文中, 我将通过