机器学习面经 - SVM

简介

支持向量机(Support Vector Machine,SVM)是一种常见的监督学习算法,用于分类和回归任务。它在机器学习中被广泛应用,尤其在处理复杂数据集和解决非线性问题时表现出色。SVM的核心思想是找到一个最优的超平面(在二维空间中是一条直线,在多维空间中是一个超平面),将不同类别的样本点分开得足够远。这个超平面的选取是基于支持向量,也就是离超平面最近的训练样本点。SVM的目标是使这些支持向量到超平面的距离最大化,从而提高分类的鲁棒性。
下面是一些常见的面试题归纳:

Q:请简单介绍一下什么是svm,一般是用来干嘛的?

答:SVM也叫支持向量机,是一类按监督学习方式对数据进行二元分类的广义线性分类器,比如说分为1或者-1。我们用SVM的目的不是说只是为了区分现有的两类数据,我们真正想要达到的目的是: 当模型在现有数据训练完成后, 将其应用到新的(同种)数据时,我们仍然可以很好的区分两类数据,达到预期的分类效果,也就是泛化能力。当有了泛化要求后,肯定存在一条线或者一个平面的泛化能力最好。SVM要找的就是这条线或者这个超平面。具体来讲,有三种情况(不加核函数的话就是个线性模型,加了之后才会升级为一个非线性模型):1.当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机。2.当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机。3.当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。

Q:请介绍一下什么是SVM的硬间隔和软间隔?

答:硬间隔就是需要最小化参数w;软间隔就是引入了松弛变量;最理想的状态,即两类数据泾渭分明,可以直接用硬间隔来表示,但是在实际情况中在两边缘之间还有数据点散落,如果我们一定要找一条区分两种类别的一个超平面似不可能了, 而且也完全没必要,可能找到的话也是发生过拟合,所以我们的在训练时,允许超平面有一定的错误率,即允许少量数据点跑到两边缘间隔之间。这样妥协的好处就是我们还会找到边缘间隔相对较大的超平面,因此在测试数据上会有更好的表现。我们把这样的间隔称为软间隔。

Q:SVM硬间隔的目标函数是什么,请结合公式解释?

答:SVM的硬间隔有两个目标,一个是间隔最大化,第二个是使样本分类正确,由此可以推出目标函数:
在这里插入图片描述

Q:SVM为什么采用间隔最大化,它与我们熟知的感知机有什么区别?

答:当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强。

Q:SVM中对偶的目的?

答:对偶的概念:一般情况下对偶问题给出主问题最优值的下界,在强对偶性成立的情况下由对偶问题可以得到主问题的最优下界,对偶问题是凸优化问题,可以进行较好的求解,SVM 中就是将原始问题转换为对偶问题进行求解,从而进一步引入核函数的思想。
目的有两个:一是方便核函数的引入;二是对偶问题相对于原问题更容易求解,原问题的求解复杂度与特征的维数相关,而转成对偶问题后只与问题的变量个数有关。由于SVM的变量个数为支持向量的个数,相较于特征维数较少,因此转对偶问题。再通过拉格朗日乘子法使带约束的优化目标转为不带约束的优化函数。 原始问题指的是先对拉格朗⽇乘⼦求最⼤值在对w和b求最⼩值,对偶问题求解顺序是相反的。原始问题的算法复杂度是与特征维度(w的维度)相关的,对偶问题的算法复杂度是与样本维度(拉格朗⽇乘⼦维度)相关的,其实可以不转化,之所以要转换是因为特征维度⽐样本维度要⾼。转化为对偶问题的使⽤场景⼀般都是⾮线性分类,如:使⽤⾼斯核函数将特征映射到⽆穷维。⼀般来说使⽤线性核进⾏分类解决原始问题即可。

Q:请介绍SMO算法的思想?

答:SMO算法的思想和坐标上升法类似,坐标上升算法每次通过更新多元函数中的一维,经过多次迭代直到收敛来达到优化函数的目的。简单的讲就是不断地选中一个变量做一维最优化,其他变化作为常数项,直到函数达到局部最优点;与坐标上升算法不同的是,我们在SMO算法中我们每次需要选择一对变量(ai,aj), 因为在SVM中,我们的a并不是完全独立的,而是具有约束的。SMO算法的基本思路是每次选择两个变量ai和aj,选取的两个变量所对应的样本之间间隔要尽可能大,因为这样更新会带给目标函数值更大的变化。SMO算法之所以高效,是因为仅优化两个参数的过程实际上仅有一个约束条件,其中一个可由另一个表示,这样的二次规划问题具有闭式解。

Q:SVM中核函数本质,带核函数的SVM为什么可以解决非线性问题?

答:原始样本空间可能会线性不可分,这样需要将原始空间映射到一个更高维的特征空间,使得样本在这个特征空间线性可分,这个时候核函数出现了; 核函数的本质:核函数的本质是两个函数的內积,而这个函数在SVM 中可以表示成对于输入值的高维映射,也就是说,核函数就是一个函数,接收两个变量,这两个变量是在低维空间中的变量,而核函数求的值等于将两个低维空间中的向量映射到高维空间后的内积。所以需要注意的是,核函数不是用来做映射的。而是因为样本映射到高维空间后的内积求解通常是困难的,引入核函数可简化内积的计算。所以为什么带核函数的SVM为什么可以解决非线性问题?是因为当样本在原始空间线性不可分时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。而引入这样的映射后,所要求解的对偶问题的求解中,无需求解真正的映射函数,而只需要知道其核函数。
核函数的定义:K(x,y)=<ϕ(x),ϕ(y)>,即在特征空间的内积等于它们在原始样本空间中通过核函数 K 计算的结果。一方面数据变成了高维空间中线性可分的数据,另一方面不需要求解具体的映射函数,只需要给定具体的核函数即可,这样使得求解的难度大大降低。

Q:什么时候需要使用带核函数的SVM,SVM核函数的选择?

答:当样本的特征很多且维数很高时可考虑用SVM的线性核函数。当样本的数量较多,特征较少时,一般手动进行特征的组合再使用SVM的线性核函数。当样本维度不高且数量较少时,一般优先使用高斯核函数,因为高斯核函数为一种局部性较强的核函数,无论对于大样本还是小样本均有较好的性能且相对于多项式核函数有较少的参数。

Q:SVM可以做回归吗?

答:SVM本身是解决二分类问题的,判断一个东西是什么或者不是,如果直接拿来用当然不能解决回归问题(预测连续值的问题)。但是你可以使用SVR(支持向量回归)来做回归。

Q:如何确定一个函数是不是核函数?核函数需要满足什么性质?

答:要确定一个函数是否是核函数,需要满足以下条件: 正定性:一个函数K(x, y)被称为核函数,如果对于任意的数据点集合{x1, x2, …, xn},对应的核矩阵K_ij = K(xi, xj)都是半正定的。这意味着对于任意的系数集合{c1, c2, …, cn},满足∑(∑c_i * c_j * K(xi, xj)) ≥ 0。 Mercer条件:一个函数K(x, y)被称为核函数,如果它满足Mercer条件。Mercer条件是数学上的一个充分条件,用于确保核矩阵是半正定的。换句话说,Mercer条件保证了在高维空间中存在一个对应于K(x, y)的特征空间映射。

Q:为什么高斯核能够拟合无穷维度

答:如果映射后空间是k维的话,那内积矩阵的秩最大是k。而任给n个互不重合的样本,高斯核的内积矩阵都是满秩的。所以你无论假设k是多少,都能找到n>k,矛盾,所以必须是无限维的。另外也是因为高斯核的表达式为:K(x, y) = exp(-||x - y||^2 / (2 * sigma^2)), 其中,x和y是输入样本,sigma是高斯核函数的带宽参数。因为e^x的泰勒展开是一个无穷多项的式子,因此将泰勒展开式代入高斯核,将会得到一个无穷维度的映射。

Q:SVM和全局数据有关还是局部数据有关?SVM对缺失数据敏感吗?

答:SVM只和分类界限上的支持向量点有关,换而言之只和局部数据有关。 SVM模型涉及到样本点“距离”的度量,如果样本的存在缺失数据,则不能计算该样本和其他样本之间的距离,所以缺失数据会非常重要。但是对异常值不敏感。

Q:请说说SVM和LR的异同?

答:相同:

  1. 用途:SVM和LR都是用于二分类和多分类问题的监督学习算法,即它们都可以用来对数据进行分类预测,都是判别类模型。
  2. 线性分类器:当特征空间是线性可分时,SVM和LR都可以用作线性分类器,找到一个超平面或者决策边界来将不同类别的数据分开。
  3. 参数调节:SVM和LR都有一些超参数需要调节,如SVM中的惩罚参数C和核函数的选择,以及LR中的正则化参数等。

不同:

  1. SVM和LR在处理分类问题时的策略不同。SVM试图找到一个最优的超平面(或者非线性映射)来将不同类别的数据点尽可能远离决策边界,以增加分类的鲁棒性。而LR则是基于概率模型,通过计算样本属于每个类别的概率,并根据概率大小进行分类。
  2. 决策边界:在线性可分的情况下,SVM寻找的决策边界是距离最近的支持向量构成的超平面,而LR寻找的决策边界是一个直线(对于二分类问题)或超平面(对于多分类问题)。
  3. 鲁棒性:SVM通常对噪声和异常值更加鲁棒,因为它试图最大化支持向量与决策边界之间的间隔。而LR对异常值比较敏感,因为它是基于似然函数来进行模型拟合的。
  4. 非线性分类:在非线性分类问题上,SVM可以使用核函数技巧来将数据映射到高维特征空间中,从而实现非线性分类。LR本身是线性模型,对于非线性分类问题需要进行特征工程或引入非线性特征。
  5. 模型解释性:LR提供比较直观的模型解释,可以通过权重系数来理解特征对分类结果的贡献。而SVM由于其间隔最大化的特性,模型解释性相对较差。

Q:什么是参数模型,什么是非参数模型?

答:参数模型:参数模型是指模型的参数个数是有限的,并且这些参数的数量与数据量无关。在参数模型中,模型的形式是固定的,而模型的参数需要通过训练数据进行估计。逻辑回归和支持向量机都属于参数模型,因为它们的模型形式是确定的,并且模型的参数需要通过梯度下降、最大似然估计等方法来学习得到。 非参数模型:非参数模型是指模型的参数个数与数据量相关或者无限增长,模型的形式相对较灵活。在非参数模型中,模型的结构不是固定的,可以根据数据的复杂程度自动调整。例如,核密度估计和决策树等都属于非参数模型。 因此,逻辑回归和支持向量机都是参数模型,而不是非参数模型。它们的模型形式是确定的,模型参数需要通过数据进行学习,使得模型能够对未见过的数据进行预测。

Q: 给你一些数据,你会如何分类?什么时候用svm,什么时候用lr?

答:在给定一份数据时,选择适当的机器学习算法(如逻辑回归、支持向量机或决策树)取决于数据的性质、问题的要求以及实际应用场景。以下是一些常见情况下的建议:

使用逻辑回归(LR)的情况:
二分类问题:当问题是二分类任务时,且数据线性可分或近似线性可分,逻辑回归是一种简单而有效的选择。
概率预测:如果需要得到样本属于某个类别的概率值,而不仅仅是进行二分类决策,逻辑回归是一个合适的选择。
特征重要性:逻辑回归模型的参数(权重系数)可以用于衡量不同特征对于分类结果的相对重要性,因此在需要解释模型的特征重要性时,逻辑回归是一种好的选择。

使用支持向量机(SVM)的情况:
非线性分类问题:当数据在特征空间中不是线性可分时,SVM可以使用核函数来将数据映射到高维特征空间,从而实现非线性分类。
边界最大化:SVM试图找到一个最优的超平面来最大化不同类别之间的间隔,因此在需要边界最大化的情况下,SVM是一个有力的工具。
小样本数据:SVM在小样本数据上表现较好,因为它主要关注支持向量,而不是所有训练样本。

使用决策树的情况:
解释性要求:决策树具有较好的可解释性,模型的决策路径可以很直观地解释为特征的组合条件,因此在需要理解模型决策过程时,决策树是一种合适的选择。
处理离散和连续特征:决策树能够处理离散和连续特征,不需要进行特征缩放或离散化,因此在数据包含不同类型特征时,决策树是一种简便的算法。
非线性关系:决策树可以捕捉非线性关系,因此在数据的类别之间存在复杂的非线性关系时,决策树是一种适合的选择。

Q:特征比数据量还大的时候,一般选择什么分类器?

答:当特征维度比数据量还大的情况下,通常会遇到所谓的“维度灾难”(Curse of Dimensionality)。在这种情况下,数据在高维空间中非常稀疏,导致许多机器学习算法的性能下降。针对这种情况,可以考虑选择以下分类器:

  1. L1正则化的线性模型: 使用L1正则化(Lasso)的线性模型,如逻辑回归(LR)和线性支持向量机(Linear SVM)。L1正则化可以帮助稀疏化特征权重,从而减少模型所需的特征数量,提高模型的泛化能力。

  2. 核方法和非线性降维: 如果特征之间存在复杂的非线性关系,可以考虑使用核方法(如高斯核函数)将数据映射到高维特征空间中,或者使用非线性降维技术(如核主成分分析,Kernel PCA)减少特征维度。

  3. 随机森林和集成学习: 随机森林等集成学习方法通常对高维数据比较鲁棒,它们能够自动选择重要特征,并利用特征子集构建多个弱学习器。

  4. 数据降维: 可以考虑使用主成分分析(PCA)等数据降维技术将高维特征空间转换为较低维的特征空间,以减少维度灾难的影响。

Q:对于维度极低的特征,选择线性还是非线性分类器?

答:非线性分类器,低维空间可能很多特征都跑到一起了,导致线性不可分。 (1)如果特征的数量很大,跟样本数量差不多,这时候选用 LR 或者是 Linear Kernel的SVM。 (2)如果特征的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel。 (3)如果特征的数量比较小,而样本数量很多,需要手工添加一些特征变成第一种情况

Q:SVM损失函数是什么形式,可以用梯度下降优化吗?

答:在SVM中,使用的损失函数是Hinge损失函数。Hinge损失函数是为了在最大间隔分类的目标下,找到一个合适的决策边界。对于二分类的SVM,Hinge损失函数可以表示为: L(y, f(x)) = max(0, 1 - y * f(x)) 其中,y是真实标签(1或-1),f(x)是预测的决策函数的输出,代表样本x在超平面的距离。如果y * f(x) >= 1,则Hinge损失为0,表示样本分类正确。如果y * f(x) < 1,则Hinge损失为非零值,表示样本分类错误。对于多类别的SVM,Hinge损失函数会稍有不同,具体取决于多类别分类的方式(例如One-vs-One或One-vs-Rest等)。 可以使用梯度下降(或其变种)来优化SVM模型的参数,使其最小化Hinge损失函数。通常,使用梯度下降算法来最小化损失函数,以找到最优的超平面(决策边界)和支持向量。需要注意的是,由于Hinge损失函数是非连续和不可导的,因此通常使用次梯度方法来进行梯度下降。次梯度是Hinge损失函数在非可导点的梯度估计,它在可导点给出实际梯度,而在不可导点给出一个介于左导数和右导数之间的值。通过使用次梯度,可以使得梯度下降在非可导点也能进行更新,从而优化SVM模型的参数。

Q:SVM如何处理多分类的问题

答:一对多:就是对每个类都训练出一个分类器,设定为目标类为一类,其余类为另外一类。这样针对k个类可以训练出k个分类器,当有一个新的样本来的时候,用这k个分类器来测试,那个分类器的概率高,那么这个样本就属于哪一类。 一对一:任意两个类训练出一个分类器,如果有k类,一共训练出 个分类器,这样当有一个新的样本要来的时候,用这个分类器来测试,每当被判定属于某一类的时候,该类就加一,最后票数最多的类别被认定为该样本的类。

持续更新中

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

azierrrrrr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值