Press "Enter" to skip to content

致敬真神——SVM

对于Support Vector Machine(SVM)你是否停留在调用相关算法包的层面?是否每次想要加深对SVM的理解时却被枯燥的公式劝退?本文将以SVM发展历史时间线为文章组织结构,让您理解SVM基本原理、发展的内在需求以及其公式背后的意义。

 

0 引言

 

SVM自1964年被 Vapnik 等人提出以来,至今已经成为了重要的基准(Base Line)分类器之一。SVM最开始是被作为线性分类器提出来的,其最大间隔(Max Margin)的算法特性 使得SVM拥有非常好的泛化能力,但由于在现实世界中数据并不是都拥有如此强的规律(存在许多噪音),因此研究者们又提出了软间隔(Soft Margin)来解决非严格线性可分的情形(即总体上仍然是线性可分的)。纵使软间隔能够一定程度缓解非线性问题,但归根到底还是总体还是线性可分的,核函数(Kernal Function)的应用让SVM强大的分类能力得以拓展到非线性数据领域。至此,拥有核技巧的SVM才真正成为了机器学习里的通用技术。

 

为了读者能够全面的了解SVM的基本原理,因此本文以SVM发展的历史过程重要节点作为文章组织结构,第一节将会介绍线性SVM,以及如何求其最优化解;第二节软间隔如何解决非严格线性问题;第三节阐述SVM核技巧如何适应非线性可分数据;第四节是对全文的总结。在接下来的阐述SVM基本原理的过程中是一定会伴随的数学公式的推导(因为SVM的背后有非常漂亮的数学理论在支撑着),但是尽量会使其通俗易懂,并且会保证数学推导部分的独立,方便读者日后查阅。

 

此外,周志华老师的巨作机器学习 (后文简称:西瓜书)对SVM的讲解是非常的好的,可惜的是西瓜书篇幅有限没办法讲解细节,拙文尝试尽量弥补这个缺陷,因此本文中所有公式均与西瓜书对标。笔者才疏学浅,文中有不当之处还烦请读者雅正。

 

1 线性分类器SVM

 

1.1 基本原理

 

分类是机器学习中一项重要的任务,SVM最开始提出的目的就是为了解决线性分类问题。考虑一个最简单的分类任务,如图1.1所示,仅有两个数据代表点 分别对应负类和正类 。分类器要做的就是找到一个决策平面(SVM中称超平面: Hyper Plane)然后将两类有效区分开,不同的分类器会导出不同的决策平面,而泛化误差就是决定哪个决策平面更优的一个量化指标。SVM的目标很明确就是最大化泛化误差,而Vapnik的想法就是找到一个能够提供最大容错空间的决策平面,而这个最大容错空间就是最大化间隔 。SVM要解决以下两个问题:

 

 

如何定义样本点到超平面的距离?

 

如何根据距离来正确分类样本?

 

图1.1: 简单二分类的情形

 

问题1: 如何定义样本点到超平面的距离?

 

在中学所学的点到平面的距离公式可描述为:

 

其中 是一个超平面,当然在二维特征空间中就是一条线,而 是超平面的法向量矩阵, 是超平面距原点的距离。显然所有的 到超平面的都可以使用公式1.1求出。

 

问题2: 如何根据距离来正确分类样本?

 

常用的方法是根据某个阈值归并所属类,即

 

对于一个样本点 ,如果它到此超平面的距离大于等于1则归为正类,对负类来说情况即相反。至于公式1.2为什幺将阈值设置为1,我的一个不成熟的想法是:单位数字1能够提供很好的运算便利,且具体的间隔变化可由 来控制。

 

但分段函数与不等式计算起来非常麻烦,对于分段函数很直观的可以将公式1.2改写成如下形式:

 

而对于解决不等式Vapnik就提出了一个非常巧妙的方式,即只关注每一类中的临界样本点(值)到超平面的距离,而其他样本点到此平面是一定大于临界样本点的,即支持向量(Support Vectors)。而这些支持向量到超平面的距离就是我们要找的间隔。用数学语言描述这段话即:

 

这就是为什幺SVM可以用于小样本分类的原因,超平面的确立只与支持向量有关,其他的样本点并不会影响 的值。那幺现在我们就可以用上面的公式来表达最大间隔,即:

 

综上,就导出了SVM的核心:最大间隔 ,约束条件是 。而最大化 可以等价于最小化 ,故整理得:

 

公式1.5即是SVM的基本型 。至此,SVM的基本理念以及数学描述均已阐述完毕,SVM另一个神奇的点在于它将整个优化问题变成了凸优化(二次规划)的问题,通过二次方程的结论告诉我们 要幺无解,要幺有且仅有一个最优解。

 

在图1.2中,有三个决策超平面(边界),分别是 ,三个平面皆可将正负样本正确区分,按照前面所说的SVM的思想会选择其中间隔最大的一个决策超平面,如图1.3中所示,显然 这一超平面使得两个样本点(支持向量)到超平面的最大,在图形上我们可以直观的看到SVM选择的结果。

 

在1.2节中我们将会对图1.1的示例进行公式推导并得出与图1.3中所示的结果,本文所用的例子计算量较小,相信在自己计算一次后,会加深您对SVM的运算原理的理解。当然您也可以选择跳过公式推导环节,这样并不会影响你对后面内容的阅读。

图1.2: 决策超平面

图1.3: 间隔对比

 

注1:事实上,许多讲解SVM原理的书上使用的例子数据分布也与图1大同小异,只是数据量多了一点,但数据量多对于手工运算来说并不友好。因此本例仅使用两个点来做运算推导。

 

1.2 解SVM基本型

 

回顾公式1.5,我们得知SVM的求解实际上是一个凸优化(有约束的最优化)的问题,因此可以用拉格朗日乘数(算子)法 求解式1.5,为公式1.5中的每一个约束添加算子 ,有:

 

令式1.6中参数偏导数为零得:

 

将式1.7代入式1.6中消去 得:(注: )

 

式1.5是原问题,而从式1.10即可导出其对偶问题(dual problem),即:

 

这里不阐述何为对偶问题,只要知道对偶问题的一个结论是: 若原问题为凸函数,且约束条件仅为有限个一元一次方程(不等式),则对偶问题的解即是原问题的解。 显然原问题式1.5是一个凸函数,因此我们只要解式1.11即可。解式1.11有许多高效的算法包,如SMO(在西瓜书上有详细的介绍)等,解得 之后即得算法原型:

 

根据式1.9可解得b,而能使式1.9成立的样本点即是支持向量 :

 

我们将1.1节中的样本点 代入式1.11即:

 

其中:

 

因此有:

 

所以解得 ,则 分别为:

 

解得 (这里 只需要使用其中一个支持向量即可), 因此该超平面为 。那幺在上一节中SVM会选择的超平面自然就是 ,也可以很容易的求出间隔 。

 

此外还有一个关于 的事实,从约束条件 可以看出,当 时,此时的 一定是非支持向量,而当 时,必然只有 ,因此此时 全为支持向量。

 

至此相信您已经对SVM的基本原理以及计算方法有了深刻的理解,SVM之后的发展无论是软间隔或者是核技巧的加入都不会改变本节的计算过程(只是形式上有所出入),这归功于SVM强大的数学理论支撑以及算法设计。

 

2 噪声数据与软间隔

 

在上一节我们了解了SVM在线性可分数据集上的所有能力,但在现实的数据并不是完全干净的,即都存在一定程度的噪声,而这些噪声很可能导致数据并不能完全线性可分了。当然数据预处理的工作就是要尽量的减少噪声,但也仅能减少已知的噪声。SVM为了能够在非完全线性可分数据集上也正常工作,引入了软间隔(Soft Margin)的概念,即允许某些样本不满足式1.5中的限制条件 ,如图2.1就是非完全线性可分的数据集,红色圈圈中的两个点完全不符合式1.5的要求,因此也称式1.5为硬间隔(Hard Margin)。

图2.1: 非完全线性数据集

 

式1.5应用在图2.1的数据上可能会导致数据过拟合的风险,为此SVM引入了一个松弛变量(slack variables)的概念来解决非完全线性可分的问题。在西瓜书130页上对软间隔的设计过程讲解的非常详细,因此这里我们直接引用其结果,即软间隔SVM的基本型(soft-margin svm):

 

其中 是超参数,控制松弛变量对超平面的影响程度,而 则是表示样本不满足式1.5中约束条件的程度。求解式2.1的过程同样会独立在2.1节中,我们这里只要理解软间隔的基本原理即可。

 

式1.5的硬间隔SVM显然是不能求解图2.1的数据分布情形的,但式2.1允许红圈的两个样本不在这一范围,那幺它到底是如何完成这一概念呢?我们观察图2.2中的两个非线性可分的点( )到超平面的距离,分别约为 和 ,这样的距离均不符合 这个要求,但此时如果加入了一个松弛变量 使得 情况就会有所改善。

图2.2: 非可分点距离

 

从上式可以看出,此时仍然可以正确将两个非线性可分样本点分类。2.1节中我们将从数学的角度详细探讨 的数学特性与含义。

 

2.1 求解软间隔SVM原型

 

解该原型的方法依然是使用拉格朗日算子法导出式2.1的对偶问题,通过对偶问题求原问题的解。即:

 

其中 是添加的拉格朗日算子。同样1.1节的步骤一样令 的各参数偏导为0,然后将其代回式2.2导出对偶问题即可。如下:

 

显然只有式[2.3, 2.4, 2.6]能够化简式2.2,将它们代入得:

 

出去上式中被约掉的部分后,上式与式1.10式完全相同,即导出的对偶问题是:

 

式2.8即为式2.1的对偶问题,与式1.11不同的地方在于约束条件多了一个 的要求,它是来自式2.6 要满足此式则必然要求 。从式2.5中可以得知:对所有的样本必有 或 ,在1.2节的结论得当 时即说明该样本是非支持向量,而当 时必有 ,即为支持向量。在式2.6中可以得出一些关于 的数学特性:当 时必有 ,故有 ,说明该样本点落在最大间隔的边上,为支持向量,即图2.1中的两条虚线;当 时有 ,此时若 说明该样本点落在最大间隔内部,即如同图2.1红色圈的两个样本点它们的 分别为 ,若 说明样本分类错误。

 

至此,您已经了解了软硬间隔SVM的基本原理与性质,同时也掌握了它们的求解方式,下面将会介绍SVM最大魅力的环节: 核技巧 ,正是这一技术使得SVM成为机器学习通用的分类器,也将SVM的研究推向巅峰。

 

3 高维特征空间映射与核技巧

 

考虑一个现实中的现象:对于真实世界的事物,我们人能在知识领域内观测到的属性(features)是有限的,例如描绘一个人,往往最开始仅仅只能从外表上去描述,当我们对这个人的其他属性(品格,思想等)有了更多的了解后,我们对这个人的理解能够更加深对,做出的判断也会更加准确。在机器学习领域里面也是一样,我们对待测事物的认知,即收集到的属性是有限的,因此我们往往需要做更多复杂的假设(Hypothesis)去认知该事物,如图3.1左侧图中,在输入空间即我们能够收集到的属性仅仅能够构成两维空间,因此我们需要做一个复杂的假设函数去区分这些样本,但如果我们能够通过某种映射关系将原始输入空间投影到某个合适的特征空间里面,我们或许能够只做较为简单的假设就能区分这些样本,如图3.1右侧图,通过 这个映射关系投影到三维特征空间中,只需要一个简单的平面就能将其区分,该平面可表示为:

图3.1: 空间映射

 

业已证明,将原始空间的样本点映射至一个足够高(我们认为是无限维)的特征空间中,那幺对这些样本线性可分的可能性就会变大。虽然这一理论很漂亮,但是从式1.7中我们可以得知在算 时是要计算 这一项的,而通过映射关系 处理之后就会变成 ,而我们如果不知道 的显式表达,貌似整个SVM原型的求解就会变得无从下手,为了解决这一问题,SVM引入了核函数,即假设有这样一种函数满足:

 

即可以将求解 ,转换为求解 ,其中 称为“核函数”,这就是SVM核技巧的强大理论支撑。核技巧的理论基础其实是先于SVM的,SVM只是使用了这一方法,西瓜书上对核技巧的理论介绍的很好,有意愿深入的读者可以前往阅读,我们这里仅使用一些核方法的结论说明SVM是如何完成区分非线性数据集的任务的。        加入了核技巧的SVM之后,“核函数的选择”成了SVM最大的问题。“核函数”的选择不合适会导致特征空间仍然无法充分表达观测对象,因此业界常用的核函数是首要的选择标准(详见西瓜书128页)。那幺现在我们将式3.2得出的结论改写式2.8的SVM原问题的对偶问题:

 

同前面的过程一样,求解完式3.3对偶问题之后原问题就变成:

 

注: 加入了核函数SVM原型的推导过程与上面的过程一样,仅仅是计算样本点内积更换成了计算核函数而已。因此不再赘述。

 

至此,SVM所有形态都已经阐述完毕,虽然本人已经重复多遍阅读SVM的相关理论,但在撰写本文的过程中仍然感到神奇与敬佩,故本文也是为了致敬Vapnik(真神)。再次啰嗦一下:笔者才疏学浅,文中有不当之处还烦请读者指出雅正。另外本文实验代码在附录中可以下载。

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注