基本思想:试图寻找一个超平面来对样本分割,把样本中的正例和反例用超平面分开,并尽可能的使正例和反例之间的间隔最大。
算法推导过程:
(1)代价函数:假设正类样本y =wTx+ b>=+1,负类样本y =wTx+ b<=-1,两条边界之间的距离为2/||w||,最大化这个距离,应该最小化||w||,约束条件的目的是为了保证正类样本位于H1右边,负类样本位于H2左边,所以原始的代价函数就为:
函数间隔(functional margin):
几何间隔(geometric margin):
(2)对偶问题:引入拉格朗日乘子,可以得到以下拉格朗日函数:
求导:
将上式代入拉格朗日函数:
由于对偶问题的性质,最小变为最大,求W的极值即可:
从KKT条件中得到,只有支持向量的不为0,其他情况的都为0.那么来一个新样本x后,就可以这样分类:
为什么要转为对偶问题?(阿里面试)
(a) 目前处理的模型严重依赖于数据集的维度d,如果维度d太高就会严重提升运算时间;
(b) 对偶问题事实上把SVM从依赖d个维度转变到依赖N个数据点,考虑到在最后计算时只有支持向量才有意义,所以这个计算量实际上比N小很多。
(3)松弛向量与软间隔最大化:
原因:一些离群点或者噪声点影响分界面;
解决方法:允许某些样本不满足约束:
新模型:
解释:引入松弛变量后,就允许某些样本点的函数间隔小于1,即在最大间隔区间里面,或者函数间隔是负数,即样本点在对方的区域中。C是离群点的权重,值越大说明离群点对目标函数影响越大,这时候间隔就会很小。
相应的对偶问题求解:
求导:
带入得到对偶优化问题(发现与之前模型只多了一个小于等于C的限制条件):
(4)核函数
原因:原始空间线性不可分,可以使用一个非线性映射将原始数据x变换到另一个高维特征空间,在这个空间中,样本变得线性可分。
解决方法:常用的一般是径向基RBF函数(线性核,高斯核,拉普拉斯核等)。
优点:避免了高维空间的计算,计算核函数的复杂度和计算原始样本内积的复杂度没有实质性的增加。
(5)多分类
一对多方法:每一次把某个样本定为正样本,其余样本作为负样本。
优点:每个优化问题规模小,分类器少,分类速度快;
缺点:每一个分类器都说它属于它那一类---分类重叠;每一个分类器都说它不是它那一类---不可分类现象。
一对一方法:每次选一个类的样本作正类样本,负类样本则变成只选一个类。
优点:不会出现分类重叠现象。
(6) SMO算法实现SVM
基本思想:将大优化的问题分解成多个小优化问题,这些小问题往往比较容易求解,并且对他们进行顺序求解的结果与他们作为整体来求解的结果完全一致。
过程:
常见问题:
(7)总结:
支持向量机的基本思想可以概括为,首先通过非线性变换将输入空间变换到一个高维的空间,然后在这个新的空间求最优分类面即最大间隔分类面,而这种非线性变换是通过定义适当的内积核函数来实现的。SVM实际上是根据统计学习理论依照结构风险最小化的原则提出的,要求实现两个目的:
1)两类问题能够分开(经验风险最小)
2)margin最大化(风险上界最小)既是在保证风险最小的子集中选择经验风险最小的函数。