初译 Support Vector Machines:A Simple Tutorial

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初译 Support Vector Machines:A Simple Tutorial相关的知识,希望对你有一定的参考价值。

从本次开始我将开始尝试着逐章翻译一下 Alexey Nefedov的《Support Vector Machines:A Simple Tutorial》这本教材,这可是我们导师极力推荐的SVM教材,看了好久一直感觉一脸懵逼,索性开坑翻译一下吧,也当是加深理解,毕竟我也是一知半解,如果翻译的有不对的地方还望大佬们斧正,欢迎提意见,欢迎讨论。

嗯,就是这样。

(一)Introduction

 在本章节中将会介绍一些用于定义支持向量机(SVM)的基础的概念,这些概念对于理解SVM至关重要,假定读者了解向量内积与向量范数的相关知识。

1.1 待解决的问题

问题如下:

  假设存在一个很大的(也许是无穷的)一组对象(observations,patterns,etc.),这些对象均可以被分成两类(或者说可以被标记成两类),而且这些对象中的一些已经被分好了类,我们需要做的就是定义一个算法,利用这些已经被分好类的“样品”(也就是训练集咯)输入到算法中进行训练,最后使我们的算法可以在最小失误的情况下来对这组对象进行分类。 

  被分类的对象一般通过向量来表示,尽管理论上来说SVM的内积或者核函数可以在任意的向量空间进行计算,但是一般来说SVM分类对象所处的向量空间V一般都是n维的坐标空间(原文为real coordinate space 不知道怎么翻译了请大佬指教 )Rn,在此向量空间中,向量x是由n个数字xi组成的一组数据,即:

    技术分享

上文中提到已经分类完成的样本(即训练集)可以描述为:

    技术分享  

其中l为训练集中对象的总数,而且yi属于集合{-1,+1},代表了该组对象的两种类别。

而一个分类算法(即分类器)可以被表示为如下形式:

    技术分享

因此如果f(x)=1则代表分类器将向量x分类为(或标记为)类别一,若f(x)=-1则代表分类器将向量x分类为(或标记为)类别二。

1.2 关于超平面

在上一节所述的被分类样本(表示为n维向量)所在的坐标空间Rn中:

     技术分享                                         (1.1)

    或

    技术分享                                    (1.2)

  等式(1.1)和等式(1.2)可以描述在n维向量空间中一组由向量组成的n-1维的集合,即给定一个非零的向量技术分享和一个标量技术分享,在Rn所有的向量中能够满足等式(1.1)或(1.2)的向量技术分享所组成的集合,我们将该集合命名为超平面(hyperplane)。例如,一维向量空间R的超平面即为空间内(也就是一条线咯)的一个点,二维向量空间R2的超平面即为平面上的一条线,以此类推。

  在超平面的描述中和等式(1.1)(1.2)中出现的向量ω被称为超平面的法相量(normal vector),标量b被称为超平面的截距(intercept),其中法向量ω决定了向量空间中超平面的方向(原文为orientation),||ω||和b的比值(并非由b单独决定)决定了超平面与向量空间Rn的原点之间的距离。法向量ω与所有与超平面平行的向量正交(感觉这种说法怪怪的,个人理解就是类似于立体几何中平面的法向量那种感觉吧)也可以说如果存在技术分享并且满足技术分享技术分享,则对于任意技术分享均有技术分享。如下图所示:

                                                                 技术分享

 

                                              上图为R2空间内的超平面,由图中直线的位置可以推测出b<0,ω1>0,ω2>0

  一个超平面可以将向量空间Rn划分为两部分,分别位于超平面的两侧,可以称之为正半平面和负半平面(原文:positive and negative half-spaces ),用符号表示为:技术分享技术分享,对于任何向量技术分享,都有技术分享,同理对于任何向量技术分享都有技术分享,如下图所示:

                                                                 技术分享

 

  一个超平面可以被无数组ω和b所定义,如果两个超平面技术分享技术分享分别由ω1,b1和ω2,b2所定义,并且满足技术分享技术分享,则超平面技术分享技术分享为同一个超平面。我们可以任意等比例的放大或者缩小一个超平面的ω和b,我们可以规定当技术分享时的ω和b作为超平面的一个“标志性的”参数。(同样的,也可以定义-ω和-b作为参数,但是因此向量空间中的正负半平面的位置将被颠倒。)

  向量空间Rn中的一个向量x和超平面技术分享的距离可以根据下式计算:

    技术分享                                     (1.3)

  值得一提的是技术分享是一个带符号的量,当向量技术分享时,技术分享,当技术分享技术分享,显然当向量x处于超平面上时有技术分享。如果令技术分享,等式1.3则变为:

    技术分享

  从等式1.3可以看出空间远点O与超平面的距离为技术分享,由此出发我们可以得出ω和b时如何影响向量空间中超平面的位置和方向的。我们将会得出如下结论,而这些结论将会帮助我们理解接下来的maximum margin hyperplane。

  1、当b>0时空间坐标原点将会位于超平面技术分享的正半平面的一侧,即技术分享,当b<0时坐标原点将会位于超平面技术分享的负半平面的一侧,即技术分享,同理当b=0时空间坐标原位于超平面技术分享上。

  2、当b的绝对值增加,超平面将会向着远离空间原点的方向平移,反之则会向靠近空间原点的方向平移。如下图所示:

      技术分享

  3、如果在改变法向量ω的值的同时保持其的范数||ω||不变,超平面将会以原点为圆心围绕圆心绕圈移动,圈的半径为技术分享

(即上文提到的原点到超平面的距离)。如下图所示:

      技术分享

  4、如果在保持法向量ω的方向不变的情况下增加法向量的值,超平面将会向着远离圆心的方向平移,反之亦然。所以想要平移超平面的位置并不是只有增加改变的绝对值这一种方法,如下图所示:

      技术分享

1.3关于我不知道中文应该怎么翻译但是感觉会很重要的Margin

  综上所述,一个超平面会以如下的方式将其所在的向量空间分割成两个半平面,而位于这两个半平面上的向量也会被分成C1,C2两类。

    技术分享

    技术分享

    或者

    技术分享

    技术分享                                    (1.4)

  而对于在第一节中我们所说的那些分布于Rn中待分类的“样品”和已分类的训练集,如果存在至少一个超平面将他们分离成于自身属性相对应的C1,C2两类,我们就他们为线性可分的(linearly separable),对于线性可分的数据集,根据(1.4)可得出相应的decision function(这个词怎么说都觉着别扭...)作为一个可以将上述向量正确分类的分类器,如下:

  技术分享    (1.5)

  那么问题来了:由于向量空间中两类线性可分的类别之间总会存在无数个超平面(拥有不同的ω和b)将之分割开,我们应当选哪一个超平面作为适当的分类器呢?

  答:SVM会选择拥有最大的margin的超平面作为分类器。

  那么问题又来了:margin是什么鬼?

  答:margin的定义如下:

      如果超平面技术分享将线性可分的C1,C2分离开,那我们就定义超平面技术分享的margin为技术分享到C1的距离加上技术分享到C2的距离。数学表达如下:

     技术分享

  在这里的技术分享的定义为超平面与分类为C的所有的向量的距离(即公式1.3)的绝对值的最小值,数学表达式如下:

     技术分享

  对于margin定义的另一种理解方法为:margin的值等于在超平面法向量ω的方向上C1与C2的距离。假设技术分享为分类为C1的所有向量点在超平面法向量ω的方向上的投影所组成的集合,技术分享为分类为C2的所有向量点在超平面法向量ω的方向上的投影所组成的集合(真拗口。。。),则有:

      技术分享   

                  其中

       技术分享

  如下图所示:

      技术分享

  从我们对margin的定义中可得出margin有以下几点性质:

    1、当超平面技术分享将C1和C2分割开时,该超平面margin的大小只取决于超平面的法向量ω,而与截距b无关。

    2、对于任何将C1和C2分割开的超平面,都有

        技术分享

         其中

         技术分享

    不难得出,在C1和C2之间,拥有最大margin的超平面也存在无数多个,如下图所示。

    技术分享

 

第一章结束,下一章为“Maximum margin hyperplane for linearly separable classes”

 

 







以上是关于初译 Support Vector Machines:A Simple Tutorial的主要内容,如果未能解决你的问题,请参考以下文章

Support vector machine

支持向量机(Support Vector Machine)

2.机器学习技法- Dual Support Vector Machine

Smooth Support Vector Machine - Python实现

机器学习技法:04 Soft-Margin Support Vector Machine

Spark MLlib模型 支持向量机Support Vector Machine