《机器学习》__note3

来源:互联网 发布:爱神巧克力夏紫瞳h本知 编辑:程序博客网 时间:2024/05/16 11:52

Support Vector Machines

这篇文章介绍支持向量机(Support Vector Machine,SVM)学习算法,它是一种非常成熟有效的监督学习算法。本文首先介绍margin和用间隔分离数据的概念。然后介绍最优间隔分类器,顺带介绍一下拉格朗日对偶问题。接着介绍核函数这个在计算有关高维向量(甚至是无限维)内积时非常有用的工具。最后介绍SVM的最后一步:利用SMO算法求解最优值。

Linearly separable case

这部分都是关于线性可分的情况。首先介绍本章的符号:考虑二分类问题,输出y的值为y∈{-1,1},而不是之前的{0.1};用w,b作为分类器的参数,写为
这里写图片描述
其中,当 z>=0 , g(z) = 1,否则 g(z) = -1。相比于之前的直接用θ^T X 表示,这里把截距项b 分离出来。这里定义的函数g 也可以直接进行判断,不再计算概率。

Margins: Intuition

在逻辑回归的预测函数这里写图片描述 中,可以认为当这里写图片描述 ,y=1的概率很大;反之,如果这里写图片描述 ,则越有信心认为y = 0。也就是离分类边界越远,预测为某一类的正确性就越高,SVM中的函数间隔(functional margins)就是这个思想。下图中,直线为分隔超平面。很明显,将A分类为正样本比将C分为正样本更有自信。从这个角度看,分类就是要找到一个超平面,使得在样本分类都正确的条件下,样本距离超平面越远越好。
这里写图片描述

Functional and geometric margins

下面用函数间隔(functional margins)和几何间隔(geometric margins)来概括上面的思想。

Functional margins

给定一个训练样本这里写图片描述 ,定义函数间隔
这里写图片描述
如果这里写图片描述,为了函数间隔更大(也就是分类更正确),这里写图片描述 必须是很大的正数;反之,如果这里写图片描述 ,为了函数间隔更大需要这里写图片描述 是一个绝对值很大的负数。此外,如果这里写图片描述,对该样本预测就是正确的。因此,函数间隔越大表示预测结果越正确,越自信

用函数间隔度量自信度有一个很大的缺点。对于线性分类器g 来说,这里写图片描述,参数w和b可以同时扩大任意倍数,同时不改变超平面这里写图片描述。这是因为g这里写图片描述 只跟这里写图片描述的符号有关,跟大小无关。这样就导致虽然扩大了函数间隔的值,分类器结果却不变,这是毫无意义的。因此想到归一化,得到几何间隔(之后介绍)。

给定一个训练集这里写图片描述,定义S 的函数间隔为
这里写图片描述

Geometric margins

这里写图片描述
在直线的一般式方程Ax+By+C=0 中,向量(A,B)其实是一个法向量。这里,超平面方程为这里写图片描述=0,所以w其实是法向量,如图所示。图中的这里写图片描述表示样本点A到超平面的距离,即线段AB。由于两个坐标轴是特征(x1,x2),因此点A若用这里写图片描述 表示,则点B表示为这里写图片描述,又因为点B在超平面上,满足下列方程
这里写图片描述
解得
这里写图片描述
这是正样本的情况,当A为负样本时,这里写图片描述 会多一个负号。因此,定义几何间隔如下
这里写图片描述
注意到当||w||=1 时,函数间隔等于几个间隔,这是联系两种不同间隔表示方式的桥梁。当w,b 同时缩放时几何间隔保持不变,这启发我们可以对参数进行任意的缩放,比如要求||w||=1 ,或者是|w1| =5 ,等等,方便后面解决问题。

给定训练集这里写图片描述 ,定义几何间隔
这里写图片描述

总结 几何间隔和函数间隔的关系:
这里写图片描述

The optimal margin classifier

从上面的分析来看,我们总是希望找到一个分类器(超平面),它距离最近的正负样本都很远,也就是尽量使几何间隔最大。这个问题可以概括如下
这里写图片描述
虽然s.t.形式上是函数间隔,但是由于||w||=1 ,上述约束条件可以看成求几何间隔的最大值。很遗憾,这个优化问题是非凸的(凸规划问题要求:min f(x) s.t. gi(x) >=0, hj(x)=0,其中f(x)是凸函数,gi(x)是凹函数,hj(x)是线性函数),不能利用标准优化方法求解。转换成如下形式:
这里写图片描述
然而这个优化问题仍然是非凸的,尽管它没有了||w||=1 这个约束条件。回想之前讨论的可以对w,b 进行任意的缩放而不改变结果,可以添加约束条件
这里写图片描述
它可以通过对w,b 进行缩放得到。因此, 最大化这里写图片描述 等同于最小化这里写图片描述,得到如下优化问题:
这里写图片描述
这个问题的目标函数是凸二次函数,约束条件又是线性的。求解这个问题就可以得到最优间隔分类器。为了能在高维空间中利用核函数高效的解决这类优化问题,接下来介绍拉格朗日对偶形式,它比一般的QP软件(quadratic programming)更好用。

Lagrange duality

介绍这部分的目的是利用对偶形式,可以把一个问题写成向量内积的形式,再利用核函数就方便了。
考虑如下问题:
这里写图片描述
这个问题可以用拉格朗日乘数法解决(参考链接拉格朗日乘数法)。定义拉格朗日函数为
这里写图片描述
其中这里写图片描述是拉格朗日乘数,令偏导数为0:
这里写图片描述
这里对这里写图片描述求偏导实际上就是约束条件这里写图片描述。解出w,β。

拉格朗日乘数法仅针对约束条件是等式的情况,接下来推广到约束条件包含不等式的情况。考虑如下原始问题:
这里写图片描述
为了解决这个问题首先定义广义的拉格朗日函数
这里写图片描述
其中αi和βi都是拉格朗日乘数,方程(为什么是max??)
这里写图片描述
中,“p”表示该问题是原始问题。给出一些w,如果w违反了任一约束条件(存在i,使gi(w)>0或者hi(w) != 0),通过调整αi和βi,都会导致(为什么??
这里写图片描述
因此,下面这个公式将原始问题和拉格朗日函数联系起来
这里写图片描述
原始问题可以等价写成如下形式
这里写图片描述
下面再看一个不同的问题,定义
这里写图片描述
这里的“D”表示对偶,这个问题是求解关于w的最小值。现在写出对偶优化问题
这里写图片描述
它和原始问题其实是同一个问题,只是交换了求最大和最小的顺序。很明显
原始和对偶问题的关系如下
这里写图片描述
这是因为对于任何一个函数f,max min f<= min max f。那么什么时候两者相等呢?如果我们找出使它们相等的条件,那么我们就可以求解对偶问题而不是原始问题,这样的转化是很有用的,它可以让问题更易解决。

为了找到这些条件,作出如下假设:
假设 f 和 gi’s 是凸函数,hi’s 是仿射函数(线性函数加一个截距项)。再假设约束条件 gi 是可行的,也就是存在w,使得对所有 i ,gi(w) < 0 成立。 在这样的假设下,w*,α,β是原始问题和对偶问题解的充要条件是它们满足Karush-Kuhn-Tucker (KKT) conditions:
这里写图片描述
方程(5)叫KKT互补松弛条件。当这里写图片描述 ,有这里写图片描述。后面将会看到只有支持向量的α >0,简化了计算,同时它也是后面SMO算法收敛测试的条件。(?????

Optimal margin classifiers

对照之前优化问题,将约束条件看做拉格朗日函数中的gi(w),
这里写图片描述
这里写图片描述
根据KKT互补松弛条件αi*g(w)=0,
当g(w)!=0,即y^(i)(x^T*xi+b) != 1,
(xi,yi)不是支持向量,则αi = 0。下图中,只有虚线上的三点函数间隔为1,因此他们的αi > 0,这三点就是支持向量。在一个优化问题中,支持向量的个数远远小于训练样本的个数,利用这一点可以大大简化运算。
这里写图片描述
接下来将拉格朗日乘数法运用在SVM中,写出拉格朗日函数:
这里写图片描述
原始问题中没有等式约束条件,因此没有乘数βi。要找到这个问题的对偶问题,首先需要求这里写图片描述关于w,b的最小值,分别求偏导数(注意这里是(w,b)对应之前的w):
这里写图片描述
得到
这里写图片描述
这里写图片描述
代入原函数,得到
这里写图片描述
对照对偶问题的形式这里写图片描述,再加上一直存在的一个条件这里写图片描述和公式(10),得到如下对偶优化问题,这也是最终我们要求解的问题
这里写图片描述
原文说这个优化问题满足KKT条件,但是笔者不明白为什么它满足互补松弛??。因此可以求解这个对偶问题间接求解原始问题。求出这个α解后,代入方程(9),就得到了w,b可以用下式计算
w^T*x1+b = -(w^T*x2+b ) ,
x1,x2分别为正负样本中的支持向量,几何间隔相等,于是
这里写图片描述
求出w和b以后,预测函数
这里写图片描述
如果结果大于0,则y=1。从最后一行可以看出,预测结果只和样本点之间向量的内积有关。根据之前的结论若样本点不是支持向量那么αi = 0,因此求和式中只剩下少数几项是不为0的。

总结:通过将问题化为对偶形式,最后得到写成内积形式的预测函数,方便SVM在高维空间运算。

Kernels

在线性回归中,我们讨论过将房屋面积作为整个问题的输入,但是在算法执行时,采用的是这里写图片描述作为实际输入。我们把前者叫做属性(attributes),后者叫做特征(features)。同时定义Φ表示特征映射(feature mapping)
这里写图片描述
在之前的SVM算法中,我们将把全部x替换成Φ(x),这样做的意义就是把简单的属性替换为较复杂,维度较高的特征。还有个好处就是将特征映射到高维空间后原来线性不可分的样本可以变成线性可分,再利用SVM求解。

因为算法可以写成样本点内积的形式。将&lt&lt替换成<Φ(x),Φ(z)>后,将它写成核函数的形式
这里写图片描述
算法中所有出现&lt&lt的地方都用K(x,z)替换,算法也就相应的转换成通过特征Φ来学习的。尽管有时候很难计算高维的Φ(x),但是它们之间的内积也就是核函数,通过转化后却是很好计算的。下面从时间复杂度来说明。
假设这里写图片描述,考虑如下函数
这里写图片描述
这里写图片描述
它可以看作是Φ(x)的内积,即这里写图片描述,当n=3时
这里写图片描述
计算Φ(x)的时间复杂度是这里写图片描述,而计算K(x,z)的时间复杂度为这里写图片描述

**待补充**

类似的,当核函数变为如下形式时
这里写图片描述
可求得当n = 3时,
这里写图片描述
概括起来,当核函数是这里写图片描述时,对应一个这里写图片描述特征空间的特征映射。尽管计算的是这里写图片描述 维特征空间,计算K(x,z)仍然只需要这里写图片描述的时间复杂度,甚至都不用把高维空间的特征向量表示出来。何等神奇!!

再观察一下核函数这里写图片描述,根据内积的性质,当两个向量越相似(角度越小)时,内积越大,当它们正交时,内积是0。从这个角度看,核函数的另一个意义就是描述两个向量Φ(x),Φ(z)的相似程度,或者是x,z的相似程度。

因此可以从相似度的角度来设计核函数,假设核函数如下
这里写图片描述
当x,z越接近时,值越接近1,反之越接近0。但是这个核函数是否能用在SVM中呢?(对于这个例子是可以的,它叫做高斯核函数,对应的是无限维特征映射Φ)。下面讨论设计的核函数是否是有效的,即是否存在特征映射Φ,使对于所有的x,z,这里写图片描述都成立。

假设K是一个有效的核函数,考虑m个点的集合(不一定是训练集)这里写图片描述,设计一个m*m的核矩阵(Kernel matrix)K,它的元素这里写图片描述

如果K是一个有效的核函数,那么这里写图片描述这里写图片描述,因此K是一个对称矩阵。此外,令这里写图片描述表示Φ(x)的第k个坐标,对于任意向量z,有
这里写图片描述
从而得出K是半正定的

结论(注意是充要条件):
这里写图片描述
因此,判断一个核函数是否有效有两种方法:
- 看是否能找到相应的特征映射Φ
- 看核矩阵是不是半正定的

核函数不仅可以用在SVM上,在任何一个特征可以写成内积形式的学习算法中,都可以将其替换成核函数,这样算法就可以用在高维空间中,方便对低维空间中线性不可分而高维空间线性可分的样本进行分类。

Regularization and the non-separable case

前面讨论的是线性可分的情况,实际中我们也会遇到许多线性不可分的问题。此外,当样本数据有噪声或者异常值时,会使超平面变化很大,如下图
这里写图片描述
为了让算法能够用在线性不可分的数据集中,同时对降低对异常值的敏感度,对原算法进行改进(进行这里写图片描述 正则化,这种方法也称为一阶范数软间隔,Soft-margin SVM)
这里写图片描述
该模型允许出现函数间隔小于1的情况,但是当出现这种情况时,会对目标函数增加一个惩罚项这里写图片描述,这样就对函数间隔大于等于1和使这里写图片描述最小做出了平衡。当样本被误分或者间隔小于1时,ξ(称为松弛变量)不为0。C是一个由用户去指定的系数,表示对分错的点加入多少的惩罚,当C很大的时候,分错的点就会更少,但是过拟合的情况可能会比较严重,当C很小的时候,分错的点可能会很多,不过可能由此得到的模型也会不太正确。

和之前一样,写出拉格朗日函数:
这里写图片描述
其中αi和γi都是不等式约束条件的乘数。对w和b分别求偏导数后代入并化简得到如下对偶问题
这里写图片描述
可以像之前那样利用方程(9)求解这个对偶问题,再利用方程(13)做出预测。尽管添加了一阶正则化项,但是只有约束条件中的这里写图片描述变为了这里写图片描述这里写图片描述,方程(11)对b*的求解也有变化。
KKT互补松弛条件变为(why?):
这里写图片描述

最后的工作就是怎么求解对偶问题。

The SMO algorithm(sequential minimal optimization)

Coordinate ascent

在介绍SMO算法之前,先讲讲坐标上升。考虑如下无约束优化问题
这里写图片描述
相比于之前的梯度下降和牛顿方法,坐标上升的算法如下:
这里写图片描述
它的思想是每次只有一个αi是变量,求出使W最大的那个α替换原来的αi值。更为复杂的方法是不按顺序,而是每次取W增幅最大的那个α作为变量。它的形象化表示如下,可以看出,W每次只在一个轴上增加。
这里写图片描述

SMO

回到SVM中来,我们要解决的是下面的优化问题
这里写图片描述
假设αi都满足约束条件(18)、(19),直接采用坐标上升算法,即固定α2,…αm, 只改变α1可以求出最优解吗?答案是否。按照约束条件(19),得出
这里写图片描述
两边同乘以这里写图片描述得到
这里写图片描述
因此只改变α1,必然改变其他的αi。

既然改变一个不行,那我们对坐标上升做一些变形,同时改变两个,算法如下
这里写图片描述

可以通过KKT条件(方程14-16)来检验算法是否在一定容忍度下收敛。

SMO算法高效的一个关键是是否能高效更新αi ,αj。假设我们现在要更新α1,α2,根据(19),得到
这里写图片描述
右边是一个常数,可以简化如下
这里写图片描述
图形化
这里写图片描述

满足约束条件的α1,α2肯定落在红线上。用方程(20)将α1用α2表示
这里写图片描述
因此目标函数可以写作
这里写图片描述
将α3~αm看做常数,W就是α2的一个二次函数,将它的最大值对应的α2用这里写图片描述表示,再加上约束条件,可以得到最终使W最大的α2值
这里写图片描述
得到了α2再代入方程(20)求出α1的最优值,就求出本次迭代需要更新的两个值。

还有很多细节可以参考John Platt的paper,比如怎么选择下一次需要更新的αi,αj;怎样更新参数b。

0 0
原创粉丝点击