支持向量机原理小结(2)——线性可分支持向量机和软间隔最大化

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_16137569/article/details/81866064

  在上一篇博客《线性可分支持向量机和软间隔最大化》中对严格线性可分的SVM进行了推导,最后提到了线性可分支持向量机对于非线性的数据集也是没有办法使用的,这是因为有时候少量异常点引入了非线性,本篇博客就来讲讲如何应对这些异常点。

1. 硬间隔最大化存在的问题

  所谓“硬间隔”,就是不允许样本点出现在两条间隔边界(下图中虚线)之间,在不考虑对输入数据进行其他特征映射的条件下,只有严格可分的线性数据集才能满足这个条件。但实际中往往会因为少量异常样本点,使得数据不再线性可分,如果去除掉这些异常点还是线性可分的(这和非线性数据集有所不同)。另一方面,就算恰好找到某个分离超平面使得训练集可以线性可分,我们也不能保证这不是因为过拟合引起的。缓解该问题的一个办法是允许SVM在一些样本上出错,为此要引入“软间隔”的概念,如下图所示。

2. 软间隔线性可分SVM

  更具体的来说,硬间隔是要求所有样本都满足

(1) y ( i ) ( w x ( i ) + b ) 1
而软间隔允许某些样本不满足式(1)。我们可以为每个样本点 ( x ( i ) , y ( i ) ) 引入一个松弛变量 ξ i 0 ,使函数间隔记上松弛变量大于等于1,于是软间隔的约束条件变为
(2) y ( i ) ( w x ( i ) + b ) 1 ξ i
同时对每个 ξ i 支付一个代价,目标函数由原来的
(3) min w , b 1 2 w 2 2 s . t .     y ( i ) ( w x ( i ) + b ) 1 ,   i = 1 , 2 , , m
变为
(4) min w , b 1 2 w 2 2 + C i = 1 m ξ i s . t .   y ( i ) ( w x ( i ) + b ) 1 ξ i ,   i = 1 , 2 , , m ξ i 0 ,   i = 1 , 2 , , m
新的目标函数有两层含义:使 1 2 w 2 2 尽量小即间隔尽量大,使 ξ i 尽量小即使误分类点个数尽量小, C 是调和二者的系数, C 越大,对于误分类点的惩罚就越大。关于 ξ i 我是这么理解的, ξ i 其实就是衡量相应样本点偏离间隔边界的程度, ξ i 越大,就说明其偏离的越远,所以最小化 ξ i 就是让样本点偏离程度尽可能小,即误分类点尽可能少。

3. 学习的对偶算法

  既然已经得到了要优化的目标函数,我们就可以利用上一篇博客的方法来对这个凸二次规划问题进行求解。同样地,利用KKT条件将优化目标(4)转化为无约束的优化函数,该问题的拉格朗日函数可以写为:

(5) L ( w , b , ξ , α , μ ) = 1 2 w 2 2 + C i = 1 m ξ i i = 1 α i ( y ( i ) ( w x ( i ) + b ) 1 + ξ i ) i = 1 μ i ξ i
其中 α i 0 , μ i 0 其对偶问题是拉格朗日函数的极大极小问题:
(6) max α , μ min w , b , ξ L ( w , b , ξ , α , μ )
现在我们按照以前的步骤来求解问题(6)。
  (1)先求 min w , b , ξ L ( w , b , ξ , α , μ )
  将拉格朗日函数 L ( w , b , ξ , α , μ ) 分别对 w , b , ξ 求偏导并令其等于0:
w L ( w , b , ξ , α , μ ) = w i = 1 m α i y ( i ) x ( i ) = 0 b L ( w , b , ξ , α , μ ) = i = 1 m α i y ( i ) = 0 ξ i L ( w , b , ξ , α , μ ) = C α i μ i = 0
得到:
(7) w = i = 1 m α i y ( i ) x ( i ) (8) i = 1 m α i y ( i ) = 0 (9) C α i μ i = 0
将(7)(8)(9)代入式(5),得
L ( w , b , ξ , α , μ ) = 1 2 w 2 2 + C i = 1 m ξ i i = 1 α i ( y ( i ) ( w x ( i ) + b ) 1 + ξ i ) i = 1 μ i ξ i = 1 2 w 2 2 i = 1 α i ( y ( i ) ( w x ( i ) + b ) 1 + ξ i ) + i = 1 α i ξ i = 1 2 w 2 2 i = 1 α i ( y ( i ) ( w x ( i ) + b ) 1 ) (10) = 1 2 i = 1 m j = 1 m α i α j y ( i ) y ( j ) ( x ( i ) x ( j ) ) + i = 1 m α i
我们发现这和硬间隔最大化的优化函数是一样的,唯一不同的只有约束条件。
  (2) 求 min α , μ L ( w , b , ξ , α , μ ) α , μ 的极大
max α , μ 1 2 i = 1 m j = 1 m α i α j y ( i ) y ( j ) ( x ( i ) x ( j ) ) + i = 1 m α i s . t .   i = 1 m α i y ( i ) = 0 α i 0 μ i 0 C α i μ i = 0 ,   1 , 2 , , m
用(9)消去 μ i ,只剩下 α i ,该极大问题等价于下面的极小问题:
(11) min α 1 2 i = 1 m j = 1 m α i α j y ( i ) y ( j ) ( x ( i ) x ( j ) ) i = 1 m α i s . t .   i = 1 m α i y ( i ) = 0 0 α i C ,   i = 0 , 1 , 2 , , m
使用SMO算法解得 α i ,然后 w , b 就相应求出来了,分离超平面和分类决策函数也就随之确定了。
分离超平面:
(12) w x + b = 0
分类决策函数:
(13) f ( x ) = s i g n ( w x + b )
最后结果中都没有出现 ξ i 的影子,那么我们在实际用的时候如何为每个样本指定相对应的松弛变量 ξ i 呢?这里不是很理解,如果有理解的人欢迎指教。
  (3) 得到支持向量
  在线性不可分的情况下,将 α i > 0 对应的样本点 x ( i ) 称为支持向量,这时的支持向量要比线性可分时的情况复杂一些,如下图所示。

  分离超平面由实现表示,间隔边界由虚线表示,正例由 表示,负例 × 表示,图中还标出了样本点 x ( i ) 到间隔边界的距离 ξ i w 2
  根据KKT条件中的对偶松弛性条件:

α i ( y ( i ) ( w x ( i ) + b ) 1 + ξ i ) = 0
α i = 0 时,说明改约束条件不起作用,该样本不会对决策函数 f ( x ) 产生任何影响;
α i > 0 时, y ( i ) ( w x ( i ) + b ) 1 + ξ i = 0 ,该样本是支持向量,根据 α i 的取值,支持向量又分为几种不同的情况:

  • 根据(9),当 0 < α i = C μ i < C 时, μ i > 0 ,又根据KKT条件 μ i ξ i = 0 ,所以 ξ i = 0 ,这时样本点恰好在间隔边界上(正确分类那一侧),如图中1号点;
  • α i = C 时, μ i = 0 ,该样本对求解 f ( x ) 没有帮助,这时需要根据 ξ i 的值来判断。如果 ξ i = 0 ,样本点恰好在正确分类那一侧的间隔边界上,如1号点;如果 0 < ξ i < 1 ,样本点在分离超平面和间隔边界之间,如图中2号和4号点;如果 ξ i = 1 ,样本点恰好在分类超平面上;如果 ξ i > 1 ,样本点位于分类超平面误分那一侧,如3号点。

4. 小结

  对软间隔的线性SVM算法流程做一个小结:
输入:线性可分数据集 T = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , , ( x ( m ) , y ( m ) ) } y ( i ) { 1 , + 1 }
输出:分离超平面和分类决策函数
(1) 构造约束最优化问题:

min α 1 2 i = 1 m j = 1 m α i α j y ( i ) y ( j ) ( x ( i ) x ( j ) ) i = 1 m α i s . t .   i = 1 m α i y ( i ) = 0 0 α i C ,   i = 0 , 1 , 2 , , m
(2)使用SMO算法求解上述问题并解得 α
(3)计算得到 w b
w = i = 1 m α i y ( i ) x ( i ) b = 1 p j = 1 p ( y ( j ) i = 1 m α i y ( i ) ( x ( i ) x ( j ) ) )
(4)求得分离超平面:
w x + b = 0
分类决策函数:
f ( x ) = s i g n ( w x + b )

  和硬间隔的线性SVM相比,只有第一步构造约束优化问题那不一样,其余步骤都是一样的,毕竟都是线性SVM嘛,可以理解=-=。然后在分析支持向量的时候突然想到,而且大部分博客和书籍都没有特别提及的是,不管硬间隔还是软间隔,最后得到的模型还是只根据样本点在分离超平面那一侧的位置来进行分类,而 不是根据间隔边界!!!因为一开始我惯性思维认为是根据间隔边界,导致一直理不顺,这里提醒大家一下。间隔边界归根到底只是对分类超平面的一个约束(这第一篇博客在将感知机和SVM对比时也提到了),一旦求得超平面,间隔边界也就没用了。间隔边界的引入为模型提升了泛化能力。
  目前为止,线性SVM终究只能应用于线性可分(硬间隔)或近似线性可分(软间隔)的数据集,那么对于非线性数据集怎么办呢,可以用核方法,这将在下一篇博客中讲。

猜你喜欢

转载自blog.csdn.net/qq_16137569/article/details/81866064
今日推荐