目录
一、支持向量机原理
1. SVM目标
2. 距离与数据定义
3. 目标函数推导
4. 目标函数求解
4.1 KKT条件
4.2 拉格朗日乘子法——强对偶性
4.3 拉格朗日乘子法—— 求解
4.4 SMO算法——求解max ()
5. 软间隔
6. SVM核变换
二、常见问题
1. LR和SVM区别
2. SVM损失函数
3. SVM的原理是什么?
4. 对偶计算的作用
5. 为什么SVM对缺失数据、噪声敏感
6. SVM如何处理多分类问题
7. SVM如何处理样本不平衡的问题
8. SVM用在大数据的缺陷
9. SVM优缺点
SVM可以用于二分类或多分类,此处以二分类为例。SVM的目标是寻找一个最优化超平面可以在空间中分割两类数据,这个最优化超平面需要满足的条件是:离其最近的点到其的距离最大化。
一句话解释:最大化离超平面最近点(支持向量)到该平面的距离。
点x到空间直线的距离为:
就是标签,假设这里是二分类问题,其值是1和-1,其保证了不论样本属于哪一类,最终值都保证是正数,则有:
由1中的图可知,支持向量到达我们要优化的超平面 的距离就是 ,两侧的距离加起来就是
则目标函数为:
其中min 为找最近的支持向量,argmax为找到什么样的w,b到平面的距离越远越好
假设支持向量到超平面的函数距离设为1,自然其他非最近点的函数距离便是大于1,于是得到不等式约束优化问题:
由于最大值问题不好求解,因此将公式4转换为:
将带约束的优化问题(公式5)转换为不带约束的
分两种情况对公式(6)考虑
(1) 时,为无穷大,无意义
因此公式(6)可转换为(7):
根据KKT条件的强对偶性,转换为(8):
(1)令分别对w,b求偏导,令其等于0:
(2)带入公式(6),得到:
问题变成(9):
(1)求解
SMO的基本思路是先固定之外的参数,然后求上的极值。由于存在约束,若固定之外的其他变量,则可由其他变量导出。
SMO每次选择两个变量和,并固定其他参数,这样,在参数初始化后,SMO不断执行如下两个步骤直至收敛:
那么如何选取和? SMO先选取违背KKT条件程度最大的变量,然后选取一个使目标函数值增长最快的变量。但由于比较各变量所对应的目标函数值增幅的复杂度过高,因此SMO采用了一个启发式:使选取的两变量所对应样本之间的间隔最大。原因是:这样两个变量有较大的差别,与对两个相似的变量进行更新对比,对他们进行更新会给目标函数更大的变化。
SMO算法之所以高效,是因为固定其他参数后,仅优化两个参数的过程能做到十分高效。
可以将 和消掉,只保留,公式(9)就变成了关于 的单变量二次规划问题,约束是 ⩾0 ,有**闭式解**。
(2)求解b
对于任意支持向量都有 ,即公式(11):
理论上,可通过任意支持向量利用式子11求解b,但常用算法:使用所有支持向量求解的平均值
(3)求解w
通过对w偏导公式可得:
至此,解完优化问题。
在现实中往往很难确定训练样本是否线性可分,即便恰好找到某个核函数使训练集在特征空间中线性可分,也很难判定这个结果是不是由于过拟合引起的。缓解该问题的一个办法是允许支持向量机在一些样本上出错,为此,引入“软间隔”。
前面的推导我们要求 ,现在,我们将条件放宽:
得到新的目标函数
C>0为惩罚参数,代表对离群点的重视程度,C越大,越不想丢掉它们
C越大,对误分类的惩罚越大,分类越严格不能出错,越小
C越小,对误分类的惩罚越小。有更大的错误容忍,越大
得到新的目标函数:
核函数的目标是,对于线性不可分函数,找到一种变换的方法,将其从原始特征空间映射到高维空间,则能线性可分。即计算由n维空间变为n*n维空间。
这样超平面变为:
常见的核函数有:
(1)线型核
当样本的特征很多且位数很高时可选用SVM的线型核函数。适用于线性可分的情形,参数少,速度快,对于一般数据,分类效果很理想。
(2)高斯核:
主要用于线性不可分的情形,参数多,分类结果非常依赖与参数,通常采用交叉检验确定最优参数,但是通常比较耗时。
会将原始空间映射为无穷维空间。若很大,则高次特征上的权重实际上衰减的非常快,相当于一个低维子空间;若很小,可将任意数据映射为线性可分,但是随之而来的可能是严重过拟合。通过调整,高斯核具有较高的灵活性
当样本的数量可观且维度不高时,一般优先使用高斯核函数,因为高斯核函数为一种局部性较强的核函数,无论对于大样本还是小样本均有较好的性能且相对于多项式核函数有较小的参数
σ较大,导致高偏差,高次特征衰减越快,偏线性(高斯分布太平滑);
σ较小,导致高方差。无穷维,可解决任何数据,但易过拟合(高斯分布瘦长)
(3)多项式核函数
适合于正交归一化后的数据
如何选择核函数:
(1)可利用先验知识确定问题是否线性可分
(2)交叉验证,尝试不通核函数,找到误差最小的即为效果最好的核函数
(3)混合核函数,将不同核函数结合起来
联系
区别
在统计学中,参数模型通常假设总体(随机变量)服从某一个分布,该分布由一些参数确定(比如正太分布由均值和方差确定),在此基础上构建的模型称为参数模型;非参数模型对于总体的分布不做任何假设,只是知道总体是一个随机变量,其分布是存在的(分布中也可能存在参数),但是无法知道其分布的形式,更不知道分布的相关参数,只有在给定一些样本的条件下,能够依据非参数统计的方法进行推断。
经验风险最小化:关于训练样本集的平均损失最小
结构风险最小化:为防止过拟合提出,等同于正则化,在经验风险基础上加上表示模型复杂度的正则项
SVM是一种二类分类模型。它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器。(间隔最大是它有别于感知机)
(1)当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;
(2)当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;
(3)当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。
注:以上各SVM的数学推导应该熟悉:硬间隔最大化(几何间隔)---学习的对偶问题---软间隔最大化(引入松弛变量)---非线性支持向量机(核技巧)。
是对偶问题往往更易求解(当我们寻找约束存在时的最优点的时候,约束的存在虽然减小了需要搜寻的范围,但是却使问题变得更加复杂。为了使问题变得易于处理,我们的方法是把目标函数和约束全部融入一个新的函数,即拉格朗日函数,再通过这个函数来寻找最优点。)
(1)缺失数据
这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM没有处理缺失值的策略(决策树有)。而SVM希望样本在特征空间中线性可分,所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。
(2)噪声数据
SVM的目的是求出与支持向量由最大化距离的直线,以每个样本为圆心,该距离为半径做圆,可近似认为圆内的点与该样本属于相同分类。若出现噪声,那么这个噪声所带来的的错误分类也将最大化,所以SVM对噪声敏感。即一个噪声样本会影响以其到分类超平面的距离为半径的圆内的所有数据的分类效果。
(1)直接法
直接在目标函数上修改,将多个分类面的参数求解合并到一个最优化问题里面。看似简单但是计算复杂度非常大,实现起来较为困难,只适用于小型问题中。
(2)间接法一对多
对每个类都训练出一个分类器,设定目标类为一类,其余类为另外一类。这样针对k个类可以训练出k个分类器,当有一个新的样本来的时候,用这k个分类器来测试,那个分类器的概率高,那么这个样本就属于哪一类。这种方法效果不太好,bias比较高。
(3)间接法一对一
针对任意两个类训练出一个分类器,如果有k类,一共训练出个分类器,这样当有一个新的样本要来的时候,用这个分类器来测试,每当被判定属于某一类的时候,该类就加一,最后票数最多的类别被认定为该样本的类。这种方法虽好,但是需要个分类器代价太大。
(4)层次支持向量机
层次分类法首先将所有类别分成两个子类,再将子类进一步划分成为两个次级子类,如此循环,直到得到一个单独的类别为止
(1)调整惩罚因子
给样本数量少的负类更大的惩罚因子,表示重视这部分样本
(2)调整样本
欠采样、过采样
SVM的空间消耗主要是存储训练样本和核矩阵,由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间。若数据量较大,SVM训练时间就会较长。
优点:
缺点:
参考文献:
1. svm原理详细推导
2. 机器学习】支持向量机SVM原理及推导
3. 机器学习:支持向量机SVM原理与理解
4. 支持向量机原理(三)线性不可分支持向量机与核函数
5. 《机器学习》 周志华
6.数据挖掘(机器学习)面试--SVM面试常考问题