Support Vector Machine笔记
Maximum Margin Classifier
考虑一个简单的二类分类问题,如果数据点集合
Support Vector Machine(SVM)就是提供了一种关于从能分开正负样本的超平面中选择最好的超平面的“偏好”或者说标准。它认为离两类数据点“最远”,Margin最大的那个平面是最好的,所以SVM又被称为Maximum Margin Classifier。这种偏好并非像其他模型参数一样是从数据中学习到的,而是我们用自己分析出的结果,算是一种先验知识。SVM的最大Margin的思路是,数据中的随机噪声和扰动甚至错误都是很常见甚至难以避免的,如果一个超平面离两类数据点都比较远,那么它受到这种扰动干扰的几率也就越小,进而在新数据点上预测的泛化效果应该也就越好。
我们不难将SVM的这个Maximum Margin的偏好公式化为:
其中
为了推导方便,我们不失一般性的规定,正样本的标记
下面我们要搞清楚的是
其中
之后我们有
因为
我们将优化问题中
现在我们虽然可以根据这个标准求得最优超平面,但是因为
当我们得到这个超平面之后,有一部分数据点满足
回到上面的优化问题,我们可以进一步将其整理为常见的、好优化的等价二次形式
这个问题可以用Quadratic Programming来解决。但是这个分类器不能处理数据点线性不可分的情况,并不实用。
针对这种情况我们有两个方案
- Basis Expansion:
,例如,假设数据点有2个features,那么我们可以将其转为5维 。但是二阶的时候变量数目就从2上升到5,如果feature数目多的话,升维之后维度数目“不堪设想”。这会使训练和预测速度也会受到影响,且其实也不能保证高维空间里就线性可分了; - 第二个方法是我们放宽优化问题中的要求,上面的SVM优化形式又被称为Hard Margin SVM,这是因为其要求
,如果我们给其加一个松弛变量 放松一下要求, ,那么我们就得到了Soft Margin SVM。
Soft Margin SVM
这显然不靠谱。直觉来说,我们可以对某些点的要求作出宽限,允许其进入Margin范围内,但是这种越界行为应该越少越好,能不出现就不出现。根据这一想法,我们将优化目标加一个关于松弛变量惩罚项,来保证我们的模型“能不放松就不放松”:
其中
Linear Classifier with Hinge Loss
人们常说SVM就是线性分类器+Hinge Loss,Logistics Regression就是线性分类器+Cross Entropy。实际上这里线性分类器+Hinge Loss = SVM指的是Soft Margin SVM。
整理上面的优化问题的第一个约束条件约束条件,我们有
又因为我们希望
带入原优化问题,我们得到一个无约束优化问题
其中第一项就是我们熟知的Regularization项,第二项则是每个数据点的Hinge Loss。多说一句,关于Hinge Loss和Cross Entropy Loss,它们为什么make sense呢?其实是因为它们都是最Naive的0-1 Loss
问题依旧
然而即使是通过松弛变量宽限成Soft Margin SVM,如果正负样本在当前空间内就是无法很好地用超平面分割开,再怎么宽限也帮助不大。这时我们还是要将其尝试映射到高维/其它空间看看能不能分开得好一些。然而上面说过,升维之后会导致计算量增大,这就需要Kernel出马了。在介绍如何将SVM与Kernel之前,我们得先介绍Lagrange Multiplier以及对偶问题。因为只有在利用Lagrange Multiplier转换了优化问题形式之后,再转成其对偶形式后,才能使用Kernel。(除了能使用Kernel外,还有其他的一些好处。)
拉格朗日乘数与对偶问题
我们可以用拉格朗日乘数来进一步将这个优化问题进行转化,然后进一步转化成其对偶为题,这样做有很多(潜在的)好处:
- 有更高效的优化方法
- 我们将 feature-wise weights
转成了sample-wise weights ,其非零项数目为支持向量数目,如果支持向量数目远少于feature数目的话,最后的参数数会减少 - 可以使用Kernel,这在一定程度上解决数据点线性不可分的问题,同时不需要我们提前显式地将features
做一些basis expansion转化成 (比如 ),这样可以避免升维带来的优化速度降低问题
下面我们仍以Hard Margin SVM为例子,来介绍如何使用Lagrange Multiplier来将约束条件融合到优化目标中,以及如何转换成其对偶问题并求解。Soft Margin SVM的推导大同小异。
首先我们构造拉格朗日函数,即将约束条件“加乘”到优化目标中
然后我们构造一个Dual Function:
对于满足约束条件的
所以
总而言之,我们得到了一个与Primal问题解相同对偶问题
在给定
带入对偶优化问题中可以得到
最终,我们得到原问题(Primal)对偶优化问题(Dual)
The Intercept
然而,给新数据点分类的过程中
于是我们有
Support Vector的判定标准是
MIT Open Course和Andrew Ng的notes分别给出了如下两种形式,但是其思路都是一样的。
- MIT Open Course:
- Andrew Ng:
Kernel Trick
这时我们不再直接求解feature-wise weights
- 训练:训练过程中我们要解决如下优化问题:
- 预测:对于新数据点
如果我们做
很容易看出,
几种常见的核函数有:
- 多项式核:
- RBF核:
- 线性核:
可以看出几种核函数都避免了升维的过程,其内积操作都是在原维度空间中完成的。举个例子来说
不过如果任意给定一个
细心的你可能突然发现,慢着这几个核函数看起来似乎很像两个向量的距离/不相似度函数啊。实际上也是这样,而且当我们再回头看一下预测函数
用拉格朗日函数的形式表达Primal问题
实际上原优化问题也可以表示为拉格朗日函数的形式,其形式为
这是因为: (1) 对于不满足约束条件的
所以上面这个优化问题就是和原优化问题等价的。指的注意的是,它和Dual问题的区别仅仅是min-max的顺序。从这个角度我们也可以通俗的解释为什么
另外一个有趣的事实是,(2)中阐述过,对于符合约束条件的
Soft Margin SVM的Dual问题
Soft Margin SVM的对偶问题推导和Hard Margin SVM大同小异,得到的结果也非常相似
仅仅是多了条件
参考资料
[1] http://cs229.stanford.edu/notes/cs229-notes3.pdf [2] https://ocw.mit.edu/courses/sloan-school-of-management/15-097-prediction-machine-learning-and-statistics-spring-2012/lecture-notes/MIT15_097S12_lec12.pdf [3] http://blog.pluskid.org/?page_id=683