支持向量机的常见问题和推导

一.问题:

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维,这样在向量内积的计算上会带来非常大复杂度,project上使用的模型要求简单、可解释啊。如此高的复杂度怎么能满足project上的要求,作为一个在学术界和工业界都混得开的模型来说,解决问题自然不在话下,这个问题假设交给我们,我们怎样思考,向量先从低维映射到高维再计算内积,那能不能先计算内积再做映射呢,非常多好的想法都是从这样的疑问中产生的,我认为这样的思维我们也是具备的,这里的关键问题就是计算完内积时怎样做映射,这个事实上须要依据数据的分布来做,比如通过数据分析发现数据的正负样本是成椭圆形的,那么就构造一个椭圆形的映射曲线,说起来简单,对于高维数据,怎样发现这样一个映射函数呢,非常难,只是人们在实际运用的过程中发现了几个函数,在实际的数据中的效果还不错,所以就用这些发现的函数来做映射,这些函数就叫做核函数。这个时候我们的问题看似攻克了,回想一下我们的思路,对于线性可分的数据,我们直接用最优间隔法来训练,对于线性不可分的,我们映射到高维从而达到了线性可分,对于计算量的问题,採用核函数。

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

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

线性可分=>最优间隔法

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

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

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

加快求解速度=>SMO算法

三.推导

1.      最优间隔分类器

最优分类器主要有几点,

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

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

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

2.      最优化方法

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

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

二是理解原始问题的表达

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

四是理解什么是KKT条件

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

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

3.      核

核技巧,这里主要是做一下介绍,这个部分假设要研究应该能够研究的非常深,主要有几个问题

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

二是理解核函数的作用

4.      噪音

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

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

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

在本问题其中,||w||表示的是置信范围,而表示的是经验风险,C表示的是误差的权重,当C越大时,表示经验风险越重要,相对的置信范围就没那么重要,这个时候easy造成过拟合,当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-11-01 23:28:02

支持向量机的常见问题和推导的相关文章

支持向量机回归机的推导过程

目录 支持向量机基本思想 标准的线性支持向量回归模型 非线性支持向量机 支持向量机用于分类:硬间隔和软件间隔支持向量机.尽可能分对 支持向量机回归: 希望\(f(x)\)与?\(y\)尽可能的接近. 支持向量机基本思想 英文名:support vector regression 简记:SVR 标准的线性支持向量回归模型 学习的模型: \[f(x)=w^Tx+b\] 假设能容忍\(f(x)\)与\(y\)之间差别绝对值\(\xi\),这就以\(f(x)=w^Tx+b\)形成了一个\(2\xi\)的

数据挖掘入门系列教程(八点五)之SVM介绍以及从零开始推导公式

目录 SVM介绍 线性分类 间隔 最大间隔分类器 拉格朗日乘子法(Lagrange multipliers) 拉格朗日乘子法推导 KKT条件(Karush-Kuhn-Tucker Conditions) 拉格朗日乘子法对偶问题 Slater 条件 最大间隔分类器与拉格朗日乘子法 核技巧 核函数 软间隔 软间隔支持向量机推导 SMO算法 SMO变量的选择方法 总结 参考 还是老规矩,这一篇博客是对SVM进行介绍,下一篇博客就是使用SVM进行具体的使用. SVM介绍 首先介绍SVM是什么,SVM(s

再探mlpy,降维、分类、可视化

一个非常常见的问题就是遇到的数据是多维度数据,维度过高会导致模型极度的复杂,折衷的法案就是降维,然后再Q聚类.分类.回归.降维强调在不损失准确性的前提下来降低维度(选出最优特征) PCA是最常见降维算法,它寻找线性不相关的特征子集(主要因子),另外还有LDA(Linear Discriminant Analysis,线性判别分析).MDS(Multidimensional Scaling,多维标度分析),文末的引文非常推荐,大牛总结的比较透?乛?乛? 以下采用mlpy模块中的PCA方法和LibS

支持向量机(SVM)的详细推导过程及注解

我是搬运工:http://my.oschina.net/wangguolongnk/blog/111353 支持向量机的原理很简单,就是VC维理论和最小化结构风险.在阅读相关论文的时候,发现很多文 章都语焉不详,就连<A Tutorial on Support Vector Machines for Pattern Recognition>这篇文章对拉格朗日条件极值问题的对偶变换都只是一笔带过,让很多人觉得很困惑.下面我将就SVM对线性可分的情况作详尽的推 导. 如上图所示,有一堆训练数据的正

机器学习之四:支持向量机推导

一.支持向量机(SVM) 支持向量机,是用于解决分类问题.为什么叫做支持向量机,后面的内容再做解释,这里先跳过. 在之前<逻辑回归>的文章中,我们讨论过,对于分类问题的解决,就是要找出一条能将数据划分开的边界. 对于不同的算法,其定义的边界可能是不同的,对于SVM算法,是如何定义其边界的?其定义方法有什么优点?将是下面要讨论的内容. 1.哪个模型更优 先来讨论一个二分类问题. 数据样本如下图所示: 其可能的划分边界可能是如下图中的蓝线.红线: 图中的蓝.红两种分类边界,都能达到分类的效果,但是

跟我学算法-svm支持向量机算法推导

Svm算法又称为支持向量机,是一种有监督的学习分类算法,目的是为了找到两个支持点,用来使得平面到达这两个支持点的距离最近. 通俗的说:找到一条直线,使得离该线最近的点与该线的距离最远. 我使用手写进行了推导 求解实例 软间隔,通过设置C,使得目标函数的松弛因子发生变化,松弛因子越大,表示分类越不严格 高斯核变化做映射,指的是把低维转换成高维,解决低维不可分的情况 原文地址:https://www.cnblogs.com/my-love-is-python/p/9784226.html

支持向量机(SVM)之数学公式详细推导

一.[概述] 1.含义: 支持向量机(support vector machine,SVM)是一种二类分类器,它的基本模型是定义在特征空间上的间隔最大化的线性分类器,通过引入核函数,也可以作为非线性分类器来解决非线性数据集的分类问题. 2.求解: 支持向量机的学习策略是间隔最大化,可转化为一个求解凸二次规划的问题. 3.模型: 支持向量机模型从简单到复杂可分为:线性可分支持向量机.线性支持向量机和非线性支持向量机. 线性可分支持向量机:训练数据线性可分,通过硬间隔最大化,学习一个线性分类器: 线

【机器学习】算法原理详细推导与实现(五):支持向量机(下)

[机器学习]算法原理详细推导与实现(五):支持向量机(下) 上一章节介绍了支持向量机的生成和求解方式,能够根据训练集依次得出\(\omega\).\(b\)的计算方式,但是如何求解需要用到核函数,将在这一章详细推导实现. 核函数 在讲核函数之前,要对上一章节得到的结果列举出来.之前需要优化的凸函数为: \[ min_{\gamma,\omega,b}->\frac{1}{2}||\omega||^2 \] \[ y^{(i)}(\omega^Tx^{(i)}+b) \geq 1 ,i=1,2,.

支持向量机(SVM)的推导(线性SVM、软间隔SVM、Kernel Trick)

线性可分支持向量机 给定线性可分的训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习到的分离超平面为 \[w^{\ast }x+b^{\ast }=0\] 以及相应的决策函数 \[f\left( x\right) =sign\left(w^{\ast }x+b^{\ast } \right)\] 称为线性可分支持向量机 如上图所示,o和x分别代表正例和反例,此时的训练集是线性可分的,这时有许多直线能将两类数据正确划分,线性可分的SVM对应着能将两类数据正确划分且间隔最大的直线. 函数