(图片付费下载自视觉中国)

作者 | 韦伟

来源 | 知乎

导语:持续准备面试中,准备的过程中,慢慢发现,如果死记硬背的话很难,可当推导一遍并且细细研究里面的缘由的话,面试起来应该什么都不怕,问什么问题都可以由公式推导得到结论,不管问什么,公式摆在那里,影响这个公式的变量就在那,你问什么我答什么,共勉!
一. 简单概括一下SVM
SVM 是一种二类分类模型。它的基本思想是在特征空间中寻找间隔最大的分离超平面使数据得到高效的二分类,具体来讲,有三种情况(不加核函数的话就是个线性模型,加了之后才会升级为一个非线性模型):
  • 当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;
  • 当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;
  • 当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。
二. SVM 为什么采用间隔最大化(与感知机的区别):
当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强。
三. SVM的目标(硬间隔):
有两个目标:第一个是使间隔最大化,第二个是使样本正确分类,由此推出目标函数:
稍微解释一下,w是超平面参数,目标一是从点到面的距离公式化简来的,具体不展开,目标二就相当于感知机,只是把大于等于0进行缩放变成了大于等于1,为了后面的推导方便。有了两个目标,写在一起,就变成了svm的终极目标:

四. 求解目标(硬间隔):
从上面的公式看出,这是一个有约束条件的最优化问题,用拉格朗日函数来解决。
上式的拉格朗日函数为:

在满足Slater定理的时候,且过程满足KKT条件的时候,原问题转换成对偶问题:

先求内部最小值,对w和b求偏导并令其等于0可得:
将其代入到上式中去可得到
此时需要求解 ,利用SMO(序列最小优化)算法:
SMO算法的基本思路是每次选择两个变量,选取的两个变量所对应的样本之间间隔要尽可能大,因为这样更新会带给目标函数值更大的变化。SMO算法之所以高效,是因为仅优化两个参数的过程实际上仅有一个约束条件,其中一个可由另一个表示,这样的二次规划问题具有闭式解。
五. 软间隔:
不管直接在原特征空间,还是在映射的高维空间,我们都假设样本是线性可分的。虽然理论上我们总能找到一个高维映射使数据线性可分,但在实际任务中,寻找一个合适的核函数核很困难。此外,由于数据通常有噪声存在,一味追求数据线性可分可能会使模型陷入过拟合,因此,我们放宽对样本的要求,允许少量样本分类错误。这样的想法就意味着对目标函数的改变,之前推导的目标函数里不允许任何错误,并且让间隔最大,现在给之前的目标函数加上一个误差,就相当于允许原先的目标出错,引入松弛变量,公式变为:

那么这个松弛变量怎么计算呢,最开始试图用0,1损失去计算,但0,1损失函数并不连续,求最值时求导的时候不好求,所以引入合页损失(hinge loss):

函数图张这样:
理解起来就是,原先制约条件是保证所有样本分类正确,现在出现错误的时候,一定是这个式子不被满足了,即 ,衡量一下错了多少呢?因为左边一定小于1,那就跟1比较,因为1是边界,所以用1减去来衡量错误了多少,所以目标变为(正确分类的话损失为0,错误的话付出代价):

但这个代价需要一个控制的因子,引入C>0,惩罚参数,即:
可以想象,C越大说明把错误放的越大,说明对错误的容忍度就小,反之亦然。当C无穷大时,就变成一点错误都不能容忍,即变成硬间隔。实际应用时我们要合理选取C,C越小越容易欠拟合,C越大越容易过拟合。
所以软间隔的目标函数为:

其中:

六. 软间隔求解:
与硬间隔类似:
上式的拉格朗日函数为:

在满足Slater定理的时候,且过程满足KKT条件的时候,原问题转换成对偶问题:

先求内部最小值,对w,b和求偏导并令其等于0可得:

将其代入到上式中去可得到,注意被消掉了:

此时需要求解,同样利用SMO(序列最小优化)算法。
七. 核函数:
为什么要引入核函数:
当样本在原始空间线性不可分时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。而引入这样的映射后,所要求解的对偶问题的求解中,无需求解真正的映射函数,而只需要知道其核函数。核函数的定义:K(x,y)=<ϕ(x),ϕ(y)>,即在特征空间的内积等于它们在原始样本空间中通过核函数 K 计算的结果。一方面数据变成了高维空间中线性可分的数据,另一方面不需要求解具体的映射函数,只需要给定具体的核函数即可,这样使得求解的难度大大降低。
用自己的话说就是,在SVM不论是硬间隔还是软间隔在计算过程中,都有X转置点积X,若X的维度低一点还好算,但当我们想把X从低维映射到高维的时候(让数据变得线性可分时),这一步计算很困难,等于说在计算时,需要先计算把X映射到高维的的ϕ(x),再计算ϕ(x1)和ϕ(x2)的点积,这一步计算起来开销很大,难度也很大,此时引入核函数,这两步的计算便成了一步计算,即只需把两个x带入核函数,计算核函数,举个列子一目了然(图片来自:从零推导支持向量机):
个人对核函数的理解:核函数就是一个函数,接收两个变量,这两个变量是在低维空间中的变量,而核函数求的值等于将两个低维空间中的向量映射到高维空间后的内积。
八. 如何确定一个函数是核函数:
验证正定核啥的,咱也不太懂,给出:

所以不懂,就用人家确定好的常见核函数及其优缺点:
九. 如何选择核函数:
  • 当特征维数 d 超过样本数 m 时 (文本分类问题通常是这种情况), 使用线性核;
  • 当特征维数 d 比较小. 样本数 m 中等时, 使用RBF核;
  • 当特征维数 d 比较小. 样本数 m 特别大时, 支持向量机性能通常不如深度神经网络。
十. 关于支持向量的问题:
1.先说硬间隔:
先看KKT条件
支持向量,对偶变量 αi > 0 对应的样本;
  • 线性支持向量机中, 支持向量是距离划分超平面最近的样本, 落在最大间隔边界上。
  • 支持向量机的参数 (w; b) 仅由支持向量决定, 与其他样本无关。
2. 再说软间隔:
先看kkt条件:
经过SMO后,求得
对于任意样

若满足,进一步地,

如图:
十一. 谈谈SVM的损失函数:
此处说的是软间隔:
先看软间隔的基本型形式:

稍微做一点变化:
这样写是为了符合标准的损失函数+正则化的样子,其中, 第一项称为经验风险, 度量了模型对训练数据的拟合程度; 第二项称为结构风险, 也称为正则化项, 度量 了模型自身的复杂度. 正则化项削减了假设空间, 从而 降低过拟合风险. λ 是个可调节的超参数, 用于权衡经验风险和结构风险.
其中:

这样的话给上式乘以mc,就会变成上上式了。
十二. 为什么SVM对缺失数据敏感?
这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM 没有处理缺失值的策略。而 SVM 希望样本在特征空间中线性可分,所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。
十三. SVM的优缺点:
优点:
  1. 由于SVM是一个凸优化问题,所以求得的解一定是全局最优而不是局部最优。
  2. 不仅适用于线性线性问题还适用于非线性问题(用核技巧)。
  3. 拥有高维样本空间的数据也能用SVM,这是因为数据集的复杂度只取决于支持向量而不是数据集的维度,这在某种意义上避免了“维数灾难”。
  4. 理论基础比较完善(例如神经网络就更像一个黑盒子)。
缺点:
  1. 二次规划问题求解将涉及m阶矩阵的计算(m为样本的个数), 因此SVM不适用于超大数据集。(SMO算法可以缓解这个问题)
  2. 只适用于二分类问题。(SVM的推广SVR也适用于回归问题;可以通过多个SVM的组合来解决多分类问题)
十四:参考文献:
https://zhuanlan.zhihu.com/p/49331510
https://zhuanlan.zhihu.com/p/43827793
https://zhuanlan.zhihu.com/p/31652569
原文链接:
https://zhuanlan.zhihu.com/p/76946313
(*本文为 AI科技大本营转载文章,转载请联系原作者)

精彩推荐

2019 中国大数据技术大会(BDTC)历经十一载,再度火热来袭!豪华主席阵容及百位技术专家齐聚,15 场精选专题技术和行业论坛,超强干货+技术剖析+行业实践立体解读,深入解析热门技术在行业中的实践落地。【早鸟票】【特惠学生票】限时抢购,扫码了解详情!

推荐阅读

  • 中文预训练ALBERT模型来了:小模型登顶GLUE,Base版模型小10倍、速度快1倍

  • 100多次竞赛后,他研发了一个几乎可以解决所有机器学习问题的框架

  • 王霸之路:从0.1到2.0,一文看尽TensorFlow“奋斗史”

  • 伯克利人工智能研究院开源深度学习数据压缩方法Bit-Swap,性能创新高

  • NLP被英语统治?打破成见,英语不应是「自然语言」同义词

  • TensorFlow2.0正式版发布,极简安装TF2.0(CPU&GPU)教程

  • 肖仰华:知识图谱构建的三要素、三原则和九大策略 | AI ProCon 2019

  • AI落地遭“卡脖子”困境:为什么说联邦学习是解决良方?

  • 限时早鸟票 | 2019 中国大数据技术大会(BDTC)超豪华盛宴抢先看!

你点的每个“在看”,我都认真当成了喜欢

超详细支持向量机知识点,面试官会问的都在这里了相关推荐

  1. 【面试复习系列】常用机器学习算法知识点及其解析,面试官会考的几乎都有,欢迎补充

    图片慢慢上传,看不到图片的请点这里: 常用机器学习算法知识点及其解析,面试官会考的几乎都有 LR:logistic regression  对数几率回归/逻辑回归 sigmoid函数的作用就是用于把输 ...

  2. 之前遇到一位老面试官,问我的问题真的有点东西

    这篇文章其实源于一次我的面试经历. 那次我面对是一位老面试官,真的很有东西. 那次面试我和他叨叨了两小时....我滴妈我嘴巴都干了真的. 他的提问都很有深度,可以说对我的学习之路有很大的帮助. 我记得 ...

  3. 面试官再问我如何保证 RocketMQ 不丢失消息,这回我笑了!

    0x00. 消息的发送流程 一条消息从生产到被消费,将会经历三个阶段: 生产阶段,Producer 新建消息,然后通过网络将消息投递给 MQ Broker 存储阶段,消息将会存储在 Broker 端磁 ...

  4. 作为一名Java程序员,这些Spring知识点面试官常考

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | 丸纸 来源 | 极客时间 毋庸置疑,Spring 早已成为 Java 后端开发事实 ...

  5. 99%的面试官都会问到的Java面试题

    转载自  99%的面试官都会问到的Java面试题 最近是招聘季,所谓金九银十,正是跳槽的好几节.今天,给大家整理了一些Java面试常考的经典题目,我们一道一道来分析一下. 经典面试题 1.谈谈你对 J ...

  6. 字节跳动面试官这样问消息队列:高可用、不重复消费、可靠传输、顺序消费、消息堆积,我整理了下

    写在前面 又到了年底跳槽高峰季,很多小伙伴出去面试时,不少面试官都会问到消息队列的问题,不少小伙伴回答的不是很完美,有些小伙伴是心里知道答案,嘴上却没有很好的表达出来,究其根本原因,还是对相关的知识点 ...

  7. 初入职场-面试官都会问些什么?(结尾附视频)

    写在前面:博主是一只经过实战开发历练后投身培训事业的"小山猪",昵称取自动画片<狮子王>中的"彭彭",总是以乐观.积极的心态对待周边的事物.本人的技 ...

  8. 【Nginx】面试官竟然问我Nginx如何生成缩略图,还好我看了这篇文章!!

    写在前面 今天想写一篇使用Nginx如何生成缩略图的文章,想了半天题目也没想好,这个题目还是一名读者帮我起的.起因就是这位读者最近出去面试,面试官正好问了一个Nginx如何生成缩略图的问题.还别说,就 ...

  9. 面试官都会问的Mybatis面试题,你会这样回答吗?

    一.概述 面试,难还是不难?取决于面试者的底蕴(气场+技能).心态和认知及沟通技巧.面试其实可以理解为一场聊天和谈判,在这过程中有心理.思想上的碰撞和博弈.其实你只需要搞清楚一个逻辑:"面试 ...

最新文章

  1. FPGA设计思想之“逻辑复制”
  2. golang中的strings.Trim
  3. 【转载】网络流和最小费用流
  4. 二维数组数和指针操作的理解
  5. 时延敏感业务低概率超时问题分析
  6. @NotBlank注解使用不生效的解决办法
  7. MAC地址与IP地址
  8. 超级抖音腾讯视频V3.6.0小程序源码 前端+后端 支持视频采集和上传
  9. 字符串固定长度 易语言_易语言宽字符数据类型怎么设置
  10. Python的贝叶斯网络学习库pgmpy介绍和使用
  11. 语音专题第四讲,语音识别之解码器技术简介|大牛讲堂
  12. bzoj 2707: [SDOI2012]走迷宫(Trajan+高斯消元+Dp)
  13. mysql 优化实例之索引创建
  14. 66岁比尔盖茨突然宣布离婚!27年前与下属恋爱修成正果,现在“无法共同成长”,分割8000亿财产...
  15. 借助Sigar API获取网络信息
  16. 01--DNS服务器2
  17. BZOJ2438[中山市选2011] 杀人游戏
  18. 单片机C语言基础知识篇
  19. HTTP网络协议四:HTTP报文及报文字段说明
  20. Pygame教程(非常详细)

热门文章

  1. solrcloud Read and Write Side Fault Tolerance
  2. [转]C#网络编程(异步传输字符串) - Part.3
  3. Androidstudio下Generate signed apk提示Error: Expected resource of type id [ResourceType]解决办法...
  4. Java 多线程(六) synchronized关键字详解
  5. Android获取内部和SDCard的存储空间
  6. Percona-Server-5.5.30安装
  7. 关于接口使用抛异常还是返回错误码,下列哪些说法符合《阿里巴巴Java开发手册》
  8. extern “C“
  9. 计算机笔试图形推理题,【笔记】教资笔试丨4分钟掌握信息处理以及逻辑判断!...
  10. 数据导出Excel表格