推导了支持向量机的数学公式后,还需要对比和总结才能更深入地理解这个模型,所以整理了十一个关于支持向量机的问题。

第一问:支持向量机和感知机(Perceptron)的联系?

1、相同点:

都是一种属于监督学习的二类分类器,都属于判别模型。感知机是支持向量机的基础。

2、不同点:

(1)学习策略:感知机是用误分类损失函数最小的策略,求得分离超平面。M为误分类点个数,则目标函数为

支持向量机是用几何间隔最大化的策略,求最优分离超平面。某点的几何间隔为:

线性可分支持向量机的目标函数和优化问题为:

支持向量机的分离超平面不仅要将正负例点分开(感知机做的事情),还有对分离超平面最近的点也要有足够大的确定度把它们分开。

(2)优化算法:感知机的最优化算法是随机梯度下降法。支持向量机的最优化算法是通过拉格朗日乘子法,得对偶问题,再用求解凸二次规划的算法来做(SMO)。

(3)解的个数:感知机的解是不唯一的,而支持向量机的解是唯一的。

(4)感知机追求最大程度正确划分所有的点,最小化错误,很容易造成过拟合;支持向量机追求大致正确分类的同时,一定程度上避免过拟合。

(5)感知器能处理的问题就是二分类问题。但支持向量机不同,有了核方法的加持,处理非线性问题也是可以的。支持向量机还能解决多分类问题。另外支持向量机中的支持向量回归(SVR)还可以解决回归问题。

(6)感知机的目标函数是经验风险,而线性支持向量机带合页损失函数的目标函数是结构风险,加了L2范数的正则化项。

第二问:支持向量机和逻辑回归(LR)的联系?

1、相同点:

(1)不考虑核函数的话,都是线性分类器,都是求一个最佳分类超平面

(2)都是监督学习算法,都属于判别模型。

2、不同点:

(1)损失函数不同

逻辑回归的损失函数是交叉熵损失函数:

而支持向量机转化为拉格朗日形式的目标函数为:

从另一个角度理解,支持向量机的目标函数是加了正则化项的hinge loss 损失函数:

支持向量机自带了正则项(L2范数),是结构风险最小化的算法,而逻辑回归解决过拟合问题需要另外加正则项:

(2)支持向量机基于距离分类,逻辑回归基于概率分类

逻辑回归基于概率理论,假设样本为正样本的概率可以用sigmoid函数来表示,然后通过极大似然估计的方法估计出参数的值。

支持向量机基于几何间隔最大化原理,认为存在最大几何间隔的分类面为最优分类面。支持向量机依赖数据表达的距离测度,所以需要对数据先做Normalization,而逻辑回归不受其影响。

(3)对数据和参数的敏感程度不同  

支持向量机在决定分离超平面时只有支持向量起作用,在间隔边界以外移动、增加或减少其他实例点对分类决策函数不会有任何影响。

逻辑回归受所有数据点的影响,直接依赖数据分布,每个样本点都会影响决策面的求解结果。

(4)在解决非线性问题时,支持向量机采用核技巧,而逻辑回归不采用

在非线性分类问题中,确定分类决策函数时,支持向量机中只有少数的支持向量参与到核函数的运算,计算复杂度不高。而逻辑回归如果也运用核技巧,那么所有样本点都必须参与核计算,那么计算复杂度非常高。

第三问:支持向量机为什么采用间隔最大化?

1、间隔最大化是指支持向量机的策略是学习能够正确划分数据集并且几何间隔最大的分离超平面。间隔最大不是指函数间隔最大,而是指几何间隔最大。某点与分离超平面的几何间隔是:

即样本点到分离超平面的距离。

2、当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。而线性可分支持向量机利用间隔最大化求得最优分离超平面,解是唯一的。

3、对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据进行分类,这样的超平面对未知的新实例有很好的分类预测能力(泛化能力强)。

第四问:为什么要转化为对偶问题?

1、对偶问题更容易求解,通过拉格朗日函数把目标函数和条件约束整合成了一个新函数,化简后转化为求解一个变量的问题。

2、非常自然地引入核函数,从而推广到非线性分类问题。

(1)线性支持向量机的对偶问题的目标函数为:

(2)将对偶问题目标函数中的內积用核函数来代替,就成了引入核函数后的目标函数:

第五问:为什么要引入核函数?

1、为了解决线性不可分问题

当样本点在原始空间线性不可分时,可以将输入空间映射到更高维的特征空间,使样本在新的特征空间线性可分,从而可以用线性分类方法来求解。核技巧就属于这种方法。

2、为了解决映射函数可能带来的特征空间维度过高问题

定义了核函数K(x,y)=<ϕ(x),ϕ(y)>,那么向量在特征空间的内积等于它们在原始空间中通过核函数 K 计算的结果。那么就可以直接在低维空间计算两个向量的內积,而不需要显式地定义映射函数,求解难度降低。因为如果用映射函数,那么新特征空间的维度可能很高,甚至是无穷维,导致计算<ϕ(x),ϕ(y)>非常困难。

第六问:常见的核函数有哪些?怎么选择合适的核函数?

1、常见的核函数有:

2、只要一个对称函数所对应的的核矩阵(Gram矩阵)是半正定的,它就能作为核函数使用,这个对称函数称为正定核函数。半正定矩阵是指如果A是实对称矩阵,对任意非零列向量x有,那么称A为半正定矩阵。

3、一般选择线性核和高斯核。当样本的特征很多,和样本数量差不多时,往往样本线性可分,可考虑用线性核函数;当特征较少,样本的数量很多时,可以手动添加一些特征,使样本线性可分,再考虑用线性核函数;当特征较少,样本数量一般时,考虑用高斯核函数(RBF核函数的一种,指数核函数和拉普拉斯核函数也属于RBF核函数)。

第七问:介绍一下高斯核函数?

1、高斯核函数的公式为:

2、高斯核函数是一种局部性较强的核函数,可以将样本从原始空间映射到无穷维空间,其外推能力随着参数σ的增大而减弱。

3、如果 σ 选得很大的话,高次特征上的权重实际上衰减得非常快,所以实际上相当于一个低维的子空间;反过来,如果 σ 选得很小,则可以将任意的数据映射为线性可分。因此,通过调控参数σ,高斯核具有非常高的灵活性,是使用最广泛的核函数。

第八问:为什么支持向量机对缺失数据敏感?

1、这里说的缺失数据是指缺失某些特征数据,向量数据不完整。支持向量机没有处理缺失值的策略(决策树有)。

2、支持向量机希望样本在特征空间中线性可分,所以特征空间的好坏对支持向量机的性能很重要。缺失特征数据将影响训练结果的好坏。

第九问:支持向量机怎么解决过拟合问题?如何调整惩罚参数C?

1、在完全线性可分的数据中,支持向量机没有过拟合问题。

2、在线性不可分的数据集中,异常点的存在导致支持向量机过拟合,而通过引入松弛变量,使支持向量机能够容忍异常点的存在,一定程度上解决了过拟合。线性支持向量机带有hinge loss 损失函数的目标函数为:

加了正则化项,采用结构风险最小化,故可解决过拟合问题。

3、而在非线性可分的情况下,非线性支持向量机是核函数+软间隔最大化的支持向量机,过拟合问题来自于核函数和允许误分类点的存在。

(1)选择的核函数过于powerful,比如多项式核函数的次数太高,高斯核函数的参数 σ太小,那么就需要调整参数来缓解过拟合问题;

(2)软间隔最大化时参数C越大,对误分类点的惩罚越大,使得被判为误分类的点越多,于是造成过拟合,C无穷大时退化为硬间隔分类器。那么通过减小C来解决。

第十问:什么是支持向量机的支持向量?

在分类问题中,分线性可分和基本线性可分两种情况讨论:

1、在线性可分支持向量机中,样本点中与分离超平面最近的向量(间隔边界上的向量)就是支持向量。支持向量满足:

2、在线性支持向量机中,支持向量分三种:

(1)在分离超平面间隔边界上的向量;

(2)在分离超平面上的向量;

(3)在间隔边界和分离超平面之间的向量(包含正确分类和误分类的)。

第十一问:支持向量机的优点和缺点?

1、优点:

(1)支持向量机的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。

(2)稀疏性,在小样本集上分类效果通常比较好。

(3)有一套坚实完整的理论来解释原理,利用核函数代替向高维空间的非线性映射,降低了计算复杂度。

(4)少数支持向量决定了最终结果,不仅有利于抓住关键样本、剔除大量冗余样本,而且具有较好的“鲁棒”性,泛化能力较强。这种“鲁棒”性主要体现在:增、删和移动非支持向量对模型没有影响;有些成功的应用中,支持向量机对核的选取不敏感。

2、缺点:

(1)支持向量机对大规模训练样本难以实施。由于支持向量机是借助凸二次规划来求解支持向量,而求解凸二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间。

(2)用支持向量机解决多分类问题存在困难。传统的支持向量机就是解决二分类问题的,尽管有不少解决多分类问题的支持向量机方法,不过各种方法都存在一定程度上的缺陷。

(3)对缺失值敏感,核函数的选择与调参比较复杂。

参考资料:

1、李航:《统计学习方法》

2、周志华:《机器学习》

3、吴恩达:《机器学习》

4、https://blog.csdn.net/szlcw1/article/details/52259668

5、https://blog.csdn.net/a857553315/article/details/79586846

6、https://blog.csdn.net/touch_dream/article/details/63748923

7、https://blog.csdn.net/jieming2002/article/details/79317496

机器学习之十一问支持向量机(SVM)的更多相关文章

  1. 机器学习常见面试题—支持向量机SVM

    前言 总结了2017年找实习时,在头条.腾讯.小米.搜狐.阿里等公司常见的机器学习面试题. 支持向量机SVM 关于min和max交换位置满足的 d* <= p* 的条件并不是KKT条件 Ans: ...

  2. Stanford机器学习---第八讲. 支持向量机SVM

    原文: http://blog.csdn.net/abcjennifer/article/details/7849812 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回 ...

  3. 机器学习(二)—支持向量机SVM

    1.SVM的原理是什么? SVM是一种二类分类模型.它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器.(间隔最大是它有别于感知机) 试图寻找一个超平面来对样本分割,把样本中的正例和反例 ...

  4. 【原】Coursera—Andrew Ng机器学习—Week 7 习题—支持向量机SVM

    [1] [2] Answer: B. 即 x1=3这条垂直线. [3] Answer: B 因为要尽可能小.对B,右侧红叉,有1/2 * 2  = 1 ≥ 1,左侧圆圈,有1/2 * -2  = -1 ...

  5. 【IUML】支持向量机SVM

    从1995年Vapnik等人提出一种机器学习的新方法支持向量机(SVM)之后,支持向量机成为继人工神经网络之后又一研究热点,国内外研究都很多.支持向量机方法是建立在统计学习理论的VC维理论和结构风险最 ...

  6. 机器学习之支持向量机—SVM原理代码实现

    支持向量机—SVM原理代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9596898.html 1. 解决 ...

  7. 机器学习——支持向量机SVM

    前言 学习本章节前需要先学习: <机器学习--最优化问题:拉格朗日乘子法.KKT条件以及对偶问题> <机器学习--感知机> 1 摘要: 支持向量机(SVM)是一种二类分类模型, ...

  8. 机器学习:Python中如何使用支持向量机(SVM)算法

    (简单介绍一下支持向量机,详细介绍尤其是算法过程可以查阅其他资) 在机器学习领域,支持向量机SVM(Support Vector Machine)是一个有监督的学习模型,通常用来进行模式识别.分类(异 ...

  9. 机器学习算法 - 支持向量机SVM

    在上两节中,我们讲解了机器学习的决策树和k-近邻算法,本节我们讲解另外一种分类算法:支持向量机SVM. SVM是迄今为止最好使用的分类器之一,它可以不加修改即可直接使用,从而得到低错误率的结果. [案 ...

随机推荐

  1. CSS简写总结

    CSS简写就是指将多行的CSS属性简写成一行,又称为CSS代码优化或CSS缩写.CSS 简写的最大好处就是能够显著减少CSS文件的大小,优化网站整体性能,更加容易阅读. 下面介绍常见的CSS简写规则: ...

  2. 21.app后端如何高效更新内容

    在app的主页或通知栏,经常需要通过api取最新的数据.那么,怎么在这部分上做优化,使获取内容的效率更高呢?在本文中,通过推拉和增量更新,实现了一种高效获取数据的策略. 1.高效更新数据策略在app中 ...

  3. 玩转Spring MVC (一)---控制反转(依赖注入)

    Spring的核心是控制反转,什么是控制反转呢?小编浅述一下自己的拙见,有不当之处还希望大家指出. 控制反转(IOC),也可以叫做依赖注入(DI),这两个词其实是一个概念. 控制反转,那是什么控制被反 ...

  4. ubuntu16.04如何安装搜狗输入法

    1 . 首先我们需要先来下载支持linux版本的搜狗输入法安装包,这里我们先查看下自己的ubuntu系统是什么版本的,这里我们可以在右上角的那个齿轮图标点击查看"系统设置",在里面 ...

  5. 如何用VBS编写一个简单的恶搞脚本

    windows系统的电脑, 首先右击桌面,选择新建-文本文档,在桌面上新建一个文本文档:     随后打开计算机或者是我的电脑,点击其中的组织(xp系统多为工具),选择下面的文件夹和搜索选项     ...

  6. win 上安装cad2002的心得

    前不久,一从事测绘的哥们来找我,要我给她装一专业软件,想想应该很简单,不知为何把他难成这样,他极力要求安装xp系统,说是只有xp上才能装成功,我不信这个邪,查了许多资料发现win 7根本不兼容cad2 ...

  7. const和static readonly的区别

    我们都知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等. 在多数情况下可以混用.二者本质的区别在于,const的值是在编译期间确定的,因此只能在 ...

  8. Python 魔术方法笔记

    魔术方法总是被__包围, 如__init__ , __len__都是常见的魔术方法,这里主要写一下我遇到的一些魔术方法 setitem 对某个索引值赋值时 即可以进行赋值操作,如 def __seti ...

  9. 轻松搞定JSONP跨域请求

    一.同源策略 要理解跨域,先要了解一下"同源策略".所谓同源是指,域名,协议,端口相同.所谓"同源策略",简单的说就是基于安全考虑,当前域不能访问其他域的东西. ...

  10. 前端笔记之Vue(一)初识SPA和Vue&webpack配置和vue安装&指令

    一.单页面应用(SPA) 1.1 C/S到B/S页面架构的转变 C/S:客户端/服务器(Client/Server)架构的软件. C/S 软件的特点: ① 从window桌面双击打开 ② 更新的时候会 ...