《Support Vector Machines:A Simple Tutorial》

作者 Alexey Nefedov

 

(一)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”

转载于:https://www.cnblogs.com/heyang1026/p/6705745.html

初译 Support Vector Machines:A Simple Tutorial(一)相关推荐

  1. OpenCV3.3中支持向量机(Support Vector Machines, SVM)实现简介及使用

    OpenCV 3.3中给出了支持向量机(Support Vector Machines)的实现,即cv::ml::SVM类,此类的声明在include/opencv2/ml.hpp文件中,实现在mod ...

  2. Sequential Minimal Optimization: A Fast Algorithm for Training Support Vector Machines 论文研读

    摘要 本文提出了一种用于训练支持向量机的新算法:序列最小优化算法(SMO).训练支持向量机需要解决非常大的二次规划(QP)优化问题.SMO 将这个大的 QP 问题分解为一系列最小的 QP 问题.这些小 ...

  3. Machine Learning week 7 quiz: Support Vector Machines

    Support Vector Machines 5 试题 1. Suppose you have trained an SVM classifier with a Gaussian kernel, a ...

  4. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 12—Support Vector Machines 支持向量机...

    Lecture 12 支持向量机 Support Vector Machines 12.1 优化目标 Optimization Objective 支持向量机(Support Vector Machi ...

  5. Ex6_机器学习_吴恩达课程作业(Python):SVM支持向量机(Support Vector Machines)

    Ex6_机器学习_吴恩达课程作业(Python):SVM支持向量机(Support Vector Machines) 文章目录 Ex6_机器学习_吴恩达课程作业(Python):SVM支持向量机(Su ...

  6. Programming Exercise 6:Support Vector Machines

    大家好,我是Mac Jiang,今天和大家分享一下coursera网站上Stanford University的Machine Learning公开课(吴恩达老师)课程第六次作业:Programmin ...

  7. 机器学习之支持向量机: Support Vector Machines (SVM)

    机器学习之支持向量机: Support Vector Machines (SVM) 欢迎访问人工智能研究网 课程中心 网址是:http://i.youku.com/studyai 本篇博客介绍机器学习 ...

  8. 论文阅读和分析:Hybrid Mathematical Symbol Recognition using Support Vector Machines

    HMER论文系列 1.论文阅读和分析:When Counting Meets HMER Counting-Aware Network for HMER_KPer_Yang的博客-CSDN博客 2.论文 ...

  9. 支持向量机(Support Vector Machines,SVM)

    文章目录 1. 线性可分SVM 与 硬间隔最大化 1.1 线性可分SVM 1.2 函数间隔.几何间隔 1.3 间隔最大化 2. 线性SVM 与 软间隔最大化 2.1 线性SVM 3. 非线性SVM 与 ...

最新文章

  1. TensorFlow与PyTorch模型部署性能比较
  2. JFinal-ext PoiRender导出Excel 列顺序混乱的问题解决办法
  3. Can't create layer 289 of type Squeeze in function 'cv::dnn::dnn4_v20190902::LayerData::getLaye
  4. 获取父窗口元素或者获取iframe中的元素(相同域名下)
  5. nm命令中符号类型详解
  6. 在安卓上安装java_如何在Android上安装JavaCV并使用FrameGrabber
  7. ftp上传乱码_ftp同步图片到本地文件夹,ftp同步图片到本地文件夹的实现步骤
  8. 视觉中国被连夜约谈后再次致歉;京东高管:下一步将向总监“开刀”;华为P30价格公布 | 雷锋早报...
  9. debug, release strlen与sizeof
  10. 链路聚合的配置(思科)
  11. 班主任直接把奖学金名额给了我?就因为我用Python给她写了一个自动阅卷脚本
  12. 分开奇数和偶数(C语言实现)
  13. 思科交换机指示灯全解
  14. teamviewer检测为商业用途 5分钟后关闭解决方法
  15. 10个副业兼职创业,在家赚钱绝对真实
  16. 退出计算机用户的快捷方式,如何注销计算机或从Windows 10注销
  17. 计量经济学及Stata应用 陈强 第九章模型设定与数据问题习题9.5
  18. 我的世界服务器信号下面是红,适用于服务器的红石抽奖机我的世界抽奖机电路图...
  19. Revit二开--批量修改视图范围(revit宏)
  20. Linux下使用github

热门文章

  1. Linux笔记(shell特殊符号,sort排序,wc统计,uniq去重,tee,tr,split)
  2. 我学习图像处理的小结
  3. The P4 Language Specification v1.0.2 Parser
  4. vmware虚拟化之vswitch详细资料
  5. Android ScrollView用法实例汇总
  6. 交通运输部·车载导航系统——终端如何与服务器通信——玩转通信协议(源码下载)...
  7. c#asp.net url 传递中文参数要使用 System.Web.HttpUtility.UrlEncode 而不能使用Server.UrlEncode...
  8. HTML中的padding和margin
  9. 美国国家标准技术局发布应用容器安全指南
  10. 启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法!在eclipse.ini中为eclipse指定jdk启动...