[机器学习] - 支持向量机(二): 软间隔支持向量机

欢迎转载,转载请注明出处:https://blog.csdn.net/qq_41709378/article/details/106639967
——————————————————————————————————————————————————

我们之前讨论的情况都是建立在样例线性可分的假设上,当样例线性不可分时,我们可以引入松弛变量,我们需要将模型进行调整,以保证在不可分的情况下,也能够尽可能地找出分隔超平面。

1. 前言

在前一篇支持向量机(一): 硬间隔支持向量机讲了线性可分问题的支持向量机学习方法,对线性不可分训练数据是不适用的,因为这时上述方法中的不等式约束 y i ( w T x i + b ) ≥ 1 i = 1.... N {y_i}\left( { {w^T}{x_i} + b} \right) \ge 1{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} i = 1....N yi(wTxi+b)1i=1....N并不能都成立。怎么才能将它扩展到线性不可分问题呢?这就需要修改硬间隔最大化,使其成为软间隔最大化。

本文对支持向量机做一个推广 ,允许超平面能够错分一些点,找出分隔超平面。

2. SVM异常点问题

在线性可分问题情况下,训练数据集会被分隔超平面分成两个部分,看下图。
在这里插入图片描述
  当有一个离群点(可能是噪声)存在时,
在这里插入图片描述
  离群点的存在可以造成超平面的移动,间隔缩小,可见以前的模型对噪声非常敏感,如果再按照线性可分问题分析,会使训练的模型过拟合。
  
  如果离群点(可能是噪声)再严重点,跑到对面的分类集中,
在这里插入图片描述
  此时,模型不能运用线性可分问题的支持向量机学习方法,找不到分隔超平面。
  有时候本来数据的确是可分的,也就是说可以用线性可分问题的支持向量机学习方法来求解,但是却因为混入了离群点(可能是噪声),导致不能线性可分,本来数据是可以按上图中的实线来做超平面分离的,可以由于一个橙色和一个蓝色的离群点导致我们没法按照上一篇线性支持向量机中的方法来分类。

3. 线性分类SVM的软间隔最大化

这时候我们应该允许一些点游离并在在模型中违背限制条件(函数间隔大于1)。我们设计得到新的模型如下(也称软间隔):
                       min ⁡ w , b , ξ 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i \mathop {\min }\limits_{w,b,\xi } {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} \frac{1}{2}{\left\| w \right\|^2} + C\sum\limits_{i = 1}^N { {\xi _i}} w,b,ξmin21w2+Ci=1Nξi
                       s . t . y i ( w ⋅ x i + b ) ≥ 1 − ξ i , i = 1 , 2 , . . , N s.t.{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {y_i}\left( {w \cdot {x_i} + b} \right) \ge 1 - {\xi _i}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} ,i = 1,2,..,N s.t.yi(wxi+b)1ξi,i=1,2,..,N
                          ξ i ≥ 0 , i = 1 , 2 , . . , N {\xi _i}{\kern 1pt} \ge 0{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} ,{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} i = 1,2,..,N ξi0,i=1,2,..,N
  这里, C > 0 C>0 C>0为惩罚参数,可以理解为我们一般回归和分类问题正则化时候的参数。C越大,对误分类的惩罚越大,C越小,对误分类的惩罚越小。
  其次,引入非负参数 ξ i {\xi_i} ξi后(称为松弛变量),就允许某些样本点的函数间隔小于1,即在最大间隔区间里面,容忍了函数间隔是负数,即样本点在对方的区域中。而放松限制条件后,我们需要重新调整目标函数,以对离群点进行处罚,目标函数后面加上的 C ∑ i = 1 N ξ i C\sum\limits_{i = 1}^N { {\xi _i}} Ci=1Nξi就表示离群点越多,目标函数值越大,而我们要求的是尽可能小的目标函数值。C作为惩罚参数,是离群点的权重,C越大表明离群点对目标函数影响越大,也就是越不希望看到离群点。
  我们看到,目标函数控制了离群点的数目和程度,使大部分样本点仍然遵守限制条件。

4. 拉格朗日对偶化

模型修改后,拉格朗日公式也要修改如下:
                L ( w , b , ξ , α , μ ) = 1 2 w T w + C ∑ i = 1 N ξ i − ∑ i = 1 N α i [ y i ( w ⋅ x i + b ) − 1 + ξ i ] − ∑ i = 1 N μ i ξ i L\left( {w,b,\xi ,\alpha ,\mu} \right) = \frac{1}{2}{w^T}w + C\sum\limits_{i = 1}^N { {\xi _i}} - \sum\limits_{i = 1}^N { {\alpha _i}} \left[ { {y_i}\left( {w \cdot {x_i} + b} \right) - 1 + {\xi _i}} \right] - \sum\limits_{i = 1}^N { {\mu_i}{\xi _i}} L(w,b,ξ,α,μ)=21wTw+Ci=1Nξii=1Nαi[yi(wxi+b)1+ξi]i=1Nμiξi
  
  这里的 α i {\alpha _i} αi μ i \mu_i μi都是拉格朗日乘子,回想我们在拉格朗日对偶中提到的求法,先写出拉格朗日公式(如上),然后将其看作是变量w和b的函数,分别对其求偏导,求其最小值,得到w和b的表达式。然后代入公式中,求带入后公式的极大值。
  (1) 先求 L ( w , b , ξ , α , μ ) L\left( {w,b,\xi ,\alpha ,\mu} \right) L(w,b,ξ,α,μ)对w,b的极小
  对w,b,ξ求偏导
                   ∇ w L ( w , b , ξ , α , μ ) = w − ∑ i = 1 N α i y i x i = 0 {\nabla _w}L\left( {w,b,\xi ,\alpha ,\mu } \right) = w - \sum\limits_{i = 1}^N { {\alpha _i}} {y_i}{x_i} = 0 wL(w,b,ξ,α,μ)=wi=1Nαiyixi=0
                   ∇ b L ( w , b , ξ , α , μ ) = − ∑ i = 1 N α i y i = 0 {\nabla _b}L\left( {w,b,\xi ,\alpha ,\mu } \right) = - \sum\limits_{i = 1}^N { {\alpha _i}} {y_i} = 0 bL(w,b,ξ,α,μ)=i=1Nαiyi=0
                   ∇ ξ i L ( w , b , ξ , α , μ ) = C − α i − μ i = 0 {\nabla _{ {\xi _i}}}L\left( {w,b,\xi ,\alpha ,\mu } \right) = C - {\alpha _i} - {\mu _i} = 0 ξiL(w,b,ξ,α,μ)=Cαiμi=0
将上式 w = ∑ i = 1 N α i y i x i {w} = \sum\limits_{i = 1}^N {\alpha _i} {y_i}{x_i} w=i=1Nαiyixi带回到拉格朗日函数 L ( w , b , ξ , α , μ ) = 1 2 w T w + C ∑ i = 1 N ξ i − ∑ i = 1 N α i [ y i ( w ⋅ x i + b ) − 1 + ξ i ] − ∑ i = 1 N μ i ξ i L\left( {w,b,\xi ,\alpha ,\mu} \right) = \frac{1}{2}{w^T}w + C\sum\limits_{i = 1}^N { {\xi _i}} - \sum\limits_{i = 1}^N { {\alpha _i}} \left[ { {y_i}\left( {w \cdot {x_i} + b} \right) - 1 + {\xi _i}} \right] - \sum\limits_{i = 1}^N { {\mu_i}{\xi _i}} L(w,b,ξ,α,μ)=21wTw+Ci=1Nξii=1Nαi[yi(wxi+b)1+ξi]i=1Nμiξi中得到,此时得到的是该函数的最小值(目标函数是凸函数)。化简过程如下:
      L ( w , b , ξ , α , μ ) = 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i − ∑ i = 1 N α i [ y i ( w ⋅ x i + b ) − 1 + ξ i ] − ∑ i = 1 N μ i ξ i L\left( {w,b,\xi ,\alpha ,\mu } \right) = \frac{1}{2}{\left\| w \right\|^2} + C\sum\limits_{i = 1}^N { {\xi _i}} - \sum\limits_{i = 1}^N { {\alpha _i}} \left[ { {y_i}\left( {w \cdot {x_i} + b} \right) - 1 + {\xi _i}} \right] - \sum\limits_{i = 1}^N { {\mu _i}{\xi _i}} L(w,b,ξ,α,μ)=21w2+Ci=1Nξii=1Nαi[yi(wxi+b)1+ξi]i=1Nμiξi
              = 1 2 w T w − ∑ i = 1 N α i y i w T x i − ∑ i = 1 N α i y i b + ∑ i = 1 N α i + C ∑ i = 1 N ξ i − ∑ i = 1 N α i ξ i − ∑ i = 1 N μ i ξ i = \frac{1}{2}{w^T}w - \sum\limits_{i = 1}^N { {\alpha _i}{y_i}} {w^T}{x_i} - \sum\limits_{i = 1}^N { {\alpha _i}{y_i}} b + \sum\limits_{i = 1}^N { {\alpha _i}} + C\sum\limits_{i = 1}^N { {\xi _i}} - \sum\limits_{i = 1}^N { {\alpha _i}{\xi _i}} - \sum\limits_{i = 1}^N { {\mu _i}{\xi _i}} =21wTwi=1NαiyiwTxii=1Nαiyib+i=1Nαi+Ci=1Nξii=1Nαiξii=1Nμiξi
              = 1 2 w T ∑ i = 1 N α i y i x i − w T ∑ i = 1 N α i y i x i − b ∑ i = 1 N α i y i + ∑ i = 1 N α i + C ∑ i = 1 N ξ i − ∑ i = 1 N α i ξ i − ∑ i = 1 N μ i ξ i = \frac{1}{2}{w^T}\sum\limits_{i = 1}^N { {\alpha _i}} {y_i}{x_i} - {w^T}\sum\limits_{i = 1}^N { {\alpha _i}{y_i}} {x_i} - b\sum\limits_{i = 1}^N { {\alpha _i}{y_i}} + \sum\limits_{i = 1}^N { {\alpha _i}} + C\sum\limits_{i = 1}^N { {\xi _i}} - \sum\limits_{i = 1}^N { {\alpha _i}{\xi _i}} - \sum\limits_{i = 1}^N { {\mu _i}{\xi _i}} =21wTi=1NαiyixiwTi=1Nαiyixibi=1Nαiyi+i=1Nαi+Ci=1Nξii=1Nαiξii=1Nμiξi
              = − 1 2 w T ∑ i = 1 N α i y i x i − b ∑ i = 1 N α i y i + ∑ i = 1 N α i + ∑ i = 1 N ( C − α i − μ i ) ξ i = - \frac{1}{2}{w^T}\sum\limits_{i = 1}^N { {\alpha _i}} {y_i}{x_i} - b\sum\limits_{i = 1}^N { {\alpha _i}{y_i}} + \sum\limits_{i = 1}^N { {\alpha _i}} + \sum\limits_{i = 1}^N {\left( {C - {\alpha _i} - {\mu _i}} \right)} {\xi _i} =21wTi=1Nαiyixibi=1Nαiyi+i=1Nαi+i=1N(Cαiμi)ξi
              = − 1 2 ( ∑ i = 1 N α i y i x i ) T ∑ i = 1 N α i y i x i − b ∑ i = 1 N α i y i + ∑ i = 1 N α i + ∑ i = 1 N ( C − α i − μ i ) ξ i = - \frac{1}{2}{\left( {\sum\limits_{i = 1}^N { {\alpha _i}} {y_i}{x_i}} \right)^T}\sum\limits_{i = 1}^N { {\alpha _i}} {y_i}{x_i} - b\sum\limits_{i = 1}^N { {\alpha _i}{y_i}} + \sum\limits_{i = 1}^N { {\alpha _i}} + \sum\limits_{i = 1}^N {\left( {C - {\alpha _i} - {\mu _i}} \right)} {\xi _i} =21(i=1Nαiyixi)Ti=1Nαiyixibi=1Nαiyi+i=1Nαi+i=1N(Cαiμi)ξi
              = − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x i ( x j ) T − b ∑ i = 1 N α i y i + ∑ i = 1 N α i + ∑ i = 1 N ( C − α i − μ i ) ξ i = - \frac{1}{2}\sum\limits_{i = 1}^N {\sum\limits_{j = 1}^N { {\alpha _i}{\alpha _j}{y_i}} } {y_j}{x_i}{\left( { {x_j}} \right)^T} - b\sum\limits_{i = 1}^N { {\alpha _i}{y_i}} + \sum\limits_{i = 1}^N { {\alpha _i}} + \sum\limits_{i = 1}^N {\left( {C - {\alpha _i} - {\mu _i}} \right)} {\xi _i} =21i=1Nj=1Nαiαjyiyjxi(xj)Tbi=1Nαiyi+i=1Nαi+i=1N(Cαiμi)ξi
  
  最后得到
              = − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x i ( x j ) T − b ∑ i = 1 N α i y i + ∑ i = 1 N α i + ∑ i = 1 N ( C − α i − μ i ) ξ i = - \frac{1}{2}\sum\limits_{i = 1}^N {\sum\limits_{j = 1}^N { {\alpha _i}{\alpha _j}{y_i}} } {y_j}{x_i}{\left( { {x_j}} \right)^T} - b\sum\limits_{i = 1}^N { {\alpha _i}{y_i}} + \sum\limits_{i = 1}^N { {\alpha _i}} + \sum\limits_{i = 1}^N {\left( {C - {\alpha _i} - {\mu _i}} \right)} {\xi _i} =21i=1Nj=1Nαiαjyiyjxi(xj)Tbi=1Nαiyi+i=1Nαi+i=1N(Cαiμi)ξi
  由于 ∑ i = 1 N α i y i = 0 \sum\limits_{i = 1}^N {\alpha _i} {y_i}=0 i=1Nαiyi=0 C − α i − μ i = 0 C - {\alpha _i} - {\mu _i} = 0 Cαiμi=0,并且将向量内积 x i ( x j ) T {x_i}{\left( { {x_j}} \right)^T} xi(xj)T表示为 ( x i ⋅ x j ) \left( { {x_i} \cdot {x_j}} \right) (xixj)
  因此简化为
              min ⁡ w , b , ξ L ( w , b , ξ , α , μ ) = − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i \mathop {\min }\limits_{w,b,\xi } L\left( {w,b,\xi ,\alpha ,\mu } \right) = - \frac{1}{2}\sum\limits_{i = 1}^N {\sum\limits_{j = 1}^N { {\alpha _i}{\alpha _j}{y_i}} } {y_j}\left( { {x_i} \cdot {x_j}} \right) + \sum\limits_{i = 1}^N { {\alpha _i}} w,b,ξminL(w,b,ξ,α,μ)=21i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi

(2) 求 min ⁡ w , b , ξ L ( w , b , ξ , α , μ ) \mathop {\min }\limits_{w,b,\xi } L\left( {w,b,\xi ,\alpha ,\mu } \right) w,b,ξminL(w,b,ξ,α,μ) α \alpha α的极大值,即是对偶问题
                  max ⁡ α − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i \mathop {\max }\limits_\alpha {\kern 1pt} - \frac{1}{2}\sum\limits_{i = 1}^N {\sum\limits_{j = 1}^N { {\alpha _i}{\alpha _j}{y_i}} } {y_j}\left( { {x_i} \cdot {x_j}} \right) + \sum\limits_{i = 1}^N { {\alpha _i}} αmax21i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi
                  s . t . ∑ i = 1 N α i y i = 0 s.t.{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} \sum\limits_{i = 1}^N { {\alpha _i}} {y_i} = 0 s.t.i=1Nαiyi=0
                     0 ≤ α i ≤ C 0 \le {\alpha _i} \le C 0αiC

此时,我们发现没有了参数 ξ i {\xi _i} ξi,与之前模型唯一不同在于又多了的限制条件 α i ≤ C {\alpha _i} \le C αiC。需要提醒的是,b的求值公式也发生了改变。先看看KKT条件的变化:
在这里插入图片描述
第一个式子表明在两条间隔线外的样本点前面的系数为0;第二个式子表示离群样本点前面的系数为C,第三个式子表示支持向量(也就是在超平面两边的最大间隔线上)的样本点前面系数在(0,C)上。通过KKT条件可知,某些在最大间隔线上的样本点也不是支持向量,相反也可能是离群点。 我们可以通过SMO算法来求上式极小化时对应的α向量就可以求出w和b了。

5. Hinge损失函数

我们从另一个角度来解读软间隔的损失函数,表达式如下:
                   ∑ i = 1 N [ 1 − y i ( w ⋅ x i + b ) ] + + λ ∥ w ∥ 2 {\sum\limits_{i = 1}^N {\left[ {1 - {y_i}\left( {w \cdot {x_i} + b} \right)} \right]} _ + } + \lambda {\left\| w \right\|^2} i=1N[1yi(wxi+b)]++λw2
  目标函数的第1项是经验损失或经验风险,函数
                  L ( y ( w ⋅ x + b ) ) = [ 1 − y ( w ⋅ x + b ) ] + L\left( {y\left( {w \cdot x + b} \right)} \right) = {\left[ {1 - y\left( {w \cdot x + b} \right)} \right]_ + } L(y(wx+b))=[1y(wx+b)]+
  称为合页损失函数( hinge loss function)。下标“十”表示以下取正值的函数。
                     [ z ] + = { z , z > 0 0 , z ≤ 0 {\left[ z \right]_ + } = \left\{ \begin{array}{l} z{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} ,{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} z > 0\\ 0{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} ,{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} z \le 0 \end{array} \right. [z]+={ z,z>00,z0
  也就是说,如果点被正确分类,且函数间隔大于1,损失是0,否则损失是 1 − y ( w ⋅ x + b ) {1 - y\left( {w \cdot x + b} \right)} 1y(wx+b)
  
  我们在下图还可以看出其他各种模型损失和函数间隔的关系:对于0-1损失函数,如果正确分类,损失是0,误分类损失1, 如下图黑线,【可见0-1损失函数是不可导的】。对于感知机模型,感知机的损失函数是 [ 1 − y ( w ⋅ x + b ) ] + {\left[ {1 - y\left( {w \cdot x + b} \right)} \right]_ + } [1y(wx+b)]+,这样当样本被正确分类时,损失是0,误分类时,损失是 − y ( w ⋅ x + b ) { - y\left( {w \cdot x + b} \right)} y(wx+b),如下图紫线。对于逻辑回归之类和最大熵模型对应的对数损失,损失函数是 l o g [ 1 + e x p ( − y ( w ∙ x + b ) ) ] log[1+exp(−y(w∙x+b))] log[1+exp(y(wx+b))], 如下图红线所示。 在这里插入图片描述

6.总结

  1. 线性可分SVM通过软间隔最大化,可以解决线性数据集带有异常点时的分类处理。
  2. 进行了软间隔的处理,在KTT条件下,松弛变量 ξ i {\xi_i} ξi没有出现在最后的目标函数中,最后的优化求解问题,也被拉格朗日对偶和SMO算法化解,使SVM趋向于完美。
参考资料

1 :https://www.cnblogs.com/jerrylead/archive/2011/03/18/1988415.html2
2: https://www.cnblogs.com/huangyc/p/9938306.html#_labelTop
3: https://zhuanlan.zhihu.com/p/76946313
4: 李航《统计学习方法》

猜你喜欢

转载自blog.csdn.net/qq_41709378/article/details/106639967