机器学习面试——分类算法SVM

 

1、什么是硬间隔和软间隔?

当训练数据线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机

当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机

(体外话:当训练数据线性不可分时,通过使用核技巧以及软间隔最大化,学习非线性支持向量机

2、软间隔加入的松弛变量是如何求解出来的?

线性不可分意味着不能满足函数间隔大于等于1的约束条件,为了解决这个问题,可以对每个样本点引入一个松弛变量(\xi _{i}>=0①),使得函数间隔加上松弛变量大于等于1.

y_{i}(w\cdot x_{i}+b)\geqslant 1-\xi _{i}                 ②

目标函数为:

\frac{1}{2}\left \| w\right \|^{2}+C\sum_{i=1}^{N}\xi _{i}                       ③

C>0是惩罚参数,C值的大小决定了误分类的惩罚强弱,C越大,惩罚越强。

其中,①②③是软间隔的目标函数及其约束条件,其余求解过程和硬间隔见下面)一致。

3、SVM为什么采用间隔最大化?

使它区别于感知机,SVM的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面,对于线性可分的数据集而言,线性可分分离超平面有无穷多个,但是几何间隔最大的分离超平面是唯一的,意味着以充分大的确信度对数据进行分类,特别地离超平面较近的点。此时的分离超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强。

4、为什么SVM要引入核函数?

当样本在原始空间线性不可分时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。引入对偶问题以后,所求解的对偶问题中,无需求解真正的映射函数,而需知道其核函数。一方面数据变成了高维空间中线性可分的数据,另一方面不需要求解具体的映射函数,只需求解具体的核函数就行。

核函数(两个函数的内积)定义:\chi是输入空间,H是特征空间,如果存在一个从输入空间到特征空间的映射,

\Phi (x):\psi \rightarrow H

使得对所有x,z\in \chi,函数K(x,z)满足条件

K\left ( x,z \right )=\phi (x)\cdot \phi (z)

则K是核函数,\varphi (x)是映射函数,\phi (x)\cdot \phi (z)是函数的内积。因此,可以直接通过计算K,而不计算映射函数。

5、SVM核函数之间的区别?

线性核:主要是用于线性可分场景,参数少,训练快

多项式核:可以实现将低维的输入空间映射到特征空间,但是参数多,并且当多项式的阶数较高时,核矩阵的元素值将趋于无穷大或者无穷小,计算复杂度较高。

高斯核(RBF):局部性强的核函数,参数比多项式核要少,训练场景非常依赖于参数(交叉验证来寻找合适的参数)。

核函数的选择技巧: 

  • 利用专家的先验知识预先选定核函数;
  • 采用Cross-Validation方法,即在进行核函数选取时,分别试用不同的核函数,归纳误差最小的核函数就是最好的核函数.如针对傅立叶核、RBF核,结合信号处理问题中的函数回归问题,通过仿真实验,对比分析了在相同数据条件下,采用傅立叶核的SVM要比采用RBF核的SVM误差小很多.
  • 采用由Smits等人提出的混合核函数方法,该方法较之前两者是目前选取核函数的主流方法,也是关于如何构造核函数的又一开创性的工作.将不同的核函数结合起来后会有更好的特性,这是混合核函数方法的基本思想.
  • 参考七月在线的答案

6、为什么SVM对缺失数据敏感?

因为SVM没有处理缺失值的策略,而SVM希望样本在特征空间中线性可分,所以特征空间的好坏对SVM的性能很重要,缺失特征数据将影响训练结果的好坏。

7、为什么目标函数要转化为对偶问题求解?

  • 对偶问题将原始问题中的约束转为了对偶问题中的等式约束
  • 方便核函数的引入
  • 改变了问题的复杂度。由求特征向量w转化为求比例系数a,在原始问题下,求解的复杂度与样本的维度有关,即w的维度。在对偶问题下,只与样本数量有关。

8、SVM如何解决样本倾斜?

给样本较少的类别较大的惩罚因子,提高这部分样本的重视程度。

9、SVM的损失函数

是合页损失函数(hinge loss),是(wx+b),y是类别值

原理推导:

一、硬间隔支持向量机

支持向量机的学习策略是间隔最大化,可形式化为一个求解凸二次规划问题,也等价于正则化的合页损失函数的最小化问题。

学习的目标是在特征空间找到一个分离超平面,能将实例分到不同的类,分离超平面的对应方程是

w\cdot x+b=0,因为分离超平面有无穷多个,需要几何间隔最大化来确定唯一解。由于SVM是二分类,因此,y=-1代表是负例,y=1代表是正例。

支持向量(如图H1和H2线上的点):样本中距离超平面最近的点称为支持向量。使得约束条件成立。

间隔:H1和H2之间被称为间隔

函数间隔:可以代表分类预测的正确性及确信度

一个点距离分离超平面的远近可以表示分类预测的确信程度。\left | w\cdot x+b \right |能够表示点x距离超平面的远近,\left | w\cdot x+b \right |与y的符号是否一致能够表示分类是否正确,y\left | w\cdot x+b \right |可以表示分类的正确性和确信程度(也是函数间隔)。

几何间隔:

如果成比例改变w,b的值,超平面没有改变,函数间隔却变为原来的2倍,因此,我们需要对w加些约束,如规范化,\left \| w \right \|=1,此时函数间隔成为几何间隔。即

假设y=-1,点A与超平面的距离是\gamma _{i},则\gamma _{i}=-(\frac{w}{\left \| w \right \|}\cdot x+\frac{b}{\left \| w \right \|})

假设y=+1,点A与超平面的距离是\gamma _{i},则\gamma _{i}=\frac{w}{\left \| w \right \|}\cdot x+\frac{b}{\left \| w \right \|}

则几何间隔为

\gamma _{i}=y_{i}(\frac{w}{\left \| w \right \|}\cdot x+\frac{b}{\left \| w \right \|})

对于训练数据集来说,分离超平面(w,b)是所有样本点的几何间隔之最小值,即\gamma =min \gamma _{i}

如果超平面参数w,b改变,函数间隔也成比例改变,但是几何间隔不变。

目标函数为几何间隔最大化,则

 

由下述函数间隔和几何间隔的关系,可将目标函数进行变化:

目标函数变为

由于函数间隔变化并不影响最优问题求解,因此,将函数变为\frac{1}{\left \| w \right \|},并将目标问题转成对偶问题,(将问题简单化,从求解w权重值,到求解a值)。

 

应用拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解。优点是对偶问题往往更容易求解且能自然引入核函数,进而推广到非线性分类问题(详解看问题7)。

\alpha _{i}\geqslant 0是拉格朗日乘子,求解方程组(条件极值的解法),令L对w,b的偏导为0:

将结果带回L,就可以得到

min_{w,b}L(w,b,\alpha )\alpha的极大,

KKT条件:

二、软间隔支持向量机
在现实任务中,样本的不确定性不能正好将样本线性可分,为了提升模型的泛化能力,引入软间隔来允许支持向量机在一些样本上出错。

线性不可分意味着某些样本点不能满足函数间隔大于等于1的约束条件,可以为每个样本点引入一个松弛变量(大于0),使得函数间隔加上松弛变量大于等于1,则目标函数变为:

因为松弛变量是非负的,要求间隔可以小于1,当样本点的间隔小于1时,我们放弃了对这些点的精确分类,使得模型有一定的容错能力。

  • 离群的样本点是有值的松弛变量(松弛变量越大,离群点越远),没离群的点的松弛变量等于0。
  • 惩罚因子C决定了对离群点带来损失的重视程度,C越大,惩罚越大,对离群点的要求越严。

计算步骤和硬间隔一样:

 KKT条件:

 三、非线性SVM

当线性不可分时,将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。常见核函数有:

 所求解的对偶问题中,无需求解真正的映射函数,而需知道其核函数。目标函数化简为:

 四、序列最小最优算法(SMO)

SMO是一种启发式算法,用来求解二次规划问题。基本思路是:如果所有变量的解都满足此最优化问题的KKT条件,那么最优化问题的解就得到了。算法包含两个部分:求解两个变量二次规划的解析方法和选择变量的启发式方法。

  • 选取一对需更新的变量\alpha _{i}\alpha _{j}
  • 固定 \alpha _{i}\alpha _{j}以外的参数,求解式获得更新后的 \alpha _{i}\alpha _{j}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466652.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机的发展史及多道技术

首先先补充一下上一篇的一个小问题。 应用程序的启动流程:   前提:应用程序是运行于操作系统之上的   举例:启动暴风音影     1.双击快捷方式     2.告诉操作系统一个文件路径     3.操作系统从硬盘读取文件内容到内存中   …

Cortex M3 NVIC与中断控制

Cortex M3 NVIC与中断控制 宗旨:技术的学习是有限的,分享的精神是无限的。 一、NVIC概览 ——嵌套中断向量表控制器 NVIC 的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断处理的控制逻辑之外, NVIC 还包含了 MPU、 S…

VS 2005 或 VS 2008 在安装VSS 2005后,看不到源代码管理的解决办法

昨天有朋友在重新安装VS 2008后,再安装VSS 2005,安装好后在文件菜单中找不到“源代码管理”的菜单项,后来经朋友告知,是开发工具的默认选项设置问题。打开开发工具,“工具”--“选项”:(如图&am…

代码里-3gt;gt;1是-2但3gt;gt;1是1,-3/2却又是-1,为什么?

之前群里有个同学向大家提出了类似这样的问题。随后这位同学公布了答案:右移运算是向下取整,除法是向零取整。这句话对以上现象做了很好的总结,可是本质原因是什么呢?我一直以为-3>>1的结果是-1。所以打算思考一下这个问题。…

机器学习面试——逻辑回归和线性回归

1、什么是广义线性模型(generalize linear model)? 普通线性回归模型是假设X为自变量,Y为因变量,当X是一维的,y是一维的,共进行n次观测,则 其中,w是待估计的参数&#x…

洛谷P3205合唱队——区间DP

题目&#xff1a;https://www.luogu.org/problemnew/show/P3205 枚举点&#xff0c;分类为上一个区间的左端点或右端点&#xff0c;满足条件便即可&#xff1b; 注意不要重复(当l2时)。 代码如下&#xff1a; #include<iostream> #include<cstdio> using namespace…

远程连接server问题

开启Windows防火墙后&#xff0c;当远程连接Server服务器时被拒绝&#xff0c;其解决方法如下&#xff1a;1、启动Windows防火墙。开始 > 设置 > 控制面板 > Windows防火墙。缺省情况下&#xff0c;防火墙是启用的&#xff0c;这是推荐的设置。2、点击“例外”选项卡。…

STM32开发环境

STM32开发环境 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 一、MDK安装 MDK 是一个集代码编辑&#xff0c;编译&#xff0c;链接和下载于一体的集成开发环境&#xff08; KDE &#xff09;。MDK 这个名字我们可能不熟悉&#xff0c;但说到 KEIL …

看完「大江大河2」

昨晚熬夜看完&#xff0c;说下自己的想法虽然不能做到百分之百的感同身受&#xff0c;但是确实被剧中的情景所感染&#xff0c;想做成大事情&#xff0c;需要经历的磨难一定也会很大&#xff0c;正如很多年前老水打篮球说的那句「管理人&#xff0c;远远比技术更难」。相比于老…

机器学习面试——XGBoost,GBDT,RF(上)

1、常见的集成思想 bagging&#xff1a;基学习器之间并行训练&#xff0c;且学习器之间没有依赖&#xff0c;像是集体决策的过程&#xff0c;每个个体都进行单独学习&#xff0c;再通过投票的方式做最后的集体决策。常见的算法有随机森林 boosting&#xff1a;基学习器之间串…

一个女程序员的创业人生:胆识也是一种能力 作者:秋镇菜

我在28岁生日那天电信一个副总劝我出来开公司算了&#xff0c;然后想了一天第二天就去工商局注册了&#xff0c;从有开公司的想法到工商局注册仅仅一天时间&#xff01;然后2003年8 月份拿到营业执照&#xff0c;根本不知道安全是怎么一回事情&#xff0c;找北大方正一个技术副…

[SDOI2016]排列计数

Description 求有多少种长度为 n 的序列 A&#xff0c;满足以下条件&#xff1a;1 ~ n 这 n 个数在序列中各出现了一次若第 i 个数 A[i] 的值为 i&#xff0c;则称 i 是稳定的。序列恰好有 m 个数是稳定的满足条件的序列可能很多&#xff0c;序列数对 10^97 取模。Input 第一行…

听说有人不了解柔性数组

1 引言 定长数组包在平时的开发中&#xff0c;缓冲区数据收发时&#xff0c;如果采用缓冲区定长包&#xff0c;假定大小是 1k&#xff0c;MAX_LENGTH 为 1024。结构体如下&#xff1a;// 定长缓冲区 struct max_buffer {int len;char data[MAX_LENGTH]; };数据结构的大小 &…

STM32启动文件——startup_stm32f10x_hd.s

STM32启动文件——startup_stm32f10x_hd.s 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 一、启动文件的作用 &#xff08;关于启动代码的作用&#xff0c;前面已经提到过了&#xff0c;这里再啰嗦一下&#xff09; &#xff08;1&#xff09;初始化…

Transformer模型拆解分析

资源来自&#xff1a;DataWhale 学习资料 最近看了DataWhale 的Transformer图解&#xff0c;突然对Transformer的结构图有了更加清晰的理解&#xff0c;特此记录。 1、大框架 Transformer是由6个encoder和6个decoder组成&#xff0c;模型的具体实现是model变量里边&#xff0…

设计模式学习笔记六:.NET反射工厂

1&#xff0e; 简述 通过前面的学习&#xff0c;我们以传统的方式实现了简单工厂&#xff0c;工厂方法和抽象工厂&#xff0c;但是有些场合下如此处理&#xff0c;代码会变得冗余并且难以维护。假设我们要创建交通工具。可以是汽车&#xff0c;火车&#xff0c;轮船等&#xff…

在unity 中,使用http请求,下载文件到可读可写路径

在这里我用了一个线程池&#xff0c;线程池参数接收一个带有object参数的&#xff0c;无返回值的委托 &#xff0c;下载用到的核心代码&#xff0c;网上拷贝的&#xff0c;他的核心就是发起一个web请求&#xff0c;然后得到请求的响应&#xff0c;读取响应的流 剩下的都是常见的…

在tinyalsa上抓取音频

我们经常会遇到这样的问题&#xff0c;应用读取到的音频有问题&#xff0c;需要在tinyalsa里面读取音频来确认是底层音频有问题&#xff0c;还是应用处理之后存在的问题。所以&#xff0c;这个patch就出现了代码的逻辑很简单&#xff0c;主要是在pcm_read的时候&#xff0c;同时…

STM32——GPIO(1)

STM32——GPIO 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 【对单片机的操作就是控制IO口】 一、GPIO&#xff08;通用输入输出口&#xff09; 1、选定需要的引脚&#xff08;对应哪一个IO口&#xff09;&#xff1b; 2、配置需要的功能&#xf…

数据库实操——pandas写入数据库数据

1、Mysql &#xff08;1&#xff09;插入数据 因为pymysql不识别除%s之外的其他字符&#xff0c;例如%d&#xff0c;%f&#xff0c;因此&#xff0c;将sql语句的values全部设置为%s def insertdata(data,table_name,connect):c_name str(data.columns.tolist()).replace(&q…