SVM(support vector machines)是一种分类模型,它的目的是寻找一个超平面(hyper plane)来对样本进行分割,达到分类的目的。所谓超平面,在二维坐标下就是一条直线,在三维坐标下就是一个平面。在不考虑空间维度的情况下,这样的线性函数统称超平面。
上文提到分割,其原则是在保证数据正确划分的情况下,将间隔(margin)最大化。
(1)什么是间隔?间隔是指两个异类支持向量(即超平面左右两侧的向量)到超平面的距离之和。
(2)为什么要将间隔最大?如下图所示,在间隔很小的情况下,直线稍微转动一个很小的角度,就会导致分类结果改变,原来属于A的,变成属于B。
(3)如何实现间隔最大?提到最大,便涉及到优化问题,我们可以将其转化为一个凸二次规划问题求解。
在样本空间中,我们将超平面用线性方程 来表示。
为法向量,决定超平面的方向;b为位移项,决定超平面与原点之间的距离。样本空间中任意点x到超平面(w,b)的距离可写为:
。
以二分类为例,如图所示,分成上下两部分,数据点用x来表示,类别用y表示,为了方便计算,假设属于上部分为,属于下部分为
,则有
代入(1)式中得两个异类支持向量到超平面的距离之和为: 。要使该间隔最大,即
最小,此处为了求导方便,用
来表示,即
对(2)式使用拉格朗日乘子法可得其“对偶问题(dual problem)”,该问题的拉格朗日函数可写为:
对w和b分别求偏导,有:
令这两个公式都为0,则有:
带入(3)式中,化简可得(2)式的对偶问题:
解出后,求出w和b即可得到模型: