码迷,mamicode.com
首页 > 系统相关 > 详细

初译 Support Vector Machines:A Simple Tutorial(二)

时间:2017-04-19 10:22:43      阅读:394      评论:0      收藏:0      [点我收藏+]

标签:http   har   空间   vector   rpe   gac   bit   矩阵   eee   

(二)Maximum margin hyperplane for linearly separable classes (线性可分的数据的最大间隔分类器)

接上文,假设SVM分类器是由两种线性可分的数据集训练而成,其决定函数(decision function)为:

                                                技术分享                                    (2.1)

其中技术分享为定义该超平面的公式,该超平面对于训练集拥有最大的margin,并且相对于两种训练集的距离相等(见下图)

                                                              技术分享

在本节中,我们会讨论一种一个关于超平面参数技术分享技术分享的优化问题,我们同样会讨论一些最大间隔超平面的一些重要的性质,我们会使用一些微积分和优化问题的概念。

2.1、Primary optimization problom 最初的优化问题

对于超平面参数技术分享技术分享的优化问题可以归结到公式2.2-2.4表示出来的优化问题

                                                技术分享                                                       (2.2)

                                               s.t.

                                                技术分享                                         (2.3)

                                                技术分享                                      (2.4)

                                             其中技术分享技术分享为训练集的两个分类

如果转换成坐标形式,问题(2.2)-(2.4)可以被描述如下:

                                              技术分享                                                    (2.5)

                                              s.t.

                                                 技术分享                                   (2.6)

                                              技术分享                                 (2.7)

                                     约束条件中的b为需要优化的参数之一,尽管在公式2.5中并未涉及到b

约束条件(2.6)和(2.7)可以被简化成为如下公式:

                                                 技术分享                       (2.8)

其中当技术分享技术分享 ,当技术分享技术分享,l为训练集中的向量x的数量, 代表了向量x中第k个分量(?)

上述的一大坨公式中,(2.5)-(2.7)组成的优化问题是由一个二次优化函数(2.5)和线性约束(2.6),(2.7)所组成,我们称这种问题为二次优化问题,目前对于二次优化问题的解决已经有了十分高效的算法。

值得一提的是目的函数(2.5)是严格的凸函数(convex function),因为其Hessian矩阵为正定矩阵(?),由线性不等式定义的可行区域也是凸的因此此二次优化问题将会有一个技术分享来达到全局最优解。

一旦我们所使用的训练集不是线性可分的,那么由(2.6),(2.7)所定义的可行域即为空集,那么此问题无解(当然对于非线性可分的数据集之后会介绍其解决方法),显而易见如果训练集只有一类的话更加无法得到解。

现在来解释一下为什么对于最大间隔分类器的超平面的优化会突然变成公式(2.5)-(2.7)这种奇怪的形式,为了回答这个问题,我们可以将这个优化问题转换为更加直观的几何形式如下:

首先技术分享的最小化等价于对技术分享的最小化,而后者又等价于对于技术分享的最大化,因此我们可以将(2.2)-(2.4)转换成如下形式:

                                                技术分享                                                       

                                                s.t.

                                               技术分享                                              (2.9)

                                               技术分享                                           (2.10)

其次,对于线性约束(2.9),(2.10),可以在不等号左右同时除以  如下:

                                                 技术分享

                                                 s.t.

                                                 技术分享     

                                                技术分享

在上一章节(1.2)中我们已经得知,技术分享为超平面技术分享和点x之间的距离,同时我们定义一个新的变量技术分享,上式就可以转化为:

                                                技术分享

                                             s.t.

                                             技术分享                                       (2.11)

                                             技术分享                                    (2.12)

上式就代表着在拥有C1和C2两类的训练集中寻找一个拥有最大的间隔(margin=2*d)的超平面,即我们最初的问题。

从几何上来说,我们可以这样描述技术分享技术分享d的关系:我们可以围绕训练集中每一个向量x(代表向量空间中的一个点)画一个半径为技术分享的圆形(圆形为二维空间的概念,如果在三维向量空间即为球体,更高维空间同理,一下所说的圆形皆指相应维度空间的“圆形”原著中使用hulls这个概念),在空间中加入一个超平面技术分享

同时根据公式(2.11)与(2.12),这个超平面必须将训练集中所有的向量x连同x带有的圆形一起分开(见下图a),这时如果我们将d的值扩大两倍来使圆形的半径扩大(因为技术分享所以我们需要将技术分享缩小两倍,(如果我们只是将技术分享缩小的话会使我们的超平面向着远离原点的方向平移,或者我们同时缩放技术分享和b,如此的话我们的超平面就不会改变),通过不停地将技术分享和b同时缩小,我们可以在不改变超平面的位置和方向的情况下增加圆形的半径,直到至少有一个圆形与超平面相切(如下图b),此时如果我们还有平移的空间来使超平面远离触碰到它的圆形,我们可以通过只改变b来平移超平面来使这些圆形继续生长直到我们得到了此条件下最大的d(如下图c),此时如果可以的话我们还可以通过改变技术分享(但是保持技术分享始终等于当前的1/d)来改变超平面技术分享的方向来使这些圆形有更多的生长空间,之后再同时调整技术分享和b来圆形的半径,总之我们可以尽可能的扩大d的值直到我们得到一个d的最大值(如下图d)。

                                

                                            技术分享

2.2 Dual problem 对偶问题

在优化理论中,对偶的概念扮演了十分重要的角色,当一个优化问题难以解决时,我们可以考虑将其转化为与之相等价的另一个优化问题(即对偶问题),而这些对偶问题的解决往往意味着原问题的解决。总的说来,在不同的情况下原问题和对偶问题各有各的优点和缺陷,我们可以根据不同的情况灵活选择。

而在我们的最大间隔超平面的寻找中,对偶问题的使用带来了两点好处:1、在对偶问题中我们可以通过拉格朗日乘子更好的掌控约束条件。2、对偶问题更加适合加入核函数。(对于这拉格朗日乘子和核函数之后会提及),这就是为什么绝大多数的SVM算法中都使用了对偶问题来进行计算。同时对偶问题也允许我们在之后的讨论中建立支持向量的概念——即定位最大间隔超平面的训练点。

在定义对偶问题之前复习一下我们的原问题,我们要通过优化问题寻找到拥有最大间隔的超平面技术分享

原问题为:

                                          技术分享                                                 (2.13)

                                                     s.t.

                                        技术分享 (此处为大于等于)     (2.14)

原问题的对偶问题可以被描述为如下形式:

                                                     技术分享                                                      (2.15)

                                                     s.t.      

                                                     技术分享                                             (2.16)

                                                     其中 技术分享,我们定义技术分享为对偶函数如下

                                                     技术分享                         (2.17)

并且技术分享作为拉格朗日函数的定义如下:

 

                                                  技术分享     (2.18)

因为在此问题中拉格朗日函数是凸函数,所以对于任意的α,

                                        当且仅当技术分享                                              (2.19)

技术分享才会达到全局最小值,因此,将(2.19)的变量带入(2.17)得到技术分享,因此我们的对偶问题(2.15)-(2.16)可写作如下形式:

                                                  技术分享                                                    (2.20)

                                                   s.t.

                                                   技术分享                                                   (2.21)

                                                      技术分享                                                  (2.22)

对于公式(2.21)进一步计算得(即对公式(2.18)分别对技术分享技术分享求导,使导数等于零解方程得):

                                                      技术分享                             (2.23)

                                                      技术分享

最后,我们可以将公式(2.23)带入到公式(2.18)中,并将对偶问题(2.20)-(2.22)改为如下形式:

                                                     技术分享                             (2.24)

                                                     s.t.

                                                    技术分享                                                                   (2.25)

                                                    技术分享                                                     (2.26)

和我们得原问题一样,(2.24)-(2.26)所表示的对偶问题同样是一个二次规划问题,但是后者的线性约束比前者的更加容易进行计算这就是我们使用对偶问题来进行SVM的计算得原因之一。

目的函数(2.24)对于变量的Hessian矩阵(即由二阶导数组成的矩阵)如下:

                                                    技术分享                                                    (2.27)

其中矩阵技术分享技术分享是全等的,而后者为向量(vectors)技术分享的Gramian矩阵,因为Gramian矩阵为半正定矩阵,因此矩阵(2.27)为半负定矩阵,这意味着(2.24)-(2.26)所描述的问题是一个凹面问题(但并非严格的凹。。。)这种问题可能有一个或者多个最大值,因此总的来说,原问题(2.13)-(2.14)的解是唯一的但对偶问题(2.24)-(2.26)的解并不是独一无二的,在下一小节中我们将会说明这些对偶问题的解将会组成我们的支持向量(?)。

下面说明一下原问题(2.13)-(2.14)与对偶问题(2.24)-(2.26)之间的联系,当我们的原问题有解,其对偶问题也将有解,反之亦然,如果原问题是无界的(当训练集只有一类时会出现这种情况,私以为应当是超平面的选择不受限制的情况。)则此时的对偶问题则是不可解的,如果原问题时不可解的(即数据集无法线性可分),那么对应的对偶问题的解则是无界的。

那么对偶问题的解技术分享和原问题的解技术分享的关系如何呢?我们可以将公式(2.23)写成向量形式如下:

                                                     技术分享                                                              (2.28)

上式足以代表着技术分享和的关系

而对于截距来说,我们可以假设约束(2.14)为等式如下(这种情况应当为向量点距离超平面的距离恰好为技术分享,即下节所说的支持向量)

                                                   技术分享

则有:

                                                      技术分享

 

在我们的原问题和对偶问题中,虽然技术分享为原问题唯一的全局最优解而技术分享为对偶问题众多最优解中的一个,但在我们的分类问题中二者的目的函数之间并无不同,即完全相等,如下所示:

                                                     技术分享

 

2.3 support vectors 支持向量

定义:在分类器的训练过程中,其技术分享的向量x被叫做支持向量

直观上来说只有那些在训练集中能够决定超平面的位置的向量才是支持向量(即支持了超平面的定位)那么这些支持向量如何定位了超平面的位置?

为了解答这个问题,我们首先定义对偶问题的解为技术分享,对于已经给出的可以使拉格朗日函数(2.18)得到最小值的技术分享技术分享来说,因此只有在下式所示的情况下才有技术分享为非零值。

                                            技术分享                         (2.29)

因为如果

                                            技术分享                          (2.30)

在此状态下如果技术分享>0则无法保持(2.18)对于技术分享的最大值,所以一定有技术分享=0

 

 

 

 

 

 

 

 

 

显然公式(2.29)同样也等同于如下表达形式:

                                                        技术分享                           (2.31)

                                                        技术分享                              (2.32)

 

将(2.31)和(2.32)同时除以技术分享得,我们会得到:

                                                       技术分享                       

                                                       技术分享

等号左边的部分为我们已经定义的向量点x和超平面技术分享之间的距离技术分享,将其与公式(2.11)与(2.12)对比,我们会发现所谓的支持向量则是距离最优超平面距离最近的一些向量,并且支持向量与超平面之间的距离总是技术分享,换一种说法可以说支持向量位于两个分类的margin上,如下图所示:

                                                         技术分享

 

 

 

 

 

 

 

 

在前几节中我们定义margin为一个数值,然而,我们可以用margin指代超平面与两类训练集之间的空间间隔(gap),对于最大间隔超平面,这个空间间隔可以作为超平面技术分享和超平面技术分享之间的空间间隔(二者的几何距离为技术分享),因此,当我们说“向量x位于margin上则代表着技术分享或者技术分享上”,当我们说”向量x位于margin内则代表技术分享或者技术分享

那么支持向量是如何影响SVM的分类效果的呢?

对于训练集中同一类别的所有向量来说,与另一个类别距离越近越难以被分类,因为距离另一个分类越近则越容易被误分类,因此,在SVM分类器中为了处理这这种易被误分类的点,就索性让这些最难分类的点位于margin上,使其对分类超平面施加最强的影响,同一类别中平均的或者典型的向量点则会分布在这个类别所有向量点的中心,对于那些最易分类的向量点则分布在距离分类超平面最远的位置上。他们对分类超平面所施加的影响最小,因为这些点最不容易出错。

一个分类器会有多少个支持向量的呢?

理论上说最小的数量为两个,每个类别都至少有一个支持向量在起作用,因为公式(2.25)决定了至少要有两个非零的技术分享,少于两个则等式不成立。一般来说,训练集中支持向量所占的比例是一个分类器的重要的性质,代表了分类器总体的性能和是否存在overfitting,当overfitting时,分类器在训练集中表现很好但是在测试集中表现极差。这并不是我们想要的结果,我们希望分类器在测试集中表现得和训练集中一样好。而在训练集中支持向量所占的比例过大可能代表着SVM分类器可能出现了overfit现象。

最后应当说明的是技术分享的优化结果并不唯一,因此相同的超平面按可能由不同的支持向量来定义,,因为(2.24)-(2.26)中的技术分享的解并不唯一,又有下图所示公式

                                              技术分享

所以技术分享也不唯一

例如:二维向量空间中存在五个向量点列出如下,空间位置见右图:

                                         技术分享                                  技术分享

最大间隔分类超平面的参数如下:

                                          技术分享

那么我们可以考虑以下三个对偶问题的解:

                                        技术分享

显然,技术分享技术分享分别形成了不同的支持向量集合,技术分享技术分享形成了相同的支持向量集合但是对于这些支持向量却有不同的技术分享值。

 

 

下一章:Maximun margin hyperplane for linearly nonseparable classes

 

初译 Support Vector Machines:A Simple Tutorial(二)

标签:http   har   空间   vector   rpe   gac   bit   矩阵   eee   

原文地址:http://www.cnblogs.com/heyang1026/p/6725333.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!