支持向量机(Support Vector Machines, SVM)是一种二分类模型。其基本模型是定义在特征空间上的间隔最大化的线性分类器,通过引入核技巧的方式,可以实现非线性分类。支持向量机的学习策略就是间隔最大化。
间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据进行分类。也就是说,不仅将正负实例分开,而且最难分的实例点(离超平面最近的点)也有足够大的确信度将他们分开。
下面我们就由简如繁地来认识一下支持向量机。
假设给定一个特征空间上的训练数据集
假设该数据集是线性可分的。分类学习最基本的想法就是基于训练数据集D在特征空间(样本空间)上找到一个划分超平面,将不同类别的样本分开。划分超平面对应于方程,它由法向量和截距b决定,法向量决定的划分超平面的方向,二截距b则决定了超平面与原点的距离。
线性可分支持向量机利用间隔最大化求最优划分超平面。如上图,对于给定的数据集,可以找到很多的划分超平面,但不难看出图中重黑的超平面才是间隔最大化的划分超平面。
线性可分支持向量机的定义为:给定线性可分训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的划分超平面为,以及的相应的决策函数为,称为线性可分支持向量机。
支持向量机的学习策略是间隔最大化。那么说的是什么间隔呢?
在上图中,A,B,C三点表示三个实例,均在划分超平面的正类一侧,A离划分超平面较远,如预测为正类,就比较确信预测是正确的;点C离距离超平面较近,如预测为正类就没有那么确信。一般来说,一个点离划分超平面的远近可以表示为分类预测的确信程度。在划分超平面确定的情况下, 能够相对地表示点x距离超平面的远近。而的符号与类标记y是否相同能够表示分类是否正确。所以可以用来表示分类的正确性及确信度,这就是函数间隔的概念。
函数间隔的定义:对于给定的训练数据集D和超平面(w,b),定义超平面关于点的函数间隔为
定义超平面(w,b)关于训练数据集D的函数间隔为超平面(w,b)关于D中所有样本点的函数间隔最小的值,即
函数间隔可以表示分类正确性与确信度,但是只要成比例地改变w和b,那么函数间隔也会以相同的比例改变,而划分超平面却没有改变。所以函数间隔不适用在间隔最大化中。所以我们对划分超平面的法向量w加某些条件,如规范化,使得间隔是确定的,这时函数间隔成为几何间隔(geometric margin)
几何间隔的定义:对于给定的训练数据集D和超平面(w,b),定义超平面关于点的几何间隔为
定义超平面(w,b)关于训练数据集D的几何间隔为超平面(w,b)关于D中所有样本点的几何间隔最小的值,即
由函数间隔和几何间隔的定义可知,他们有着如下的关系:
如果超平面的参数w和b成比例改变时,超平面不变,函数间隔按相同比例改变,而几何间隔不变。
支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的划分超平面。在线性可分支持向量机中的间隔最大化又称为硬间隔最大化。
间隔最大化的直观解释就是:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据进行分类。也就是说,不仅将正负实例分开,而且对最难分的实例点(离超平面最近的点)也有足够大的确信度将他们分开。
求一个几何间隔最大的分离超平面,即最大间隔超平面。具体的,可以转化为下面的约束最优化问题:
也就是希望最大化超平面(w,b)关于训练数据集D的几何间隔,约束条件的意思是超平面(w,b)关于每个训练样本的几何间隔都要大于或等于。
由函数间隔与几何间隔的关系,可以将问题改写成
又因为函数间隔的取值不影响最优化问题,因为函数间隔的大小不影响几何间隔的大小,而我们的目的是几何间隔最大化。所以为方便计算令函数间隔,并带入上式中,发现最大化与最小化是等价的,于是优化问题可以转化成如下:
这就是支持向量机(Support Vector Machines, SVM)的基本型。
在线性可分的情况下,训练数据集的样本点中与划分超平面距离最近的样本点的实例称为支持向量(support vector),支持向量是使上述优化问题的约束条件中等号成立的点,即
上图中,使用圆圈圈起来的点就是支持向量,而两个不同类别的支持向量到达划分超平面的距离之和为,称为间隔,而支持向量所在的超平面,也就是距离划分超平面的为的两边的超平面称为间隔边界。
在决定划分超平面时只有支持向量机起作用,而其他实例点并不起作用。支持向量的个数一般很少,所以支持向量机由很少“重要的”训练样本确定。
对于上面我们的优化问题(几何间隔最大):
是一个凸二次优化问题,可以直接使用现成的优化计算包来计算。但却可以使用更加高效的方法:应用拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解。
转化为对偶问题的优点:
首先,构建拉格朗日函数(Lagrange function)。也就是对每一个约束条件不等式引进拉格朗日乘子
则该优化问题的拉格朗日函数为(不等式两边:减去大于号那边,加上小于号那边)
其中为拉格朗日乘子向量。
根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题:
所以,为了得到问题的解,需要先求对w,b的极小,再求对的极大。
(1)求对w,b的极小
因为极小值的导数为0,所以我们一般在求解极小值时,先求导,再令导数为0。即将拉格朗日函数分别对w,b求偏导数并令其等于0。
所以,令导数为0有:
将上面对w,b求导并令其为0得到的结果带回,即可得到第一的极小值,结果为:
注:因为,都是实数,不是向量,所以其转置运算结果为自身。
(2)求对的极大,即是对偶问题
也就是如下的求最小问题(人们习惯于求解最小问题):
解出后,求出w,b即可得到分类模型:
其中为解,表达式如下:
那么如何求解呢?因为任意支持向量都有,即
其中为所有支持向量的下标。可以选择支持向量并通过求解上式得到,但现实任务中常采用一种更鲁棒的做法:使用所有支持向量求解平均值
那么划分超平面可以表示为:
从对偶问题解出的是拉格朗日乘子,其恰恰对应着样本点。注意到原问题的约束条件:
中有不等式约束,所以上面的对偶方法过程需要满足KKT(Karush-Kuhn-Tucher)条件,即
综上所述,对于给定的线性可分训练数据集,可以首先求对偶问题的解,在求得,从而得到划分超平面及分类决策函数。这种方法称为线性可分支持向量机的对偶学习算法,是线性可分支持向量机的基本学习方法。
在线性可分支持向量机中,由
两式可知,只依赖于训练数据中对应的样本点,而其他样本点对没有影响,所以训练数据集中对应的样本点为支持向量,即这些样本点在间隔边界上。
在上一小结的线性可分支持向量机中,我们假设给定的训练数据集是线性可分的,但往往很多数据是线性不可分的,此时,上面的线性可分支持向量的约束条件将不能满足。那么,如何才能够将它扩充到线性不可分的问题呢?这就需要修改硬间隔最大化,使其成为软件个最大化。
如上图,红色圈圈起来的点即为一些不满足约束条件:
的点,即这些点不能满足函数间隔大于等于1的约束条件。为了解决这个问题,可以对每个样本点引进一个松弛变量,使得函数间隔加上松弛变量后大于等于1.如此,则约束条件变为:
同时,我们对每个松弛变量,支付一个代价。那么目标函数由原来的变成
其中为惩罚参数,一般由应用问题决定,C值大时对误分类的惩罚增大,C值小时对误分类的惩罚减小,即对于同一个样本点的松弛变量,C值越大则目标函数(损失函数)的值越大,C值越小则目标函数的值越小。对于该最小化目标函数,包含两层含义:
此时,我们可以像考虑线性可分支持向量机一样考虑线性支持向量机,相应的硬间隔最大化,称为软间隔最大化。
那么,我们的原始优化(学习)问题(硬间隔最大化):
变成了软间隔最大化问题:
对于硬间隔最大化的原始问题的对偶问题为:
那么对于软间隔最大化的原始问题的对偶问题呢?其拉格朗日函数为:
(1) 求对的极小
对求导并令导数为0得
可以得到
把上述结果带入得到
(2)求对的极大并变号转成求极小,即得对偶问题
由约束条件可知,所以优化问题转化成
支持向量
由前面我们知道中的对应于的样本点的实例称为支持向量(软间隔的支持向量)。
上图中,划分超平面有实线给出,间隔边界由虚线表示,圆表示正,打叉表示负。软间隔的支持向量或者在间隔边界上,或者在间隔边界与划分超平面之间,或者在划分超平面的另一侧。
由可知,总有或者,当时,该样本点不会对有任何影响。
对解线性分类问题,线性分类支持向量机一种非常高效的方法。但是,又是分类问题是非线性的,这时可以使用非线性支持向量机。其主要特点是利用核技巧,把低维特征映射到到高维空间上,使得映射后在高维空间可以进行线性分类。
核技巧
用线性分类方法求解非线性分类问题分为两步:
而核技巧就是属于这样的方法。下面来看个例子:
上图中左边图,无法使用直线(线性模型)将正负实例正确分开,却可以用一条椭圆曲线(非线性模型)将他们正确分开。而通过变换,把左图中椭圆换成右边的直线,将非线性分类问题转换成线性分类问题。
在支持向量机中应用核技巧,其基本想法就是通过一个非线性变换将输入空间对应于特征空间,使得在输入空间中的超曲面模型对应特征空间中的超平面模型,这样,分类问题的的学习任务通过在特征空间中求解线性支持向量机就可以完成。
核函数
假设这样的函数:
即和在特征空间的内积等于他们在原始样本空间中通过计算的结果。这样的称为核函数(kernel function).其中为映射函数,与内积等同。
则原始的优化问题,我们可以将原优化问题(线性支持向量机)重写为如下:
1、《机器学习》 周志华 ---- 西瓜书
2、《统计学习方法》李航
3、《机器学习实战》李锐 译