一.原理部分
1. SVM 原理
a.SVM 是一种二类分类模型。它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器。
b.当训练样本线性可分时,通过硬间隔最大化(几何间隔),学习一个线性分类器,即线性可分支持向量机;
c.当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;
d.当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。
松弛变量:
使用原因:一些离群点或者噪声点影响分界面;
解决方法:允许某些样本不满足约束:
0/1损失函数非凸函数,不易求解,因此引入hinge函数作为SVM的损失函数。
引入松弛变量,优化目标变成:
2. SVM 为什么采用间隔最大化
a.当训练数据线性可分时,间隔最大化解是唯一的。
b.这个划分超平面所产生的分类结果是最鲁棒的,对未见示例的泛化能力最强.
3.SVM为什么要从原始问题变为对偶问题来求解?
对偶问题往往更易求解,因为对偶问题将原始问题中的不等式约束转为了对偶问题中的等式约束。
方便核函数的引入
改变了问题的复杂度,由求特征向量w转化为求比例系数a,在原始问题下,求解的复杂度与样本的维度有关,即w的维度。在对偶问题下,只与样本数量有关。
(a) 目前处理的模型严重依赖于数据集的维度d,如果维度d太高就会严重提升运算时间;
(b) 对偶问题事实上把SVM从依赖d个维度转变到依赖N个数据点,考虑到在最后计算时只有支持向量才有意义,所以这个计算量实际上比N小很多。
对偶问题:引入拉格朗日乘子,可以得到以下拉格朗日函数:
求导:
将上式代入拉格朗日函数:
由于对偶问题的性质,最小变为最大,求W的极值即可:
从KKT条件中得到,只有支持向量的不为0,其他情况的都为0.那么来一个新样本x后,就可以这样分类:
从对偶问题解出的过程需满足KKT(Karush-Kuhn-Tucker) 条件只有支持向量的不为0,其他情况的都为0.那么来一个新样本x后,就可以这样分类:f(x)
对偶问题求解方法:SMO.
将大优化的问题分解成多个小优化问题,这些小问题往往比较容易求解,并且对他们进行顺序求解的结果与他们作为整体来求解的结果完全一致。
4,为什么SVM要引入核函数?
当样本在原始空间线性不可分时可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。
引入映射后的对偶问题:
在学习预测中,只定义核函数K(x,y),而不是显式的定义映射函数ϕ。因为特征空间维数可能很高,甚至可能是无穷维,因此直接计算ϕ(x)·ϕ(y)是比较困难的。相反,直接计算K(x,y)比较容易(即直接在原来的低维空间中进行计算,而不需要显式地写出映射后的结果)。
核函数的定义:K(x,y)=<ϕ(x),ϕ(y)>,即在特征空间的内积等于它们在原始样本空间中通过核函数K计算的结果。
除了 SVM 之外,任何将计算表示为数据点的内积的方法,都可以使用核方法进行非线性扩展。
高斯核函数(BPF):
优点:
可以映射到无限维
决策边界更为多样
只有一个参数sigema,相比多项式核容易选择
缺点:
可解释性差(无限多维的转换,无法算w)
计算速度比较慢(解一个对偶问题)
容易过拟合(参数选不好时容易overfitting)
在实战中更多的是:
特征维数高选择线性核
样本数量可观、特征少选择高斯核(非线性核)
样本数量非常多选择线性核(避免造成庞大的计算量)
二.应用部分
1.为什么SVM对缺失数据敏感?
这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM没有处理缺失值的策略(决策树有)。而SVM希望样本在特征空间中线性可分,所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。
2.SVM多分类
一对多方法:每一次把某个样本定为正样本,其余样本作为负样本。
优点:每个优化问题规模小,分类器少,分类速度快;
缺点:每一个分类器都说它属于它那一类---分类重叠;每一个分类器都说它不是它那一类---不可分类现象。
一对一方法:每次选一个类的样本作正类样本,负类样本则变成只选一个类。 假设有四类A,B,C,D四类。在训练的时候我选择A,B; A,C; A,D; B,C; B,D;C,D所对应的向量作为训练集,然后得到六个训练结果,在测试的时候,把对应的向量分别对六个结果进行测试,然后采取投票形式,最后得到一组结果。
优点:不会出现分类重叠现象。
3.防止SVM过拟合
解决过拟合的办法是为SVM引入了松弛变量ξ(slack variable),将SVM公式的约束条件改为:
4.SVM与LR的区别与联系
联系:(1)分类(二分类) (2)可加入正则化项
区别:(1)LR–参数模型;SVM–非参数模型?(2)目标函数:LR—logistical loss;SVM–hinge loss (3)SVM–support vectors;LR–减少较远点的权重 (4)LR–模型简单,好理解,精度低,可能局部最优;SVM–理解、优化复杂,精度高,全局最优,转化为对偶问题—>简化模型和计算 (5)LR可以做的SVM可以做(线性可分),SVM能做的LR不一定能做(线性不可分)
Reference:
https://blog.csdn.net/manduner/article/details/89893419
https://blog.csdn.net/cppjava_/article/details/68060439
https://blog.csdn.net/u010496169/article/details/73695164?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
https://cuijiahua.com/blog/2017/11/ml_8_svm_1.html