【机器学习】支持向量机面试知识点小结

之前写了几篇原理性的文章,先列一个目录好了。

【数学基础】拉格朗日乘子法

【数学基础】KKT条件

【数学基础】拉格朗日对偶

【机器学习】SVM线性可分

【机器学习】SVM基本线性可分与多分类

【机器学习】SVM核方法

【机器学习】SVM之Hinge Loss,从LR到SVM,SVM核函数进一步理解

【机器学习】SVM之回归模型

写的还算详细,原理与推导具体可以参照以上。不过还差了一篇关于SMO优化算法的学习笔记,之后补上。

接下来主要是总结一下SVM的一些零散trick及注意事项。


SVM原理小结

SVM是一种二分类模型。它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器。(间隔最大化是它的独特之处),通过该超平面实现对未知样本集的分类。

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

SMO算法三个细节性问题

  1. 如何选择每次优化的两个\alpha
  2. 如何更新选中的\alpha
  3. SMO的终止条件是什么?

SVM核函数意义、种类与选择

意义:原始样本空间中可能不存在这样可以将样本正确分为两类的超平面,但是我们知道如果原始空间的维数是有限的,也就是说属性数是有限的,则一定存在一个高维特征空间能够将样本划分。SVM通过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优分离超平面,从而把平面上本身无法线性可分的数据分开。核函数的真正意义是做到了没有真正映射到高维空间却达到了映射的作用,即减少了大量的映射计算。

种类:参见【机器学习】SVM核方法

选择

  • 利用专家先验知识选定核函数,例如已经知道问题是线性可分的,就可以使用线性核,不必选用非线性核。
    • 如果特征的数量大到和样本数量差不多,则选用线性核函数SVM或LR。
    • 如果特征的数量小,样本的数量正常,则选用高斯核函数SVM。
    • 如果特征的数量小,样本数量很多,由于求解最优化问题的时候,目标函数涉及两两样本计算内积,使用高斯核明显计算量会大于线性核,所以手动添加一些特征,使得线性可分,然后可以用LR或者线性核的SVM;
  • 利用交叉验证,试用不同的核函数,误差最小的即为效果最好的核函数。
  • 混合核函数方法,将不同的核函数结合起来。

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

  • 无论原始问题是否是凸的,对偶问题都是凸优化问题;
  • 对偶问题可以给出原始问题一个下界;
  • 当满足一定条件(KKT条件或Slater条件)时,原始问题与对偶问题的解是完全等价的;
  • 可以自然引入核函数。

SVM为什么采用间隔最大化

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

SVM对噪声敏感

  1. 少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。这种“鲁棒”性主要体现在:
    • 增、删非支持向量样本对模型没有影响;
    • 支持向量样本集具有一定的鲁棒性;
    • 有些成功的应用中,SVM 方法对核的选取不敏感
  2. 但当噪声出现的过多,以及当噪声出现并成为支持向量时,那么噪声对模型对影响是巨大的。所以此时SVM对噪声不具备鲁棒性!以下两种情况会增大噪声成为支持向量的概率:
    • 噪声数量太多
    • 噪声以新的分布形式出现,与原先样本集的噪声分布表现的相当不同。此时噪声也有大概率落在最大分类间隔中间,从而成为支持向量,大大影响模型。

所以我们常说的鲁棒性其实是主要是体现在对Outlier(异常点、离群点)上。

SVM缺失值影响

这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM没有处理缺失值的策略(决策树有)。而SVM希望样本在特征空间中线性可分,若存在缺失值它们在该特征维度很难正确的分类(例如SVM要度量距离(distance measurement),高斯核,那么缺失值处理不当就会导致效果很差),所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。

SVM在大数据上有哪些缺陷

SVM的空间消耗主要是在存储训练样本和核矩阵,由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的及其内存和运算时间。如果数据量很大,SVM的训练时间就会比较长,所以SVM在大数据的使用中比较受限。

SVM之防止过拟合以及如何调节惩罚因子C

过拟合是什么就不再解释了。SVM其实是一个自带L2正则项的分类器。SVM防止过拟合的主要技巧就在于调整软间隔松弛变量的城发因子C。C越大表明越不能容忍错分,当无穷大时则退化为硬间隔分类器。合适的C大小可以照顾到整体数据而不是被一个Outlier给带偏整个判决平面。至于C大小的具体调参通常可以采用交叉验证来获得。每个松弛变量对应的惩罚因子可以不一样。

SVM中样本偏斜的处理方法

样本偏斜是指数据集中正负类样本数量不均,比如正类样本有10000个,负类样本只有100个,这就可能使得超平面被“推向”负类(因为负类数量少,分布得不够广),影响结果的准确性。

对于样本偏斜(样本不平衡)的情况,在各种机器学习方法中,我们有针对样本的通用处理办法:如何解决机器学习中数据不平衡问题

仅在SVM中,我们可以通过为正负类样本设置不同的惩罚因子来解决样本偏斜的问题。具体做法是为负类设置大一点的惩罚因子,因为负类本来就少,不能再分错了,然后正负类的惩罚因子遵循一定的比例(如下文三种情况所述),具体值要通过实验确定。

  1. 首先,如果是因为采样得到的样本不够多样性或者数量不够而导致的样本偏斜(分布范围不均),可以通过衡量正负类分布的程度来确定惩罚因子的比例。比如计算它们在空间中占据的体积,例如给负类找一个超球(就是高维空间里的球),它要包含所有负类的样本,再给正类找一个,比较两个球的半径,就可以大致确定分布的情况。显然半径大的分布比较广,就给小一点的惩罚因子。
  2. 但是,如果是因为正负类本身性质所导致的分布范围不均,此时即使超球半径差异很大,也不应该赋予两个类别不同的惩罚因子。例如文本分类中,某些话题涉及的面很窄,例如计算机类的文章就明显不如文化类的文章那么“天马行空”,这就会导致它们的超球半径差异很大,但这是由它们自身性质决定的,与样本多样性和数量多少无关,换言之,这个时候不存在样本偏斜的问题。
  3. 但是,实际中我们不会这么做,因为实在太麻烦了,当正负类数量不均时,比如正负类数量比为100:1,则惩罚因子的比例直接就定为1:100(libsvm中就是这么做的)。

作者:就是杨宗
链接:https://www.jianshu.com/p/8a499171baa9
來源:简书

SVM的支持向量

  • 在分类问题中,分线性可分和基本线性可分两种情况讨论:
    • 在线性可分SVM中,那些距离决策超平面最近的向量(间隔边界上的向量)就是支持向量。
    • 在基本线性可分SVM中,支持向量分三种,1、在决策超平面间隔边界上的向量。2、在决策超平面上的向量。3、误分类的样本向量。
  • 在回归问题中,支持向量是那些在tube边界及之外的向量,模型的参数也仅由这些支持向量决定。

SVM处理多分类

From:SVM多类分类方法

SVM多类分类方法的实现根据其指导思想大致有两种:

1)将多类问题分解为一系列SVM可直接求解的两类问题,基于这一系列SVM求解结果得出最终判别结果。

2)通过对前面所述支持向量分类机中的原始最优化问题的适当改变,使得它能同时计算出所有多类分类决策函数,从而“一次性”地实现多类分类。原始问题可以改写为:

SVMå¤ç±»åç±»æ¹æ³ - çèå¹² - çèå¹²çå客

虽然第2)种指导思想看起来简单,但是由于它的最优化问题求解过程太复杂,计算量太大,实现起来比较困难,因此未被广泛应用。而基于1)种指导思想的SVM多类分类方法主要有5种。

1、一对其余法(One Vs All || One Vs Rest)

一类对余法(One versus rest,OVR)是最早出现也是目前应用最广泛的方法之一,其步骤是构造k个两类分类机(设共有k个类别),其中第i个类为正类,其余类别点为负类进行训练。判别时,输入信号分别经过k个分类机共得到k个输出值f_i(x)=sign(g_i(x)),若只有一个+1出现,则其对应类别为输入信号类别;实际情况下构造的决策函数总是有误差的,若输出不只一个+1(不只一类声称它属于自己),或者没有一个输出为+1(即没有一个类声称它属于自己),则比较g(x)输出值,最大者对应类别为输入的类别。

这种方法的优点是,对k类问题,只需要训练k个两类分类支持向量机,故其所得到的分类函数的个数(k个)较少,其分类速度相对较快。

2、 一对一(One Vs One,Libsvm用的就是这个策略)

该方法在每两类之间训练一个分类器,因此对于一个k类问题,将有{k*(k-1)/ 2}个分类函数。当对一个未知样本进行分类时,每个分类器都对其类别进行判断。并为相应的类别“投上一票”,最后得票最多的类别即作为该未知样本的类别。决策阶段采用投票法,可能存在多个类的票数相同的情况,从而使未知样本同时属于多个类别,影响分类精度。

3、DAG方法(有向无环图)

DAG-SVMS是由PIatt提出的决策导向的循环图DAG导出的,是针对“一对一”SVMS存在误分,拒分现象提出的。这种方法的训练过程类似于“一对一”方法,k类别问题需要求解{k*(k-1)/ 2}个支持向量机分类器,这些分类器构成一个有向无环图。该有向无环图中含有{k*(k-1)/ 2}个内部节点和k个叶节点,每个节点对应一个二类分类器。

SVMå¤ç±»åç±»æ¹æ³ - çèå¹² - çèå¹²çå客

DAG-SVMS简单易行,只需要使用k-1个决策函数即可得出结果,较“一对一”方法提高了测试速度,而且不存在误分、拒分区域;另外,由于其特殊的结构,故有一定的容错性(体现在最后一层得出分类时,一个样本的类别判定依据可以来自两个SVM),分类精度较一般的二叉树方法高。然而,由于存在自上而下的“误差累积”现象是层次结构固有弊端,DAG-SVMS也逃脱不掉。即如果在某个节点上发生了分类错误,则会把分类错误延续到该结点的后续结点上。

4、层次支持向量机(决策树方法)

决策树的基本思想是从根节点开始,采用某种方法将该结点所包含的类别划分为两个子类,然后再对两个子类进一步划分,如此循环,直到子类中只包含一个类别为止。这样就得到一个倒立的二叉树。最后,在二叉树各决策节点训练支持向量机分类器,实现对识别样本的分类。决策树支持向量机多分类方法有很多种,不同方法的主要区别在于设计树结构的方法不同。

SVMå¤ç±»åç±»æ¹æ³ - çèå¹² - çèå¹²çå客

完全二叉树结构分类时使用的平均分类器数目为\log_2k,偏二叉树使用的平均分类器数为(k+1)/2-1/k,具有其他层次结构的二叉树使用的分类器平均值介于二者之间。完全二叉树分类时所需要的分类器数目最少,因此具有较少支持向量的完全二叉树分类器速度也是比较快的。

5、纠错输入编码法(ECOC)

对于K类分类问题,可以根据不同方法构造一系列的两类分类问题,对于每个两类分类问题可以建立一决策函数。共得到L个决策函数,如果这些决策数完全正确,K类中的每一类都对应一个元素为-1或+1的长度为L的序列,按照K类中的第一类、第二类,......,第K类的顺序,把这些数列排列起来,便可以得到一个K行L列的编码矩阵,若要判断一个测试输入点的归属,首先用所得到的L个决策函数,得到一个元素为-1或1的长度为L的数列,然后将此数列与先前得到矩阵比较,相应于矩阵中有一行且仅有一行向与此数列相同,这个行数就是输入点的归属类;若矩阵中没有一行与该数列相同,可以通过计算汉明距离(汉明距离度量了通过替换字符的方式将字符串x变成y所需要的最小的替换次数)找出最近的一行,该行对应的类别即为该样本的类别。

SVM优缺点

优点

  1. 非线性映射是SVM方法的理论基础,SVM利用内积核函数代替向高维空间的非线性映射
  2. 对特征空间划分的最优超平面是SVM的目标,最大化分类边际的思想是SVM方法的核心;
  3. 支持向量是SVM的训练结果,在SVM分类决策中起决定作用的是支持向量;
  4. SVM 的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。
  5. 小样本集上分类效果通常比较好。
  6. 少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。这种“鲁棒”性主要体现在:

    ①增、删非支持向量样本对模型没有影响;

    ②支持向量样本集具有一定的鲁棒性;

    ③有些成功的应用中,SVM 方法对核的选取不敏感

  7. SVM 是一种有坚实理论基础的新颖的小样本学习方法。它基本上不涉及概率测度及大数定律等,因此不同于现有的统计方法。从本质上看,它避开了从归纳到演绎的传统过程,实现了高效的从训练样本到预报样本的“转导推理”,大大简化了通常的分类和回归等问题。

缺点

  1. SVM算法对大规模训练样本难以实施。由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间(上面有讲)。有比较多的改进算法及分布式的方法研究(以后补上)。
  2. 用SVM解决多分类问题存在困难。传统的SVM就是解决二分类问题的,上面有介绍不少解决多分类问题的SVM技巧,不过各种方法都一定程度上的缺陷。
  3. 对缺失值敏感,核函数的选择与调参比较复杂。

参考文章:

支持向量机(SVM)的优缺点

猜你喜欢

转载自blog.csdn.net/qq_32742009/article/details/81838152