赞
踩
之前写了几篇原理性的文章,先列一个目录好了。
【机器学习】SVM之Hinge Loss,从LR到SVM,SVM核函数进一步理解
写的还算详细,原理与推导具体可以参照以上。不过还差了一篇关于SMO优化算法的学习笔记,之后补上。
接下来主要是总结一下SVM的一些零散trick及注意事项。
SVM是一种二分类模型。它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器。(间隔最大化是它的独特之处),通过该超平面实现对未知样本集的分类。
意义:原始样本空间中可能不存在这样可以将样本正确分为两类的超平面,但是我们知道如果原始空间的维数是有限的,也就是说属性数是有限的,则一定存在一个高维特征空间能够将样本划分。SVM通过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优分离超平面,从而把平面上本身无法线性可分的数据分开。核函数的真正意义是做到了没有真正映射到高维空间却达到了映射的作用,即减少了大量的映射计算。
种类:参见【机器学习】SVM核方法
选择:
当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。感知机或神经网络等利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强。
所以我们常说的鲁棒性其实是主要是体现在对Outlier(异常点、离群点)上。
这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM没有处理缺失值的策略(决策树有)。而SVM希望样本在特征空间中线性可分,若存在缺失值它们在该特征维度很难正确的分类(例如SVM要度量距离(distance measurement),高斯核,那么缺失值处理不当就会导致效果很差),所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。
SVM的空间消耗主要是在存储训练样本和核矩阵,由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的及其内存和运算时间。如果数据量很大,SVM的训练时间就会比较长,所以SVM在大数据的使用中比较受限。
过拟合是什么就不再解释了。SVM其实是一个自带L2正则项的分类器。SVM防止过拟合的主要技巧就在于调整软间隔松弛变量的城发因子C。C越大表明越不能容忍错分,当无穷大时则退化为硬间隔分类器。合适的C大小可以照顾到整体数据而不是被一个Outlier给带偏整个判决平面。至于C大小的具体调参通常可以采用交叉验证来获得。每个松弛变量对应的惩罚因子可以不一样。
样本偏斜是指数据集中正负类样本数量不均,比如正类样本有10000个,负类样本只有100个,这就可能使得超平面被“推向”负类(因为负类数量少,分布得不够广),影响结果的准确性。
对于样本偏斜(样本不平衡)的情况,在各种机器学习方法中,我们有针对样本的通用处理办法:如何解决机器学习中数据不平衡问题。
仅在SVM中,我们可以通过为正负类样本设置不同的惩罚因子来解决样本偏斜的问题。具体做法是为负类设置大一点的惩罚因子,因为负类本来就少,不能再分错了,然后正负类的惩罚因子遵循一定的比例(如下文三种情况所述),具体值要通过实验确定。
作者:就是杨宗
链接:https://www.jianshu.com/p/8a499171baa9
來源:简书
From:SVM多类分类方法
SVM多类分类方法的实现根据其指导思想大致有两种:
1)将多类问题分解为一系列SVM可直接求解的两类问题,基于这一系列SVM求解结果得出最终判别结果。
2)通过对前面所述支持向量分类机中的原始最优化问题的适当改变,使得它能同时计算出所有多类分类决策函数,从而“一次性”地实现多类分类。原始问题可以改写为:
虽然第2)种指导思想看起来简单,但是由于它的最优化问题求解过程太复杂,计算量太大,实现起来比较困难,因此未被广泛应用。而基于1)种指导思想的SVM多类分类方法主要有5种。
1、一对其余法(One Vs All || One Vs Rest)
一类对余法(One versus rest,OVR)是最早出现也是目前应用最广泛的方法之一,其步骤是构造k个两类分类机(设共有k个类别),其中第i个类为正类,其余类别点为负类进行训练。判别时,输入信号分别经过k个分类机共得到k个输出值
这种方法的优点是,对k类问题,只需要训练k个两类分类支持向量机,故其所得到的分类函数的个数(k个)较少,其分类速度相对较快。
2、 一对一(One Vs One,Libsvm用的就是这个策略)
该方法在每两类之间训练一个分类器,因此对于一个k类问题,将有
3、DAG方法(有向无环图)
DAG-SVMS是由PIatt提出的决策导向的循环图DAG导出的,是针对“一对一”SVMS存在误分,拒分现象提出的。这种方法的训练过程类似于“一对一”方法,k类别问题需要求解
DAG-SVMS简单易行,只需要使用k-1个决策函数即可得出结果,较“一对一”方法提高了测试速度,而且不存在误分、拒分区域;另外,由于其特殊的结构,故有一定的容错性(体现在最后一层得出分类时,一个样本的类别判定依据可以来自两个SVM),分类精度较一般的二叉树方法高。然而,由于存在自上而下的“误差累积”现象是层次结构固有弊端,DAG-SVMS也逃脱不掉。即如果在某个节点上发生了分类错误,则会把分类错误延续到该结点的后续结点上。
4、层次支持向量机(决策树方法)
决策树的基本思想是从根节点开始,采用某种方法将该结点所包含的类别划分为两个子类,然后再对两个子类进一步划分,如此循环,直到子类中只包含一个类别为止。这样就得到一个倒立的二叉树。最后,在二叉树各决策节点训练支持向量机分类器,实现对识别样本的分类。决策树支持向量机多分类方法有很多种,不同方法的主要区别在于设计树结构的方法不同。
完全二叉树结构分类时使用的平均分类器数目为
5、纠错输入编码法(ECOC)
对于K类分类问题,可以根据不同方法构造一系列的两类分类问题,对于每个两类分类问题可以建立一决策函数。共得到L个决策函数,如果这些决策数完全正确,K类中的每一类都对应一个元素为-1或+1的长度为L的序列,按照K类中的第一类、第二类,......,第K类的顺序,把这些数列排列起来,便可以得到一个K行L列的编码矩阵,若要判断一个测试输入点的归属,首先用所得到的L个决策函数,得到一个元素为-1或1的长度为L的数列,然后将此数列与先前得到矩阵比较,相应于矩阵中有一行且仅有一行向与此数列相同,这个行数就是输入点的归属类;若矩阵中没有一行与该数列相同,可以通过计算汉明距离(汉明距离度量了通过替换字符的方式将字符串x变成y所需要的最小的替换次数)找出最近的一行,该行对应的类别即为该样本的类别。
优点:
①增、删非支持向量样本对模型没有影响;
②支持向量样本集具有一定的鲁棒性;
③有些成功的应用中,SVM 方法对核的选取不敏感
SVM 是一种有坚实理论基础的新颖的小样本学习方法。它基本上不涉及概率测度及大数定律等,因此不同于现有的统计方法。从本质上看,它避开了从归纳到演绎的传统过程,实现了高效的从训练样本到预报样本的“转导推理”,大大简化了通常的分类和回归等问题。
缺点:
参考文章:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。