文章目录
一、SVM简介
SVM是一种二分类模型。它的基本思想是在特征空间中寻找最大的分离超平面使得数据二分类。具体来讲,有三种情况(不加核函数的话就是个线性模型,加了核函数就是一个非线性模型):
- 当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机。
- 当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机。
- 当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。
二、SVM为什么采用间隔最大化(与感知机的区别)
当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。
- 感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。
- 线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强。
三、SVM的目标(硬间隔)
有两个目标:
- 第一个是使间隔最大化
- 第二个是使样本正确分类
四、求解目标(硬间隔)
SVM是一个有约束条件的最优化问题,用拉格朗日函数来解决。
在满足Slater定理的时候,且过程满足KKT条件的时候,原问题转换成对偶问题
先求内部最小值,对w和b求偏导并令其等于0
五、软间隔
不管直接在原特征空间,还是在映射的高维空间,我们都假设样本是线性可分的。虽然理论上我们总能找到一个高维映射使数据线性可分,但在实际任务中,寻找一个合适的核函数很难。此外,由于数据通常由噪声存在,一味追求数据线性可分可能会使模型陷入过拟合,因此,我们放宽对样本的要求,允许少量样本分类错误。给之前的目标函数加上一个误差,将相当于允许原先的目标出错,引入松弛变量。松弛变量用hinge loss计算。
六、核函数
核函数就是一个函数,接受两个变量,这两个变量是在低维空间中的变量,而核函数求得值等于将两个低维空间中的向量映射到高维空间后的内积。
七、如何选择核函数
- 当特征维数d超过样本数m时(文本分类问题通常是这种情况),使用线性核。
- 当特征维数d比较小,样本数m中等时,使用RBF核。
- 当特征维数d比较小,样本数m特别大时,支持向量机性能通常不如深度神经网络。
八、关于支持向量机的问题
1. KKT条件
- 主问题可行
- 对偶问题可行
- 互不松弛
2. 支持向量
- 支持向量是距离划分超平面最近的样本,落在最大间隔边界上。
- 支持向量机的参数(w,b)仅由支持向量决定,与其它样本无关。
3.为什么将原问题转换为对偶问题
- 对偶问题更容易求解
- 可以自然引入核函数,进而推广到非线性分类问题
九、为什么SVM对缺失数据敏感
这里说的缺失数据是指缺失某些特征数据(向量数据不完整)。SVM没有处理缺失值的策略,而SVM希望样本在特征空间中线性可分,所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。
十、SVM的优缺点
优点:
- 由于SVM是一个凸优化问题,所以求得的解一定是全局最优而不是局部最优。
- 不仅适用于线性问题还适用于非线性问题(用核技巧)。
- 拥有高维样本空间的数据也能用SVM,这是因为数据集的复杂度只取决于支持向量而不是数据集的维度,这在某种意义上避免了“维度灾难”。
- 理论基础比较完善(例如神经网络就更像一个黑盒子)
缺点: - 二次规划问题求解将涉及m阶矩阵的计算(m为样本的个数),因此SVM不适用与超大数据集。(SMO算法可以缓解这个问题)
- 只适用于二分类问题。(SVM的推广SVR也适用于回归问题;可以通过多个SVM的组合来解决多分类问题)