这篇文章是在支持向量机(一)基础上写的,如果对支持向量机还不太熟悉的话,建议先看(一)。
在支持向量机(一)中,我们主要讨论的是线性可分的支持向量机,但是现实情况中数据往往是线性不可分的,即数据中存在噪声点,使其不是完全线性可分的,或者说是近似线性可分的。这种情况下就是软间隔最大化,也就是线性支持向量机,而线性可分的支持向量机可以看成是线性支持向量机的一种特殊情况。
1.线性支持向量机
我们知道在线性的支持向量机中,存在一些特殊点使数据不像是在可分向量机中那样完全可分的,而我们的目的是让其可分。在线性支持向量机中,函数间隔都是大于等于1的,当然在这里就不行了,支持向量的函数间隔肯定是小于等于1的,因为函数间隔1是个不变的量,方便我们计算的,所以我们要给这里的函数间隔加上一个松弛变量让其大于等于1:
这样的话约束条件就变成了:
目标函数从变成了
这里的C>0是惩罚参数,一般由具体的问题指定,C大时对误分类的惩罚增大,C值小的时候对误分类的惩罚减小。式1有两层含义:使尽可能大,同时使误分类的点的个数尽量小,C是调和二者的系数。
我们参考线性可分的支持向量机的问题思路,给出线性支持向量机的凸二次规划问题:
,
条件:
同样对其用拉格朗日乘子法求解(拉格朗日乘子法限制条件要都要是小于号):
其中的。原始问题是求极小极大的问题(
),其对偶问题是极大极小问题(
)然后先分别对
求极小值的问题:
将上述结果带入到拉格朗日乘子式中,可以得到下面式子:
这样就只剩下了α这个变量,是不是和线性可分支持向量机中的表达式相同。然后转化为求α的极大问题,即对偶对偶问题:
然后消去μ只留下α,得到原始问题的对偶问题的最终形式如下:
我们可以看到和线性可分的支持向量机的形式差不多,只不过是对α多了一个小于等于C的限制条件。下来就是求解α的问题了。
当求得α后,我们可以求ω和b:
当求出ω和b之后,我们就可以根据和0的大小比较对未知x进行分类了。
2.支持向量
软间隔支持向量要比线性可分时的情况复杂一些。如下图所示,分离超平面由实现表示,间隔边界由虚线表示,正例点由“○”表示,负例点有“×”表示,途中还标出了实例xi到间隔边界的距离。
为什么到间隔边界的距离是?假设所有数据都是线性可分的,那么支持向量的点就应该在图中的虚线位置上,那么此时与分离超平面的函数间隔就是1,与虚线的距离就是0,但是我们说在软间隔最大化中,我们是将函数间隔加了一个
量才到达了虚线位置,所以我们距离虚线(间隔边界)的距离是
,这里要与点距离超平面的距离分开清楚。
软间隔最大化的支持向量xi或者在间隔边界上,或者在间隔边界与分离超平面之间,或者在分离超平面误分一侧。若αi<C,则说明μi>0,因为;此时
就必须等于0,因为要使拉格朗日乘子法成立,间隔就必须为0,那么支持向量恰好落在了间隔边界上;如果αi=C那么μi=0,此时
就可以取任意值了,如果
那么分类正确,xi在间隔边界与分离超平面之间;如果αi=C,
,则xi在分离超平面上;如果αi=C,
则xi位于分离超平面误分一侧。