大纲

机器学习技法-Soft-Margin Support Vector Machine

上节课我们主要介绍了Kernel SVM。先将特征转换和计算内积这两个步骤合并起来,简化计算、提高计算速度,再用Dual SVM的求解方法来解决。Kernel SVM不仅能解决简单的线性分类问题,也可以求解非常复杂甚至是无限多维的分类问题,关键在于核函数的选择,例如线性核函数、多项式核函数和高斯核函数等等。但是,我们之前讲的这些方法都是Hard-Margin SVM,即必须将所有的样本都分类正确才行。这往往需要更多更复杂的特征转换,甚至造成过拟合。本节课将介绍一种Soft-Margin SVM,目的是让分类错误的点越少越好,而不是必须将所有点分类正确,也就是允许有noise存在。这种做法很大程度上不会使模型过于复杂,不会造成过拟合,而且分类效果是令人满意的。

Motivation and Primal Problem

1 Cons of Hard-Margin SVM

机器学习技法-Soft-Margin Support Vector Machine

给定一批资料如图所示,资料中可能会存在一些noise.直观上来说,左边的分离超平面更加合理一些,简单却又可以把绝大部分资料给分开。右边的分离超平面因为太复杂,拟合到了noise的信息。导致过拟合。所以想要获取好的分离超平面,就需要放弃一些noise 资料

2 Give Up on Some Examples

我们回顾一下在pocket算法,pocket的思想不是将所有点完全分开,而是找到一条分类线能让分类错误的点最少。而Hard-Margin SVM的目标是将所有点都完全分开,不允许有错误点存在。为了防止过拟合,我们可以借鉴pocket的思想,即允许有犯错误的点,目标是让这些点越少越好。

为了引入允许犯错误的点,我们将Hard-Margin SVM的目标和条件做一些结合和修正,转换为如下形式

机器学习技法-Soft-Margin Support Vector Machine

修正后的条件中,对于分类正确的点,仍需满足yn(wTzn+b)1,而对于noise点,满足yn(wTzn+b),即没有限制。修正后的目标除了12wTw项,还添加了ynsign(wTzn+b),即noise点的个数。参数C的引入是为了权衡目标第一项和第二项的关系,即权衡large margin和noise tolerance的关系。

3 Soft-Margin SVM (1/2)

我们再对上述的条件做修正,将两个条件合并,得到:

机器学习技法-Soft-Margin Support Vector Machine

我们可以发现一下问题

  • []不是线性函数,所以上面的问题不再是QP问题,自然无法转化为Dual问题,利用Kernel来简化计算

  • 只能简单的区分对还是错,不能区分小错误还是大错误

为了改进不足,我们继续修正

4 Soft-Margin SVM (2/2)

机器学习技法-Soft-Margin Support Vector Machine

我们通过引入ξn来记录第n个样本的违反边界条件的程度(linear constraints),并且对ξn进行惩罚(quadratic objective)。所以此时的的问题仍然是个QP问题,我们可以方便的对问题进行求解

  • 参数C是用来权衡large margin 和 margin violation,大的C,希望gen更少的margin violation.小的C,希望更大的margin

  • 此时的QP问题包含d̂ +1+N个变量,和2N个约束

接下来我们可以通过转化为对偶形式,接触对d̂ 的依赖

Dual Problem

1 Lagrange Dual

机器学习技法-Soft-Margin Support Vector Machine

我们通过引入拉格朗日乘子αnβn,构造拉格朗日函数

机器学习技法-Soft-Margin Support Vector Machine

接下来,利用Lagrange dual problem,将Soft-Margin SVM问题转换为如下形式:

机器学习技法-Soft-Margin Support Vector Machine

2 Simplify ξn and βn

根据之前介绍的KKT条件,我们对上式进行简化。上式括号里面的是对拉格朗日函数L(b,w,ξ,α,β)计算最小值。那么根据梯度下降算法思想:最小值位置满足梯度为零。

我们先对ξn求偏导

δLδξn=0=Cαnβn

不失优化性,我们令βn=Cαn,带入上述问题添加约束0αnC,我们可以整理为

机器学习技法-Soft-Margin Support Vector Machine

3 Other Simplifications

到了这里,我们发现问题跟Hard-Margin SVM中的dual形式是基本一致的,只是条件不同。那么,我们分别令拉格朗日函数L对b和w的偏导数为零

机器学习技法-Soft-Margin Support Vector Machine

经过进一步化简和推导,我们可以导出最终的形式

4 Standard Soft-Margin SVM Dual

机器学习技法-Soft-Margin Support Vector Machine

我们发现与Hard-Margin SVM Dual的唯一区别是多了一个上界约束,导致约束条件从N+1个变成2N+1

Messages behind Soft-Margin SVM

1 Kernel Soft-Margin SVM

推导完Soft-Margin SVM Dual的简化形式后,就可以利用QP,找到Q,p,A,c对应的值,用软件工具包得到αn的值。并且利用核函数的方式,同样简化计算。Soft-Margin SVM Dual计算αn的方法过程与Hard-Margin SVM Dual的过程是相同的。

机器学习技法-Soft-Margin Support Vector Machine

现在还留下一个问题就是计算b

2 Solving for b

机器学习技法-Soft-Margin Support Vector Machine

在hard-margin的情况下,我们可以通过选取αn>0所对应的样本点计算b

在soft-margin的情况下,因为有两个拉格朗日变量αnβn,所以互补松弛性条件有两个

αn(1ξnyn(wTzn+b))=0(Cαn)ξn=0

我们选取αn>0的点,即SV,得到b=ysysξswTzs,但我们还不能完全确定b

所以我们再加上限制,αn<C,我们称之为Free SVs,我们可以利用这样的点来计算b.

b=yswTzs

机器学习技法-Soft-Margin Support Vector Machine

上面求解b提到的一个假设是αs<C,这个假设是否一定满足呢?如果没有free SV,所有αs>0的点都满足αs=C怎么办?一般情况下,至少存在一组SV使αs<C的概率是很大的。如果出现没有free SV的情况,那么b通常会由许多不等式条件限制取值范围,值是不确定的,只要能找到其中满足KKT条件的任意一个b值就可以了。这部分细节比较复杂,不再赘述

2 Soft-Margin Gaussian SVM in Action

机器学习技法-Soft-Margin Support Vector Machine
注意Soft-Margin SVM仍然有可能会过拟合,当C过大的时候,能容忍的误差就比较少,就会导致过拟合。

所以对于Soft-Margin Gaussian SVM,我们要谨慎选择参数(γ,C)

3 Physical Meaning of αn

机器学习技法-Soft-Margin Support Vector Machine

  • αn=0,得ξn=0ξn=0表示该点没有犯错,αn=0表示该点不是SV。所以对应的点在margin之外(或者在margin上),且均分类正确。

  • 0<α<C,得ξn=0,且yn(wTzn+b)=1。得ξn=0表示该点没有犯错,yn(wTzn+b)=1表示该点在margin上。这些点即free SV,确定了b的值。

  • αn=C,不能确定ξn是否为零,且得到1yn(wTzn+b)=ξn,这个式表示该点偏离margin的程度,ξn越大,偏离margin的程度越大。只有当ξn=0时,该点落在margin上。所以这种情况对应的点在margin之内负方向(或者在margin上),有分类正确也有分类错误的。这些点称为bounded SV。

所以,在Soft-Margin SVM Dual中,根据αn的取值,就可以推断数据点在空间的分布情况。

Model Selection

1 Selection by Cross Validation

不同的(C,γ)组合,margin的差别很大。那么如何选择最好的(C,γ)等参数呢?最简单最好用的工具就是validation。只需要将由不同(C,γ)等参数得到的模型在验证集上进行cross validation,选取Ecv最小的对应的模型就可以了。例如上图中各种(C,γ)组合得到的Ecv如下图所示:
机器学习技法-Soft-Margin Support Vector Machine

2 Leave-One-Out CV Error for SVM

留一交叉验证就是验证集只有一个样本的情况,对于SVM问题,留一交叉验证误差可以表示为:

Eloocv=#SVN

下面做简单证明
机器学习技法-Soft-Margin Support Vector Machine

令样本总数为N,对这N个点进行SVM分类后得到margin,假设第N个点(xN,yN)αN=0,不是SV,即远离margin(正距离)。这时候,如果我们只使用剩下的N-1个点来进行SVM分类,那么第N个点(xN,yN)必然是分类正确的点,所得的SVM margin跟使用N个点的到的是完全一致的。这是因为我们假设第N个点是non-SV,对SV没有贡献,不影响margin的位置和形状。所以前N-1个点和N个点得到的margin是一样的。

那么,对于non-SV的点,它的g=g,即对第N个点,它的Error必然为零:

enonSV=err(g,nonSV)=err(g,nonSV)=0

对于SV的点,他的error可能是0,也可能是1,即
eSV1

那么我们可以得到

Eloocv=#SVN

这也很符合我们以前的结论,即只有SV影响margin,non-SV对margin没有任何影响,可以舍弃。

SV的数量在SVM模型选择中也是很重要的。一般来说,SV越多,表示模型可能越复杂,越有可能会造成过拟合。所以,通常选择SV数量较少的模型(这里不用CV是为了节省时间),然后在剩下的模型中使用cross-validation,比较选择最佳模型。

相关文章: