摘要
对于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)求出。
问题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:事实上,许多讲解SVM原理的书上使用的例子数据分布也与图1大同小异,只是数据量多了一点,但数据量多对于手工运算来说并不友好。因此本例仅使用两个点来做运算推导。
1.2 解SVM基本型
回顾公式(1.5),我们得知SVM的求解实际上是一个凸优化(有约束的最优化)的问题,因此可以用拉格朗日乘数(算子)法求解式(1.5),为公式(1.5)中的每一个约束添加算子,有:
令式(1.6)中参数偏导数为零得:
将式(1.7)代入式(1.6)中消去得:(注:)
式(1.5)是原问题,而从式(1.1)0即可导出其对偶问题(dual problem),即:
这里不阐述何为对偶问题,只要知道对偶问题的一个结论是:若原问题为凸函数,且约束条件仅为有限个一元一次方程(不等式),则对偶问题的解即是原问题的解。 显然原问题式(1.5)是一个凸函数,因此我们只要解式(1.1)1即可。解式(1.1)1有许多高效的算法包,如SMO(在西瓜书上有详细的介绍)等,解得之后即得算法原型:
根据式(1.9)可解得b,而能使式(1.9)成立的样本点即是支持向量:
我们将1.1节中的样本点代入式(1.1)1即:
其中:
因此有:
所以解得,则分别为:
解得(这里只需要使用其中一个支持向量即可), 因此该超平面为。那么在上一节中SVM会选择的超平面自然就是,也可以很容易的求出间隔。
此外在解式(1.5)时还需要满足KKT(Karush-Kuhn-Tucker):
从式(1.14)KKT条件中我们可以得知一个关于的事实,当时,此时的不会对式(1.11)起作用,所以此时的样本点一定是非支持向量,而当时,必然只有,因此此时为支持向量。
至此相信您已经对SVM的基本原理以及计算方法有了深刻的理解,SVM之后的发展无论是软间隔或者是核技巧的加入都不会改变本节的计算过程(只是形式上有所出入),这归功于SVM强大的数学理论支撑以及算法设计。
2 噪声数据与软间隔
在上一节我们了解了SVM在线性可分数据集上的所有能力,但在现实的数据并不是完全干净的,即都存在一定程度的噪声,而这些噪声很可能导致数据并不能完全线性可分了。当然数据预处理的工作就是要尽量的减少噪声,但也仅能减少已知的噪声。SVM为了能够在非完全线性可分数据集上也正常工作,引入了软间隔(Soft Margin)的概念,即允许某些样本不满足式(1.5)中的限制条件,如图2.1就是非完全线性可分的数据集,红色圈圈中的两个点完全不符合式(1.5)的要求,因此也称式(1.5)为硬间隔(Hard Margin)。
式(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.1节中我们将从数学的角度详细探讨的数学特性与含义。
2.1 求解软间隔SVM原型
解该原型的方法依然是使用拉格朗日算子法导出式(2.1)的对偶问题,通过对偶问题求原问题的解。即:
其中是添加的拉格朗日算子。同样1.1节的步骤一样令的各参数偏导为0,然后将其代回式(2.2)导出对偶问题即可。如下:
显然只有式[2.3, 2.4, 2.6]能够化简式(2.2),将它们代入得:
出去上式中被约掉的部分后,上式与式(1.1)0式完全相同,即导出的对偶问题是:
式(2.8)即为式(2.1)的对偶问题,与式(1.1)1不同的地方在于约束条件多了一个的要求,它是来自式(2.6)要满足此式则必然要求。同样的,我们也可以得出式(2.1)的KKT条件:
从式(2.9)KKT条件中可以得知:对所有的样本必有或,在1.2节的结论得当时即说明该样本是非支持向量,而当时必有,即为支持向量。在式(2.6)中可以得出一些关于的数学特性:当时必有,故有,说明该样本点落在最大间隔的边上,为支持向量,即图2.1中的两条虚线;当时有,此时若说明该样本点落在最大间隔内部,即如同图2.1红色圈的两个样本点它们的分别为,若说明样本分类错误。
至此,您已经了解了软硬间隔SVM的基本原理与性质,同时也掌握了它们的求解方式,下面将会介绍SVM最大魅力的环节:核技巧,正是这一技术使得SVM成为机器学习通用的分类器,也将SVM的研究推向巅峰。
3 高维特征空间映射与核技巧
考虑一个现实中的现象:对于真实世界的事物,我们人能在知识领域内观测到的属性(features)是有限的,例如描绘一个人,往往最开始仅仅只能从外表上去描述,当我们对这个人的其他属性(品格,思想等)有了更多的了解后,我们对这个人的理解能够更加深对,做出的判断也会更加准确。在机器学习领域里面也是一样,我们对待测事物的认知,即收集到的属性是有限的,因此我们往往需要做更多复杂的假设(Hypothesis)去认知该事物,如图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(真神)。再次啰嗦一下:笔者才疏学浅,文中有不当之处还烦请读者指出雅正。另外本文实验代码在附录中可以下载。
4 小结
以SVM形态发展的重要节点作为引子讲述了SVM的本质以及其数学理论的变与不变,虽然SVM的基础理论已经较为完善,但其应用方面仍然有许多工作可以完善,如拓展为多分类任务,或者用作回归任务等。读者可以自行查找对应应用领域的资料,但其实SVM本质是不变的,掌握了SVM本质内容,就能像其发展过程一样以不变应万变!