Support Vector Machine
支持向量机(support vector machine)是一种机器学习模型,其主要用途是进行模式识别、分类和回归,目前被广泛应用于工业界中,相比于其它机器学习算法,支持向量机在模式识别以及分类问题中表现出了卓越的性能。本文主要对其中的数学模型、公式进行推导,以便在实现算法时对代码有更深层次的理解。
问题的提出[1]
给定训练样本
D={(x⃗ 1,y1),(x⃗ 2,y2),...,(x⃗ m,ym)},yi∈{−1,+1}
,分类学习最基本的想法就是基于训练集
D
在样本空间中找到一个划分超平面(separating hyperplane),将不同类别的样本分开,但能将训练样本分开的超平面(训练样本维数越大,超平面法向量的维数越大)可能有很多,如图所示,我们应该努力去找到哪一个呢?
直观来看,我们应该去寻找位于“正中间”的超平面,即图中红色的那个,那么,怎样从数学的角度去寻找呢?
在样本空间中,划分超平面可通过如下线性方程组来描述
其中 w⃗ =(w1;w2;...;wd) 为法向量,决定了超平面的方向; b 为位移项,决定了超平面与原点间的距离,样本空间中任意点
其中,
r
被称为函数间隔(function margin),与其对应的间隔叫做几何间隔(geometric margin),分子部分表示取绝对值,分母部分为
假设超平面能正确分类,即对于
(x⃗ i,yi)∈D
,若
yi=+1
,则有
w⃗ Tx⃗ i+b
> 0;若
yi=−1
,则有
w⃗ Tx⃗ i+b
< 0,令
如下图所示,距离超平面最近的几个训练样本使上式的等号成立,即满足
w⃗ Txi→+b=±1
,它们被称为支持向量(support vector)(图中蓝圈所示),两个异类支持向量到超平面的距离之和为
模型的建立
理想的超平面使异类支持向量之间的间隔达到最大,也就是要找到能满足约束的参数
w⃗
和
b
,使得
显然,最大化 ||w⃗ ||−1 等价于最小化 ||w⃗ ||2 ,于是,上式可重写为
这就是支持向量机(SVM)的数学模型。
模型的求解
不难看出,支持向量机(SVM)的基本模型是一个凸二次规划问题(二次规划问题是指目标函数为二次函数,约束条件为线性约束的优化问题),要求解该问题,有许多现成的软件包可以使用,但我们有更为高效的办法。在这之前,先介绍一些数学理论知识。
1. 拉格朗日乘子法
考虑如下的优化问题:
根据拉格朗日乘子法:
其中,
α⃗ i,β⃗ i
称之为拉格朗日乘子,定义
现在我们考虑
θp(w⃗ )
到底表示了什么
因此
所以,原优化目标
2. 对偶问题
下面我们来讨论原问题的对偶问题
注意到对偶问题 d⋆ 和原问题 p⋆ 相比仅仅是交换了max、min的顺序,事实上,对偶问题的最优值总是小于等于原问题的最优值( maxminf(x)≤minmaxf(x) ),即
举个简单的例子
等式的左边总是小于等于等式右边,因为
通常情况下,在实际应用中,对偶问题的最优值与原问题的最优值相等,故通常通过解对偶问题来得到原问题的解,因为对偶问题比原问题更加简单,且拥有更多有用的性质。
3. SVM模型的求解
前面已经提到,SVM的基本数学模型是一个凸二次规划模型(如果此处看不出来,等下转化为拉格朗日式更加清晰),由约束条件可得
对原问题使用拉格朗日乘子法可得
可以明显看到,原问题的拉格朗日乘子式是一个凸二次规划问题,根据上述理论,原问题可写为 minw⃗ ,bmaxα⃗ ,α⃗ i≥0L(w⃗ ,b,α⃗ ) 的形式,首先我们来讨论对这个式子进行直接求解,对于一个凸函数,在 w⃗ ,b 都需要求解的情况下,先求其最大值是一件非常困难的事情,故我们将原问题转化为对其对偶问题进行求解。
其对偶问题为
maxα⃗ ,α⃗ i≥0minw⃗ ,b L(w⃗ ,b,α⃗ )
,下面我们来讨论如何将原问题转化为对偶问题以及如何对对偶问题进行求解,要求其拉格朗日乘子式的最小值,我们可以将
L
对
将得到的第一个式子代回
L
即可得其最小值,第二个式子作为约束条件使用
其中, <x⃗ i,x⃗ j> <script type="math/tex" id="MathJax-Element-131"><\vec{x}_i,\vec{x}_j></script>是两个向量的内积,这里这样写的原因是为了之后的核函数做铺垫。故原问题的对偶问题为
可见,我们将原问题最终转化为上式进行求解,通过解出
α⃗ i
的值后代回求得
w⃗ ,b
,即可得到超平面方程
4. KKT条件[1]
注意到原问题有不等式约束,在转化为拉格朗日式时需满足KKT条件(Karush-Kuhn-Tucker complementary condition),即要求
于是,对于任意训练样本 (x⃗ i,yi) 。若 α⃗ i=0 ,则该样本不会在模型的求和式中出现,也就不会对 f(x⃗ ) 有任何影响;若 α⃗ i>0 ,则必有 yi(w⃗ Tx⃗ i+b)=1 ,所对应的样本点位于最大间隔边界上,是一个支持向量。这显示出支持向量机的一个重要性质:训练完成后,大部分的训练样本都不需保留,最终模型仅与支持向量有关。
那么,如何求解原问题的对偶问题呢?目前人们针对二次规划问题的特性,提出了许多高效的算法,其中最为著名的是SMO(Sequential Minamal Optimization)算法,本篇博客对SMO算法不予介绍,在下篇博客中会介绍该算法的数学思想及具体代码实现。
参考文献
[1] 周志华,机器学习[M]. 清华大学出版社,2016:121-125.