SVM面试题

SVM 为什么采用间隔最大化

当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。另一方面,分类中的主要问题之一是类不平衡问题。当采用误分类作为损失函数时,容易受到类不平衡问题的影响,如二分类中有90%的数据属于A类,10%的数据属于B类,误分类是10%,这时的这个决策面是好还是不好?但是SVM采用间隔最大化就可以避免这类问题,因为它只受支持向量影响,鲁棒性强,不易过拟合。此时的分隔超平面所产生的分类结果是最鲁棒的对未知实例的泛化能力最强。可以借此机会阐述一下几何间隔以及函数间隔的关系。


为什么要将求解 SVM 的原始问题转换为其对偶问题

  • 对偶问题往往更易求解,当我们寻找约束存在时的最优点的时候,约束的存在虽然减小了需要搜寻的范围,但是却使问题变得更加复杂。为了使问题变得易于处理,我们的方法是把目标函数和约束全部融入一个新的函数,即拉格朗日函数,再通过这个函数来寻找最优点。
  • 可以自然引入核函数,进而推广到非线性分类问题。

为什么 SVM 要引入核函数

当样本在原始空间线性不可分时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。而引入这样的映射后,所要求解的对偶问题的求解中,无需求解真正的映射函数,而只需要知道其核函数(因为SVM的解只涉及两个样本点的内积)。核函数的定义:2 SVM - 图1%3D%3C%CF%95(x)%2C%CF%95(y)%3E#card=math&code=K%28x%2Cy%29%3D%3C%CF%95%28x%29%2C%CF%95%28y%29%3E&id=V2iU6),即在特征空间的内积等于它们在原始样本空间中通过核函数K计算的结果。一方面数据变成了高维空间中线性可分的数据,另一方面不需要求解具体的映射函数,只需要给定具体的核函数即可,这样使得求解的难度大大降低。


为什么SVM对缺失数据敏感

  • SVM 没有处理缺失值的策略
  • SVM的效果和支持向量点有关,缺失值可能影响支持向量点的分布

    这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM 没有处理缺失值的策略。而 SVM 希望样本在特征空间中线性可分,所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。


SVM 核函数之间的区别

SVM 核函数一般选择线性核高斯核(RBF 核)

  • 线性核
    • 主要用于线性可分的情形,参数少,速度快,对于一般数据,分类效果已经很理想了。
    • 如果 Feature 的数量很大,跟样本数量差不多,这时候选用线性核的 SVM。
  • RBF 核
    • 主要用于线性不可分的情形,参数多,分类结果非常依赖于参数。
    • 如果 Feature 的数量比较小,样本数量一般,不算大也不算小,选用高斯核的 SVM。

SVM与感知机的联系?

  • 相同点
    • 都是用于分类的监督学习算法
  • 不同点
    • 损失函数:感知机采用的是误分类,易造成过拟合。SVM采用间隔最大化(合页损失函数),一定程度上避免过拟合。
    • 优化方法:感知机采用梯度下降法,SVM采用不等式约束结合拉格朗日乘子。
    • 超平面数量:感知机解有多个,SVM只有一个解。
    • 线性非线性分类:感知机只用于线性分类,SVM可用于线性和非线性分类。

SVM的原理是什么?

SVM 是一种二类分类模型。它的基本模型是在特征空间中寻找间隔最大化分离超平面的线性分类器

  • 当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;
  • 当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;
  • 当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。

SVM如何处理多分类问题?

一对多:就是对每个类都训练出一个分类器,设定为目标类为一类,其余类为另外一类。这样针对k个类可以训练出k个分类器,当有一个新的样本来的时候,用这k个分类器来测试,那个分类器的概率高,那么这个样本就属于哪一类。
一对一:任意两个类训练出一个分类器,如果有k类,一共训练出2 SVM - 图2#card=math&code=C%282%2Ck%29&id=bu3Z0) 个分类器,这样当有一个新的样本要来的时候,用这2 SVM - 图3#card=math&code=C%282%2Ck%29&id=YcdA3)个分类器来测试,每当被判定属于某一类的时候,该类就加一,最后票数最多的类别被认定为该样本的类。

SMO算法的作用和理解

支持向量机的学习问题可以转化为求解凸二次规划的问题,这样的凸二次规划问题具有全局最优解,并且有许多优化算法可以用于求解这一问题。但是当训练样本容量很大时,这些算法往往就变得低效,以至于无法使用。

序列最小优化算法(SM0)就是解凸二次规划的对偶问题:
SMO算法是一种启发式算法,它是支持向量机的一种快速算法,其特点是不断地将二次规划问题分解为只有两个变量地二次规划问题,并对子问题进行解析求解,直到所有变量满足KKT条件为止。这样通过启发式地方法得到原二次规划问题地最优解。因为子问题有解析解,所以每次计算子问题都很快,虽然子问题次数很多,但在总体上还是高效地。
https://blog.csdn.net/luoshixian099/article/details/51227754#commentBox

高斯核为什么会把原始维度映射到无穷多维?

image.png

SVM在应用高斯核时是否需要对特征归一化?

可以对特征进行归一化,这样就可以用新的特征建模。但在类别变量中,特征归一化有时是不可行的,比如类别变量用one-hot编码,则只有0和1两个数字,此时就没有必要进行归一化,所以归一化并不总是有效的。

假设在SVM中使用RBF核,若核的参数γ过高,意味着什么?

RBF核:2 SVM - 图5
SVM调优中的参数γ表示超平面附近或远离超平面的点的影响。
当γ越小,模型建模时将考虑训练集中的所有点,无法捕捉真正的超平面形状;γ 越大,模型建模时只考虑超平面附近的点,将能够捕捉到数据集的形状。
在后面会给大家介绍SVM中对偶性以及损失函数方面的问题。

LR与SVM怎么选择


https://blog.csdn.net/ningyanggege/article/details/84950961
LR缺点:需要手动做特征组合
SVM:大样本训练慢,因为SMO算法

SVM优缺点

  • 优点
    • 有严格的数学理论支持,可解释性强,不依靠统计方法,从而简化了通常的分类和回归问题;
    • 能找出对任务至关重要的关键样本(即:支持向量);
    • 采用核技巧之后,可以处理非线性分类/回归任务;
    • 最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”
  • 缺点
    • 训练时间长。当采用 SMO 算法时,由于每次都需要挑选一对参数,因此时间复杂度为 O(N^2),其中 N 为训练样本的数量;
    • 当采用核技巧时,如果需要存储核矩阵,则空间复杂度为O(N^2)
    • 模型预测时,预测时间与支持向量的个数成正比。当支持向量的数量较大时,预测计算复杂度较高。(因此支持向量机目前只适合小批量样本的任务,无法适应百万甚至上亿样本的任务。