支持向量机(Support Vector Machines, SVM)是一种二分类模型。其基本模型是定义在特征空间上的间隔最大化的线性分类器,通过引入核技巧的方式,可以实现非线性分类。支持向量机的学习策略就是间隔最大化。

间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的却确信度对训练数据进行分类。也就是说,不仅将正负实例分开,而且最难分的实例点(离超平面最近的点)也有足够大的确信度将他们分开。

下面我们就由简如繁地来认识一下支持向量机。

一、线性可分支持向量机

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

                                  机器学习之支持向量机(Support Vector Machines)

假设该数据集是线性可分的。分类学习最基本的想法就是基于训练数据集D在特征空间(样本空间)上找到一个划分超平面,将不同类别的样本分开。划分超平面对应于方程机器学习之支持向量机(Support Vector Machines),它由法向量机器学习之支持向量机(Support Vector Machines)和截距b决定,法向量决定的划分超平面的方向,二截距b则决定了超平面与原点的距离。

               机器学习之支持向量机(Support Vector Machines)

线性可分支持向量机利用间隔最大化求最优划分超平面。如上图,对于给定的数据集,可以找到很多的划分超平面,但不难看出图中重黑的超平面才是间隔最大化的划分超平面。

线性可分支持向量机的定义为:给定线性可分训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的划分超平面为机器学习之支持向量机(Support Vector Machines),以及的相应的决策函数为机器学习之支持向量机(Support Vector Machines),称为线性可分支持向量机。

支持向量机的学习策略是间隔最大化。那么说的是什么间隔呢?

函数间隔与几何间隔

            机器学习之支持向量机(Support Vector Machines)

在上图中,A,B,C三点表示三个实例,均在划分超平面的正类一侧,A离划分超平面较远,如预测为正类,就比较确信预测是正确的;点C离距离超平面较近,如预测为正类就没有那么确信。一般来说,一个点离划分超平面的远近可以表示为分类预测的确信程度。在划分超平面机器学习之支持向量机(Support Vector Machines)确定的情况下,机器学习之支持向量机(Support Vector Machines) 能够相对地表示点x距离超平面的远近。而机器学习之支持向量机(Support Vector Machines)的符号与类标记y是否相同能够表示分类是否正确。所以可以用机器学习之支持向量机(Support Vector Machines)来表示分类的正确性及确信度,这就是函数间隔的概念。

函数间隔的定义:对于给定的训练数据集D和超平面(w,b),定义超平面关于点机器学习之支持向量机(Support Vector Machines)的函数间隔为

                                                      机器学习之支持向量机(Support Vector Machines)

定义超平面(w,b)关于训练数据集D的函数间隔为超平面(w,b)关于D中所有样本点机器学习之支持向量机(Support Vector Machines)的函数间隔最小的值,即

                                                                  机器学习之支持向量机(Support Vector Machines)

函数间隔可以表示分类正确性与确信度,但是只要成比例地改变w和b,那么函数间隔也会以相同的比例改变,而划分超平面却没有改变。所以函数间隔不适用在间隔最大化中。所以我们对划分超平面的法向量w加某些条件,如规范化,使得间隔是确定的,这时函数间隔成为几何间隔(geometric margin)

几何间隔的定义:对于给定的训练数据集D和超平面(w,b),定义超平面关于点机器学习之支持向量机(Support Vector Machines)的几何间隔为

                                                       机器学习之支持向量机(Support Vector Machines)

定义超平面(w,b)关于训练数据集D的几何间隔为超平面(w,b)关于D中所有样本点机器学习之支持向量机(Support Vector Machines)的几何间隔最小的值,即

                                                       机器学习之支持向量机(Support Vector Machines)

由函数间隔和几何间隔的定义可知,他们有着如下的关系:

                                                       机器学习之支持向量机(Support Vector Machines)

                                                       机器学习之支持向量机(Support Vector Machines)

如果超平面的参数w和b成比例改变时,超平面不变,函数间隔按相同比例改变,而几何间隔不变。

间隔最大化

支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的划分超平面。在线性可分支持向量机中的间隔最大化又称为硬间隔最大化。

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

求一个几何间隔最大的分离超平面,即最大间隔超平面。具体的,可以转化为下面的约束最优化问题:

                                                       机器学习之支持向量机(Support Vector Machines)

                                                       机器学习之支持向量机(Support Vector Machines)

也就是希望最大化超平面(w,b)关于训练数据集D的几何间隔机器学习之支持向量机(Support Vector Machines),约束条件的意思是超平面(w,b)关于每个训练样本的几何间隔都要大于或等于机器学习之支持向量机(Support Vector Machines)

由函数间隔与几何间隔的关系,可以将问题改写成

                                                       机器学习之支持向量机(Support Vector Machines)

                                                       机器学习之支持向量机(Support Vector Machines)

又因为函数间隔的取值不影响最优化问题,因为函数间隔的大小不影响几何间隔的大小,而我们的目的是几何间隔最大化。所以为方便计算令函数间隔机器学习之支持向量机(Support Vector Machines),并带入上式中,发现最大化机器学习之支持向量机(Support Vector Machines)与最小化机器学习之支持向量机(Support Vector Machines)是等价的,于是优化问题可以转化成如下:

                                                       机器学习之支持向量机(Support Vector Machines)

                                                       机器学习之支持向量机(Support Vector Machines)

这就是支持向量机(Support Vector Machines, SVM)的基本型。

支持向量与间隔边界

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

                                                       机器学习之支持向量机(Support Vector Machines)

             机器学习之支持向量机(Support Vector Machines)

上图中,使用圆圈圈起来的点就是支持向量,而两个不同类别的支持向量到达划分超平面的距离之和为机器学习之支持向量机(Support Vector Machines),称为间隔,而支持向量所在的超平面,也就是距离划分超平面的为机器学习之支持向量机(Support Vector Machines)的两边的超平面称为间隔边界

在决定划分超平面时只有支持向量机起作用,而其他实例点并不起作用。支持向量的个数一般很少,所以支持向量机由很少“重要的”训练样本确定。

学习的对偶算法

对于上面我们的优化问题(几何间隔最大):

                                                       机器学习之支持向量机(Support Vector Machines)

                                                       机器学习之支持向量机(Support Vector Machines)

是一个凸二次优化问题,可以直接使用现成的优化计算包来计算。但却可以使用更加高效的方法:应用拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解。

转化为对偶问题的优点:

  1. 对偶问题往往更容易求解
  2. 自然的引入核函数,进而推广到非线性分类问题。

首先,构建拉格朗日函数(Lagrange function)。也就是对每一个约束条件不等式引进拉格朗日乘子

                                                        机器学习之支持向量机(Support Vector Machines)

则该优化问题的拉格朗日函数为(不等式两边:减去大于号那边,加上小于号那边)

                                                        机器学习之支持向量机(Support Vector Machines)

其中机器学习之支持向量机(Support Vector Machines)为拉格朗日乘子向量。

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

                                                        机器学习之支持向量机(Support Vector Machines)

所以,为了得到问题的解,需要先求机器学习之支持向量机(Support Vector Machines)对w,b的极小,在求对机器学习之支持向量机(Support Vector Machines)的极大。

(1)求机器学习之支持向量机(Support Vector Machines)对w,b的极小

因为极小值的导数为0,所以我们一般在求解极小值时,先求导,再令导数为0。即将拉格朗日函数机器学习之支持向量机(Support Vector Machines)分别对w,b求偏导数并令其等于0。

由 机器学习之支持向量机(Support Vector Machines)得,

                 机器学习之支持向量机(Support Vector Machines)

                 机器学习之支持向量机(Support Vector Machines)

所以,令导数为0有:

                机器学习之支持向量机(Support Vector Machines)

                机器学习之支持向量机(Support Vector Machines)

将上面对w,b求导并令其为0得到的结果带回机器学习之支持向量机(Support Vector Machines),即可得到第一的极小值,结果为:

                机器学习之支持向量机(Support Vector Machines)

                机器学习之支持向量机(Support Vector Machines)

                机器学习之支持向量机(Support Vector Machines)

               机器学习之支持向量机(Support Vector Machines)

               机器学习之支持向量机(Support Vector Machines)

              注:因为机器学习之支持向量机(Support Vector Machines)机器学习之支持向量机(Support Vector Machines)都是实数,不是向量,所以其转置运算结果为自身。

              机器学习之支持向量机(Support Vector Machines)

             机器学习之支持向量机(Support Vector Machines)

因为机器学习之支持向量机(Support Vector Machines),所以

            机器学习之支持向量机(Support Vector Machines)

(2)求机器学习之支持向量机(Support Vector Machines)机器学习之支持向量机(Support Vector Machines)的极大,即是对偶问题

                                     机器学习之支持向量机(Support Vector Machines)

                                    机器学习之支持向量机(Support Vector Machines)

                                    机器学习之支持向量机(Support Vector Machines)

也就是如下的求最小问题(人们习惯于求解最小问题):

                                    机器学习之支持向量机(Support Vector Machines)

                                    机器学习之支持向量机(Support Vector Machines)

                                    机器学习之支持向量机(Support Vector Machines)

解出机器学习之支持向量机(Support Vector Machines)后,求出w,b即可得到分类模型:

                                   机器学习之支持向量机(Support Vector Machines)

其中机器学习之支持向量机(Support Vector Machines)为解,机器学习之支持向量机(Support Vector Machines)表达式如下:

                                  机器学习之支持向量机(Support Vector Machines)

那么机器学习之支持向量机(Support Vector Machines)如何求解呢?因为任意支持向量机器学习之支持向量机(Support Vector Machines)都有机器学习之支持向量机(Support Vector Machines),即

                                  机器学习之支持向量机(Support Vector Machines)

其中机器学习之支持向量机(Support Vector Machines)为所有支持向量的下标。可以选择支持向量并通过求解上式得到,但现实任务中常采用一种更鲁棒的做法:使用所有支持向量求解平均值

                                  机器学习之支持向量机(Support Vector Machines)

那么划分超平面可以表示为:

                                  机器学习之支持向量机(Support Vector Machines)

从对偶问题解出的机器学习之支持向量机(Support Vector Machines)是拉格朗日乘子,其恰恰对应着样本点机器学习之支持向量机(Support Vector Machines)。注意到原问题的约束条件:

                                  机器学习之支持向量机(Support Vector Machines)

                                  机器学习之支持向量机(Support Vector Machines)

中有不等式约束,所以上面的对偶方法过程需要满足KKT(Karush-Kuhn-Tucher)条件,即

                                  机器学习之支持向量机(Support Vector Machines)

                                  机器学习之支持向量机(Support Vector Machines)

                                  机器学习之支持向量机(Support Vector Machines)

综上所述,对于给定的线性可分训练数据集,可以首先求对偶问题的解机器学习之支持向量机(Support Vector Machines),在求得机器学习之支持向量机(Support Vector Machines),从而得到划分超平面及分类决策函数。这种方法称为线性可分支持向量机的对偶学习算法,是线性可分支持向量机的基本学习方法。

在线性可分支持向量机中,由

                                  机器学习之支持向量机(Support Vector Machines)

                                  机器学习之支持向量机(Support Vector Machines)

两式可知,机器学习之支持向量机(Support Vector Machines)只依赖于训练数据中对应机器学习之支持向量机(Support Vector Machines)的样本点机器学习之支持向量机(Support Vector Machines),而其他样本点对机器学习之支持向量机(Support Vector Machines)没有影响,所训练数据集中机器学习之支持向量机(Support Vector Machines)对应的样本点机器学习之支持向量机(Support Vector Machines)为支持向量,即这些样本点在间隔边界上。

二、线性支持向量机

在上一小结的线性可分支持向量机中,我们假设给定的训练数据集是线性可分的,但往往很多数据是线性不可分的,此时,上面的线性可分支持向量的约束条件将不能满足。那么,如何才能够将它扩充到线性不可分的问题呢?这就需要修改硬间隔最大化,使其成为软件个最大化。

      机器学习之支持向量机(Support Vector Machines)

如上图,红色圈圈起来的点即为一些不满足约束条件:

                                  机器学习之支持向量机(Support Vector Machines)

的点,即这些点机器学习之支持向量机(Support Vector Machines)不能满足函数间隔大于等于1的约束条件。为了解决这个问题,可以对每个样本点机器学习之支持向量机(Support Vector Machines)引进一个松弛变量机器学习之支持向量机(Support Vector Machines),使得函数间隔加上松弛变量后大于等于1.如此,则约束条件变为:

                                  机器学习之支持向量机(Support Vector Machines)

同时,我们对每个松弛变量机器学习之支持向量机(Support Vector Machines),支付一个代价机器学习之支持向量机(Support Vector Machines)。那么目标函数由原来的机器学习之支持向量机(Support Vector Machines)变成

                                 机器学习之支持向量机(Support Vector Machines)

其中机器学习之支持向量机(Support Vector Machines)为惩罚参数,一般由应用问题决定,C值大时对误分类的惩罚增大,C值小时对误分类的惩罚减小,即对于同一个样本点机器学习之支持向量机(Support Vector Machines)的松弛变量机器学习之支持向量机(Support Vector Machines),C值越大则目标函数(损失函数)的值越大,C值越小则目标函数的值越小。对于改最小化目标函数,包含两层含义:

  1. 使得机器学习之支持向量机(Support Vector Machines)尽量小,即间隔尽量大
  2. 使误分类点的个数尽量小,C为这两者的调和。

此时,我们可以像考虑线性可分支持向量机一样考虑线性支持向量机,相应的硬间隔最大化,称为软间隔最大化。

那么,我们的原始优化(学习)问题(硬间隔最大化):

                                                       机器学习之支持向量机(Support Vector Machines)

                                                       机器学习之支持向量机(Support Vector Machines)

变成了软间隔最大化问题:

                                                       机器学习之支持向量机(Support Vector Machines)

                                                       机器学习之支持向量机(Support Vector Machines)

                                                       机器学习之支持向量机(Support Vector Machines)

学习的对偶算法

对于硬间隔最大化的原始问题的对偶问题为:

                                    机器学习之支持向量机(Support Vector Machines)

                                    机器学习之支持向量机(Support Vector Machines)

                                    机器学习之支持向量机(Support Vector Machines)

那么对于软间隔最大化的原始问题的对偶问题呢?其拉格朗日函数为:

                        机器学习之支持向量机(Support Vector Machines)

(1) 求机器学习之支持向量机(Support Vector Machines)机器学习之支持向量机(Support Vector Machines)的极小

机器学习之支持向量机(Support Vector Machines)求导并令导数为0得

                                    机器学习之支持向量机(Support Vector Machines)

                                    机器学习之支持向量机(Support Vector Machines)

                                   机器学习之支持向量机(Support Vector Machines)

可以得到

                                    机器学习之支持向量机(Support Vector Machines)

                                    机器学习之支持向量机(Support Vector Machines)

                                   机器学习之支持向量机(Support Vector Machines)

把上述结果带入机器学习之支持向量机(Support Vector Machines)得到

                                  机器学习之支持向量机(Support Vector Machines)

机器学习之支持向量机(Support Vector Machines)

(2)求机器学习之支持向量机(Support Vector Machines)机器学习之支持向量机(Support Vector Machines)的极大并变号转成求极小,即得对偶问题

                              机器学习之支持向量机(Support Vector Machines)

                              机器学习之支持向量机(Support Vector Machines)

                                         机器学习之支持向量机(Support Vector Machines)

                                         机器学习之支持向量机(Support Vector Machines)

                                         机器学习之支持向量机(Support Vector Machines)

由约束条件可知机器学习之支持向量机(Support Vector Machines),所以优化问题转化成

                              机器学习之支持向量机(Support Vector Machines)

                              机器学习之支持向量机(Support Vector Machines)

                                         机器学习之支持向量机(Support Vector Machines)

支持向量

由前面我们知道机器学习之支持向量机(Support Vector Machines)中的对应于机器学习之支持向量机(Support Vector Machines)的样本点机器学习之支持向量机(Support Vector Machines)的实例机器学习之支持向量机(Support Vector Machines)称为支持向量(软间隔的支持向量)。

机器学习之支持向量机(Support Vector Machines)

上图中,划分超平面有实线给出,间隔边界由虚线表示,圆表示正,打叉表示负。软间隔的支持向量机器学习之支持向量机(Support Vector Machines)或者在间隔边界上,或者在间隔边界与划分超平面之间,或者在划分超平面的另一侧。

机器学习之支持向量机(Support Vector Machines)可知,总有机器学习之支持向量机(Support Vector Machines)或者机器学习之支持向量机(Support Vector Machines),当机器学习之支持向量机(Support Vector Machines)时,该样本点不会对机器学习之支持向量机(Support Vector Machines)有任何影响。

  1. 机器学习之支持向量机(Support Vector Machines),则机器学习之支持向量机(Support Vector Machines),支持向量机器学习之支持向量机(Support Vector Machines)恰好落在间隔边界上;
  2. 机器学习之支持向量机(Support Vector Machines),则分类正确,支持向量机器学习之支持向量机(Support Vector Machines)在间隔边界与划分超平面之间;
  3. 机器学习之支持向量机(Support Vector Machines),则支持向量机器学习之支持向量机(Support Vector Machines)在划分超平面上;
  4. 机器学习之支持向量机(Support Vector Machines),则支持向量机器学习之支持向量机(Support Vector Machines)​​​​​​​在划分超平面误分一侧。

三、非线性支持向量机

对解线性分类问题,线性分类支持向量机一种非常高效的方法。但是,又是分类问题是非线性的,这时可以使用非线性支持向量机。其主要特点是利用核技巧,把低维特征映射到到高维空间上,使得映射后在高维空间可以进行线性分类。

核技巧

用线性分类方法求解非线性分类问题分为两步:

  1. 首先使用一个变换将原空间的数据映射到新空间;
  2. 然后在新空间里用线性分类学习方法从训练数据中学习分类模型。

而核技巧就是属于这样的方法。下面来看个例子:

机器学习之支持向量机(Support Vector Machines)

上图中左边图,无法使用直线(线性模型)将正负实例正确分开,却可以用一条椭圆曲线(非线性模型)将他们正确分开。而通过变换,把左图中椭圆换成右边的直线,将非线性分类问题转换成线性分类问题。

机器学习之支持向量机(Support Vector Machines)

在支持向量机中应用核技巧,其基本想法就是通过一个非线性变换将输入空间对应于特征空间,使得在输入空间中的超曲面模型对应特征空间中的超平面模型,这样,分类问题的的学习任务通过在特征空间中求解线性支持向量机就可以完成。

核函数 

假设这样的函数:

                            机器学习之支持向量机(Support Vector Machines)

机器学习之支持向量机(Support Vector Machines)机器学习之支持向量机(Support Vector Machines)在特征空间的内积等于他们在原始样本空间中通过机器学习之支持向量机(Support Vector Machines)计算的结果。这样的机器学习之支持向量机(Support Vector Machines)称为核函数(kernel function).其中机器学习之支持向量机(Support Vector Machines)为映射函数,机器学习之支持向量机(Support Vector Machines)为与内积等同。

则原始的优化问题,我们可以将原优化问题(线性支持向量机)重写为如下:

                              机器学习之支持向量机(Support Vector Machines)

                              机器学习之支持向量机(Support Vector Machines)

                                         机器学习之支持向量机(Support Vector Machines)

机器学习之支持向量机(Support Vector Machines)

四、序列最小最优化算法(SMO)

五、总结

六、参考 

1、《机器学习》 周志华 ---- 西瓜书

2、《统计学习方法》李航

3、《机器学习实战》李锐  译

相关文章:

  • 2021-10-29
  • 2021-11-30
  • 2021-11-30
  • 2021-11-13
  • 2021-11-30
  • 2021-04-05
猜你喜欢
  • 2021-11-30
  • 2021-06-11
  • 2021-06-20
  • 2021-05-13
  • 2021-07-10
  • 2021-10-19
  • 2021-08-11
相关资源
相似解决方案