文章目录
Soft-Margin Support Vector Machine
上节课介绍了Kernel SVM。是为了消除Dual SVM计算过程中 空间中特征维度 的影响,从而降低算法复杂度,提高求解速度。其方法是将特征空间转换和计算内积两个步骤合并为一步完成,再用二次规划求解。通过引入不同的核函数,构造不同的Kernel SVM。上节课中提到,Kernel的选择会影响SVM的分类效果。Kernel SVM可以解决线性分类,也可以解决无限多维度的分类。之前学习的三种支持向量机都是硬边界(Hard-Margin)的支持向量机,要求分隔超平面一定要将样本点严格地可分。这需要复杂的特征转换,并且可能造成过拟合。本节课程介绍Soft-Margin Support Vector Machine,来放宽对分隔超平面的限制。
4.1 Motivation and Primal Problem
上节课最后讲解的 Gaussian Kernel SVM好像过于复杂,容易导致过拟合。其中一个原因是转换过程太powerful了,即使有large margin的限制,模型仍然很复杂。另一个原因就是 Hard-Margin,即坚持把训练样本完美分开,导致模型很复杂。下面看一个简单的例子:
左图的分隔超平面是一次多项式,右图的分隔超平面是四次多项式。虽然左图中的超平面有两个样本点分类错误,但是大部分都分类正确;右图中所有样本点都分类正确(Hard-Margin),但是超平面过于复杂,容易导致过拟合。
那么应该如何降低过拟合风险呢?将一些分类错误的样本点作为噪声。回顾之前的pocket算法,当没办法找到可以将所有样本点分开的超平面(二维空间中为一条直线)时,选择一条错误率最少的线,即目标函数是最小化所有分类错误样本点的个数。同理,在Hard-Margin SVM中,将原条件放松,可以容忍一些分类错误的样本点,目标函数是最小化 。
将两种算法的思想结合:
先看条件,第一个条件表示样本点要分类正确;第二个条件表示允许有分类错误的样本点存在(分类错误时, 与 异号),但是只有第二个条件还不行,因为如果都分类错误也是满足的。所以需要改变Hard-Margin SVM的目标函数,即添加pocket算法中的最小化分类错误样本点的个数。这样,就保证了既允许分类错误的样本点存在,也控制了分类错误样本点的个数。添加参数C是为了权衡目标函数中第一项和第二项的关系,即权衡large margin和noise tolerance的关系。
将两个条件合并,记为:
这就是 Soft-Margin的雏形,但是存在两个问题,第一个就是目标函数中第二项是非线性的(不能写成多项式的形式),不满足二次规划(QP)的条件,所以不能使用Dual SVM或Kernel SVM的求解方法求解。第二个问题是没有办法区分误差的大小。为了解决这两个问题,对原表达式进行修正。
其思想是将原来用个数表达误差变为衡量误差的大小,对所有分类错误的样本点与真实样本点的差距求和,变为目标函数中要惩罚的错误项,就将非线性问题转化为了线性问题。通过引入一个新的参数,该参数是一次项,满足二次规划的条件,可以使用之前的方法求解。那么,最终的 Soft-Margin的表达式为:
其中 样本点犯错误的程度, 表示没有误差, 越大,标识错误越大,即与边界(margin)的距离越大。参数 表示选择大的边界与分类错误样点的误差之间的权衡。大的 表示更注重分类错误样本点的误差,即尽可能的减少分类错误样本点的误差;小的 表示更注重边界,即尽可能大的边界。
现在,用二次规划求解时,包含 个变量, 个限制条件。
习题1:
4.2 Dual Problem
接下来推导Soft-Margin的对偶问题,如此就可以像之前的Dual SVM 一样,很容易做特征转换,易于求解,并方便引入 Kernel ,进一步简化 SVM 的计算,降低算法复杂度,提高泛化能力。先写出上一小节推导出的Soft-Margin目标函数:
首先,构造拉格朗日函数。因为包含两个限制条件,所以需要引入两个拉格朗日乘子 和 ,构造的拉格朗日函数 为:
其次,构造拉格朗日对偶:
然后,进一步简化。思路是:括号内的表达式是借助构造的拉格朗日函数求解最优化问题,需要先求解出各变量之间存在的等式关系。即令对求解变量的偏导数等于零,然后求出一个包含变量之间关系的等式,最后将条件代入原目标函数,达到消除变量更易求解的目的。本问题中,具体求解过程如下:
最后,Soft-Margin SVM的对偶问题转化为:
此时括号内,与之前所学的 Hard-Margin SVM的表达式类似,只是限制条件不同,本质上还是拉格朗日函数求解最优化问题。要求解的变量为 ,分别对其求偏导,求得:
与之前的求解方法类似,使用KKT条件求解得到Soft-Margin SVM的对偶形式为:
Soft-Margin 与 Hard-Margin 的 Dual SVM 的目标函数基本相同,只是限制条件不同。Hard-Margin Dual SVM有一个拉格朗日乘子,为 ;Soft-Margin Dual SVM有两个拉格朗日乘子,第一个限制条件的为 ,第二限制条件的为 。使用二次规划求解时,两类SVM要求解的变量 皆为N个。不同的是,Soft-Margin的限制条件变为了 个,因为 多了上限 ,所以需要多求解 个变量,即多了 个限制条件;Hard-Margin Dual SVM的限制条件为 个,因为 的上限没有限制。
习题2:
4.3 Messages behind Soft-Margin SVM
Kernel Soft-Margin SVM
接下来求解 Soft-Margin Dual SVM,求解方法依然是二次规划。其求解过程的伪代码如下:
可以看到,与 Hard-Margin Dual SVM 几乎一样,只是 多了上限 。这样就会更加灵活,通过控制的值,来权衡更注重分类边界还是更注重减少错误分类样本的误差。Hard-Margin要求超平面一定严格可分,但是Soft-Margin没有这个限制,可以容忍分类错误的样本点。Soft-Margin的SVM是实际应用中最常用的方法。现在关键的问题是如何求解参数 ,之前求解 的方法是利用 KKT条件求解,然后带入一个支持向量求解得到 。现在对 Soft-Margin Dual SVM来说是一个新的QP问题,它的KKT条件已经变了,那么还可以用之前的方法求解吗?下面来探讨这个问题:
上图中是两类SVM求解参数 的方法,使用KKT条件中的松弛条件,即要求等式中的两部分有一部分为零,找到一个满足 的支持向量,然后可以求出 的表达式,求解出表达式中的参量时,可以进一步求解得到 。
在Soft-Margin SVM中,由于第一个限制条件中有参数 ,将满足条件 的支持向量代入求解 的表达式,还不能完全求出。因此考虑用第二个限制条件 将 消去。如果 ,则一定有 带入第一个限制条件可求得 ,将满足条件 的支持向量称为 free SV。引入核函数后, 的表达式为:
以上表达式是由 推导出来的,即假设一定存在free SV,那么这个假设一定满足吗?一般情况下满足的,只有极少数情况下不满足,如果不满足一般 会由许多约束条件,但是值是不确定的,由许多个解,从其中找到一个满足KKT条件的即可。
Soft-Margin Gaussian SVM in Action
下面看 的上界不同取值对 Soft-Margin Gaussian SVM 的分隔超平面的影响。分别取 时的跟个超平面的情况如下:
可以看出,较大的 对错误的容忍度较低,即执着于将所有样本点分隔开,把可能是噪声的样本也分隔开,容易导致过拟合。较小的 对错误的容忍度较大,虽然不能把所有样本点都分隔开,将一些离群的样本点当做噪声处理,这更符合实际情况。这也说明了调整参数 和 的重要性。
接下来看看 的物理意义。Soft-Margin SVM的KKT条件中的松弛条件为:
根据拉格朗日乘子 的取值范围,可以将样本点分为三类,如图所示:
- non SV: 图中绿色圆圈圈出的点,表示远离边界的样本点;
- free SV:图中橙色圆圈圈出的点,表示在边界上的样本点;
- bounded SV:图中蓝色圆圈圈出的点,便是在边界内部的点,即存在误差的点。
可以根据 来分析Soft-Margin SVM中样本的分布。常用的SVM就是指软边界的SVM。
习题3:
4.4 Model Selection
通过以上的学习,我们知道参数的选择很重要,包括 的选择,Kernel的选择等。在 Gaussian SVM中,不同的参数对应不同的分隔超平面, 先看 Gaussian SVM 选择不同的 和 的情况:
横坐标代表参数 ,纵坐标代表参数 。那么应该如何选择参数 呢?接下来研究这个问题。
在机器学习基石课程中学习过交叉验证(Cross Validation)的方法,即将不同参数配置的模型在数据集上通过交叉验证的方法选择出最佳的参数配置,其目标函数为 ,选择 最小时的参数配置即为最佳配置。上例中,不同的参数组合对应的 为:
一般来说, 并非 的连续函数,很难使用最优化方法求解,通常做法是离散地选取不同的参数组合,然后使用 V-折交叉验证(V-Fold Cross Validation)方法,计算 ,从中选择最小的 所对应的参数 即为最佳配置。V-折交叉验证是SVM算法中常用的方法。
V-折交叉验证的特殊情况是 1-折交叉验证,又称为留一法交叉验证(Leave-One-Out CV),即每次选出一个样本作为验证集。其计算过程如下:
其中, 表示支持向量占所有样本的比例。假设有N个样本,第N个样本点 的 ,通过前一节可知,满足该条件的样本点不是支持向量(non SV),并且是远离margin的。使用剩下的的 N-1个点分类,则第N个样本点一定是分类正确点,所以分类边界与使用N个样本点进行分类得到的边界是一样的。这是因为non SV不影响SVM求出的分隔超平面,所以也不会影响margin。
对于non-SV的样本,它的矩 ,即对于第N个样本点,它的误差 。对于 SV 的样本,它们的误差要么是0,要么是1,所以一定有 成立。
支持向量(SV)的选择对于SVM至关重要。SV越多,表示模型越复杂,也有可能导致过拟合。通常选择SV较少的模型,然后通过交叉验证最小化误差 选择误差最小的模型。
习题4:
Summary
四种SVM至此介绍完毕。本节课介绍了Soft-Margin SVM,我们常说的SVM就是这种。与Hard-Margin坚持样本一定可分不同,Soft-Margin SVM将离群的样本点当做噪声处理,允许一部分分类错误的样本点存在,降低了模型的复杂度,减少了过拟合风险。为了实现对分类错误样本点的容忍度,借鉴pocket算法的思想,引入了分类错误误差 ,并添加系数 ,表示目标函数中跟注重边界宽度还是更注重最小化分类错误样本的误差的权衡。引入两个拉格朗日乘子,构造了拉格朗日函数,求解出Soft-Margin Dual SVM。与Hard-Margin SVM不同的是, 有了上界 限制。 根据取值的不同,可以将输入样本分为三类:non SV,free SV,bounded SV。根据 可以辅助分析数据。最后介绍了 Soft-Margin SVM中参数的选择问题,通常使用交叉验证的方法选择。