支持向量机详解

Support Vectors Circled.png

本文是《统计学习方法》第七章《支持向量机》的笔记,附带了少量注解和背景知识的补充;后半部分将《机器学习实战》支持向量机的Python代码加以整理注释,与公式放到一起形成对照,辅助理解。私以为,没有泛函分析基础的人是无法深刻理解支持向量机的,更不能随便写“入门指南”误导别人。所以这篇笔记既不敢删教材的内容,也不敢加以发挥,只是将李航老师的教材搬运过来,按李航老师的博客上的勘误表修正了两个错误,用括号注解了自己的一点理解,并在文末以附录的形式补充了一些背景知识。

本笔记服务于自己备忘,不做其他用途。差点烂在草稿箱里,还是发出来方便阅读一些,毕竟正在一边参考这篇笔记,一边看libsvm和liblinear的源码。

支持向量机简介

支持向量机(support vector machines,SVM)是一种二类分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;支持向量机还包括核技巧,这使它成为实质上的非线性分类器。支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划(convex quadratic programming,不怕,附录有解释)的问题,也等价于正则化的合页损失函数(后面也有解释)的最小化问题。支持向量机的学习算法是求解凸二次规划的最优化算法。

支持向量机学习方法包含构建由简至繁的模型:线性可分支持向量机(linear support vector machine in linearly separable case)、线性支持向量机(linear support vector machine)及非线性支持向量机(non-linear support vector machine)。简单模型是复杂模型的基础,也是复杂模型的特殊情况。当训练数据线性可分时,通过硬间隔最大化(hard margin maximization),学习一个线性的分类器,即线性可 分支持向量机,又称为硬间隔支持向量机;当训练数据近似线性可分时,通过软间隔最大化(soft margin maximization),也学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;当训练数据线性不可分时,通过使用核技巧 (kernel trick)及软间隔最大化,学习非线性支持向量机。

本章按照上述思路介绍3类支持向量机、核函数及一种快速学习算法——序列最小最优化算法(SMO)。

线性可分支持向量机与硬间隔最大化

线性可分支持向量机

考虑一个二类分类问题。假设输入空间与特征空间为两个不同的空间。输入空间为欧氏空间或离散集合,特征空间为欧氏空间或希尔伯特空间。线性可分支持向量机、线性支持向量机假设这两个空间的元素一一对应,并将输入空间中的输入映射为特征空间中的特征向量。非线性支持向量机利用一个从输入空间到特 征空间的非线性映射将输入映射为特征向量。所以,输入都由输入空间转换到特征空间,支持向量机的学习是在特征空间进行的。

假设给定一个特征空间上的训练数据集

其中,,xi为第i个特征向量,也称为实例,yi为xi的类标记,正负时分别称xi为正例或负例;称为样本点,再假设训练数据集是线性可分的。

学习的目标是在特征空间中找到一个分离超平面,能将实例分到不同的类。分离超平面对应于方程,它由法向量ww和截距b决定,可用(w,b) 来表示。分离超平面将特征空间划分为两部分,一部分是正类,一部分是负类。法向量指向的一侧为正类,另一侧为负类。

一般地,当训练数据集线性可分时,存在无穷个分离超平面可将两类数据正确分开。感知机利用误分类最小的策略,求得分离超平面,不过这时的解有无穷多个。线性可分支持向量机利用间隔最大化求最优分离超平面,这时,解是唯一的。

定义 (线性可分支持向量机)给定线性可分训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的分离超平面为

以及相应的分类决策函数

称为线性可分支持向量机。

考虑如图所示的二维特征空间中的分类问题。图中“。”表示正例,“x ”表示负例。训练数据集线性可分,这时有许多直线能将两类数据正确划分。线性可分支持向量机对应着将两类数据正确划分并且间隔最大的直线,如图所示。

 

间隔最大及相应的约束最优化问题将在下面叙述。这里先介绍函数间隔和几何间隔的概念。

函数间隔和几何间隔

在上图中,有A、B、 C三个点,表示3个实例,均在分离超平面的正类一侧,预测它们的类。点A距分离超平面较远,若预测该点为正类,就比较确信预测是正确的;点C距分离超平面较近,若预测该点为正类就不那么确信;点B介于点A与C之间,预测其为正类的确信度也在A与C之间。

一般来说,一个点距离分离超平面的远近可以表示分类预测的确信程度。在超平面w*x + b = 0确定的情况下,| w*x + b|能够相对地表示点x距离超平面的远近。而w*x + b 的符号与类标记y的符号是否一致能够表示分类是否正确。所以可用量y(w*x + b)来表示分类的正确性及确信度,这就是函数间隔(functional margin)的概念。

定义(函数间隔)对于给定的训练数据集T和超平面(w,b),定义超平 面(w,b)关于样本点(xi,yi)的函数间隔为

定义超平面(w,b)关于训练数据集T的函数间隔为超平面(w,b)关于T中所有样本点的函数间隔之最小值,即

函数间隔可以表示分类预测的正确性及确信度。但是选择分离超平面时,只有函数间隔还不够。因为只要成比例地改变w和b,例如将它们改为2w和2b,超平面并没有改变,但函数间隔却成为原来的2倍。这一事实启示我们,可以对分离 超平面的法向量w加某些约束,如规范化,||w||=1,使得间隔是确定的。这时函数间隔成为几何间隔(geometric margin)。

下图给出了超平面(w,b)及其法向量w。点A表示某一实例xi,其类标记 为yi=+1。点A与超平面(w, b)的距离由线段AB给出,记作γi。

其中,||w||为w的L2范数。这是点A在超平面正的一侧的情形。如果点A在超平面负的一侧,即yi=-1,那么点与超平面的距离为

由这一事实导出几何间隔的概念。

定义(几何间隔)对于给定的训练数据集T和超平面(w,b),定义超平 面(w,b)关于样本点的几何间隔为

定义超平面(w,b)关于训练数据集T的几何间隔为超平面(w,b)关于T中所有样本点的几何间隔之最小值,即

超平面(w,b)关于样本点的几何间隔一般是实例点到超平面的带符号的距离(signed distance),当样本点被超平面正确分类时就是实例点到超平面的距离。

从函数间隔和几何间隔的定义可知,函数间隔和几何间隔有下面的关系:

如果||w||=l,那么函数间隔和几何间隔相等。如果超平面参数w和b成比例地改变(超平面没有改变),函数间隔也按此比例改变,而几何间隔不变。

间隔最大化

支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。对线性可分的训练数据集而言,线性可分分离超平面有无穷多个(等价于感知机),但是几何间隔最大的分离超平面是唯一的。这里的间隔最大化又称为硬间隔最大化(与将要讨论的训练数据集近似线性可分时的软间隔最大化相对应)。

间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据进行分类。也就是说,不仅将正负实例点分开,而且对最难分的实例点(离超平面最近的点)也有足够大的确信度将它们分开。这样的超平面应该对未知的新实例有很好的分类预测能力。

1、最大间隔分离超平面

下面考虑如何求得一个几何间隔最大的分离超平面,即最大间隔分离超平面。具体地,这个问题可以表示为下面的约束最优化问题:

即我们希望最大化超平面(w,b)关于训练数据集的几何间隔γ。约束条件表示的是超平面(w,b)关于每个训练样本点的几何间隔至少是γ。

考虑几何间隔和函数间隔的关系式,可将这个问题改写为

 

也就是把几何间隔换为函数间隔。

函数间隔的取值并不影响最优化问题的解。事实上,假设将w和b按比例改变为λw和λb,这时函数间隔成为λ。函数间隔的这一改变对上面最优化问题的不等式约束没有影响,对目标函数的优化也没有影响,也就是说,它产生一个等价的最优化问题。这样,就可以取=l。将=l代入上面的最优化问题,注意到最大化和最小化是等价的,于是就得到下面的线性可分支持向量机学习的最优化问题

这是一个凸二次规划(convex quadratic programming)问题。 

凸优化问题是指约束最优化问题

其中,目标函数f(w)和约束函数都是上的连续可微的凸函数,约束函数是上的仿射函数

当目标函数f(w)是二次函数且约束函数g(w)是仿射函数时,上述凸最优化问题被称作凸二次规划问题。

如果求出了约束最优化问题的解,那么就可以得到最大间隔分离超平面及分类决策函数,即线性可分支持向量机模型。

综上所述,就有下面的线性可分支持向量机的学习算法——最大间隔法(maximum margin method)。

算法(线性可分支持向量机学习算法——最大间隔法)

估计是本着严密的作风,《统计学习方法》展开了两项证明:

2、最大间隔分离超平面的存在唯一性

线性可分训练数据集的最大间隔分离超平面是存在且唯一的。似乎也不难理解,“最大”从感觉上讲是个很强的约束。

定理(最大间隔分离超平面的存在唯一性)若训练数据集r线性可分,则可将训练数据集中的样本点完全正确分开的最大间隔分离超平面存在且唯一。

证明

(1)存在性

由于训练数据集线性可分,所以算法7.1中的最优化问题—定存在可行解。又由于目标函数有下界,所以这个最优化问题必有解,记作。由于训练数据集中既有正类点又有负类点,所以不是最优化的可行解,因而最优解必满足。由此得知分离超平面的存在性。

(2)唯一性

首先证明最优化问题解中的唯一性。假设问题存在两个最优解。显然(因为min值只有一个呀),其中c是一个常数。令,易知(w,b)是问题的可行解(这里应该指的是满足s.t.,但不一定能得到最小值),从而有

上式表明,式中的不等号可变为等号,即,从而有(两个向量相等或反向)。若λ=-1,则w=0,(w,b)不是问题的可行解,矛盾。因此必有λ=1,即

由此可以把两个最优解分别写成。再证。设是集合中分别对应于使得问题的不等式等号成立的点,是集合中分别对应于使得问题的不等式等号成立的点,则由,得

又因为(看s.t.)

所以,。同理有。因此,

可知,两个最优解是相同的,解的唯一性得证。

由问题解的唯一性即得分离超平面是唯一的。

(3)分离超平面能将训练数据集中的两类点完全正确地分开。

由解满足问题的约束条件即可得知(这其实是一句废话)。

3. 支持向量和间隔边界

在线性可分情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例称为支持向量(support vector)。支持向量是使约束条件式等号成立的点,即

的正例点,支持向量在超平面

上,对的负例点,支持向量在超平面

上。如图所示,在H1和H2上的点就是支持向量。

注意到H1和H2平行,并且没有实例点落在它们中间。在H1和H2之间形成一条长带,分离超平面与它们平行且位于它们中央。长带的宽度,即H1和H2之间的距离称为间隔(margin)。间隔依赖于分离超平面的法向量w,等于。H1和H2称为间隔边界。

在决定分离超平面时只有支持向量起作用,而其他实例点并不起作用。如果移动支持向量将改变所求的解;但是如果在间隔边界以外移动其他实例点,甚至去掉这些点,则解是不会改变的。由于支持向量在确定分离超平面中起着决定性作用,所以将这种分类模型称为支持向量机。支持向量的个数一般很少,所以支持向量机由很少的“重要的”训练样本确定。

学习的对偶算法

为了求解线性可分支持向量机的最优化问题,将它作为原始最优化问题,应用拉格朗日对偶性(参阅这里),通过求解对偶问题(dual problem)得到原始问题(primal problem)的最优解,这就是线性可分支持向量机的对偶算法(dual algorithm)。这样做的优点,一是对偶问题往往更容易求解;二是自然引入核函数,进而推广到非线性分类问题。

首先构建拉格朗日函数(Lagrange function)。为此,对每一个不等式约束引进拉格朗日乘子(Lagrauge multiplier),定义拉格朗日函数:

其中,为拉格朗日乘子向量。

根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题:

所以,为了得到对偶问题的解,需要先求的极小,再求对α的极大。

(1)求

将拉格朗日函数分别对求偏导数并令其等于0。

将式代入拉格朗日函数,并利用式,即得

式子长了点,但是并不难。是w的L2范数,所谓L2范数,指的是向量各元素的平方和然后求平方根(长度)。因为有个平方,所以上式中出现了i和j遍历相乘的现象。

那么就有

(2)求对α的极大,即是对偶问题

将上式的目标函数由求极大转换成求极小,就得到下面与之等价的对偶最优化问题: 

也就是将目标函数取个相反数而已,极大就变成极小了。

考虑原始最优化问题和对偶最优化问题,原始问题满足定理C.2的条件,所以存在使是原始问题的解,是对偶问题的解。这意味着求解原始问题可以转换为求解对偶问题

对线性可分训练数据集,假设对偶最优化问题对α的解为,可以由求得原始最优化问题对(w,b)的解。有下面的定理。

定理7.2 设是对偶最优化问题的解,则存在下标j,使得,并可按下式求得原始最优化问题的解(w,b):

证明 根据定理C.3,KKT条件成立,即得

原始问题中的其实就是定理C.3中的ci的相反数,这样其实就是

由此得(也就是第一个式子)

其中至少有一个(用反证法,假设,由式可知,而不是原始最优化问题的解,产生矛盾)。既然,又因为刚才的,所以对此j有

将式代入式并注意到,即得

由此定理可知,分离超平面可以写成

分类决策函数可以写成

这就是说,分类决策函数只依赖于输入x和训练样本输入的内积。式称为线性可分支持向量机的对偶形式。

综上所述,对于给定的线性可分训练数据集,可以首先求对偶问题的解再利用式和式求得原始问题的解;从而得到分离超平面及分类决策函数。这种算法称为线性可分支持向量机的对偶学习算法,是线性可分支持向量机学习的基本算法。

法(线性可分支持向量机学习算法)

输入:线性可分训练集,其中

输出:分离超平面和分类决策函数。

(1)构造并求解约束最优化问题

求得最优解

(2)计算

并选择的一个正分量,计算

(3)求得分离超平面

分类决策函数:

在线性可分支持向量机中,由式、式可知,只依赖于训练数据中对应于的样本点,而其他样本点对没有影响。我们将训练数据中对应于的实例点称为支持向量。

定义(支持向量)考虑原始最优化问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值