近来,了解了一下SVM(支持向量机 support vector machine)的原理。顺便把自己理解的内容整理一下。

不讲背景啦,直接切入主题。

    一、什么是支持向量机

好比说,我们现在在一个平面上有许多的圈圈和叉叉,如图1.1所示。

图1.1 

现在需要一条直线将圈圈和叉叉分开,可以想象,会有很多条可能的直线,但是会有一条最佳的分割线L,如图1.2所示。

图1.2 

绿色的叉叉到L的最短距离为d1,红色圈圈到L的最短距离为d2,保证d1=d2,并且使d1+d2的值最大,那么这条直线就是最佳的分割线。具体的表示如图1.3所示

图1.3

图1.3中,蓝色的虚线分别为H1和H2,每一个圈圈和叉叉都可以看成一个向量,落在蓝色虚线上的叉叉和圈圈就称为“支持向量”,那么没有在边缘上的向量就是“非支持向量”。

另外,在SVM中,我们经常听到“超平面”的概念。什么是超平面呢?当图中的圈圈和叉叉是二维的时候,那么L就是一条直线;当图中的圈圈和叉叉是三维的时候,那么L就是一个平面;当图中圈圈和叉叉是三维以上的时候,那么L就是一个超平面。

图中的每个圈圈和叉叉都是一个样本,圈圈和叉叉的维数表示样本的特征数量。

二、怎么用数学描述超平面

如图2.1所示,设超平面L的法向量为$\overset{\scriptscriptstyle\rightharpoonup}{w}$ ,某一样本向量为$\overset{\scriptscriptstyle\rightharpoonup}{u}$,则$\overset{\scriptscriptstyle\rightharpoonup}{u}$在$\overset{\scriptscriptstyle\rightharpoonup}{w}$上的投影为$\frac{\overset{\scriptscriptstyle\rightharpoonup}{u}\centerdot \overset{\scriptscriptstyle\rightharpoonup}{w}}{||\overset{\scriptscriptstyle\rightharpoonup}{w}||}$。

对于所有的圈圈样本(正样本),有:

$\frac{{{{\overset{\scriptscriptstyle\rightharpoonup}{x}}}_{+}}\centerdot \overset{\scriptscriptstyle\rightharpoonup}{w}}{||\overset{\scriptscriptstyle\rightharpoonup}{w}||}>c$,其中${{\overset{\scriptscriptstyle\rightharpoonup}{x}}_{+}}$为正样本向量

对于所有的叉叉样本(负样本),有:

$\frac{{{{\overset{\scriptscriptstyle\rightharpoonup}{x}}}_{-}}\centerdot \overset{\scriptscriptstyle\rightharpoonup}{w}}{||\overset{\scriptscriptstyle\rightharpoonup}{w}||}<c$,其中${{\overset{\scriptscriptstyle\rightharpoonup}{x}}_{-}}$为负样本向量

图2.1

令$b=-c||\overset{\scriptscriptstyle\rightharpoonup}{w}||$ ,可得:

${{\overset{\scriptscriptstyle\rightharpoonup}{x}}_{+}}\centerdot \overset{\scriptscriptstyle\rightharpoonup}{w}+b>0$    ,           ${{\overset{\scriptscriptstyle\rightharpoonup}{x}}_{-}}\centerdot \overset{\scriptscriptstyle\rightharpoonup}{w}+b<0$        ①

因为$\overset{\scriptscriptstyle\rightharpoonup}{w}$和$b$都是未知量,同时缩放$\overset{\scriptscriptstyle\rightharpoonup}{w}$和$b$对结果无影响,不妨令:

${{\overset{\scriptscriptstyle\rightharpoonup}{x}}_{+}}\centerdot \overset{\scriptscriptstyle\rightharpoonup}{w}+b\ge 1$   ,          ${{\overset{\scriptscriptstyle\rightharpoonup}{x}}_{-}}\centerdot \overset{\scriptscriptstyle\rightharpoonup}{w}+b\le 1$        ②

令${{y}_{i}}$ 表示第i个样本的分类结果。

对于负样本,令${{y}_{i}}=-1$,对于正样本,令${{y}_{i}}=+1$,结合②中的不等式,可以得到:

${{y}_{i}}({{\overset{\scriptscriptstyle\rightharpoonup}{x}}_{i}}\centerdot \overset{\scriptscriptstyle\rightharpoonup}{w}+b)-1\ge 0,\forall i$

好了,目前推到了那么多公式,我们来总结一下,如图2.2所示,

在平面L上的点x满足:${{\overset{\scriptscriptstyle\rightharpoonup}{x}}_{{}}}\centerdot \overset{\scriptscriptstyle\rightharpoonup}{w}+b=0$

在平面H1上的点x满足:${{\overset{\scriptscriptstyle\rightharpoonup}{x}}_{{}}}\centerdot \overset{\scriptscriptstyle\rightharpoonup}{w}+b=1$

在平面H2上的点x满足:${{\overset{\scriptscriptstyle\rightharpoonup}{x}}_{{}}}\centerdot \overset{\scriptscriptstyle\rightharpoonup}{w}+b=-1$

图2.2

至此,我们了解了什么是支持向量机,并且完成对超平面的数学描述,下面就是怎样找到这样的一个超平面的问题啦,请见下一篇博文:SVM入门(二)。

SVM入门(一)的更多相关文章

  1. 【转】SVM入门(一)SVM的八股简介

    (一)SVM的八股简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优势,并能够 ...

  2. 支持向量机(SVM)入门

    一.简介 支持向量机,一种监督学习方法,因其英文名为support vector machine,故一般简称SVM. 通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器, ...

  3. SVM入门

    前言: 又有很长的一段时间没有更新博客了,距离上次更新已经有两个月的时间了.其中一个很大的原因是,不知道写什么好-_-,最近一段时间看了看关于SVM(Support Vector Machine)的文 ...

  4. SVM入门(十)将SVM用于多类分类

    源地址:http://www.blogjava.net/zhenandaci/archive/2009/03/26/262113.html 从 SVM的那几张图可以看出来,SVM是一种典型的两类分类器 ...

  5. 文本分类学习 (八)SVM 入门之线性分类器

    SVM 和线性分类器是分不开的.因为SVM的核心:高维空间中,在线性可分(如果线性不可分那么就使用核函数转换为更高维从而变的线性可分)的数据集中寻找一个最优的超平面将数据集分隔开来. 所以要理解SVM ...

  6. 文本分类学习 (九)SVM入门之拉格朗日和KKT条件

    上一篇说到SVM需要求出一个最小的||w|| 以得到最大的几何间隔. 求一个最小的||w|| 我们通常使用 来代替||w||,我们去求解 ||w||2 的最小值.然后在这里我们还忽略了一个条件,那就是 ...

  7. SVM入门——线性分类器的求解,核函数

    一.问题的描述 从最一般的定义上说,一个求最小值的问题就是一个优化问题(也叫寻优问题,更文绉绉的叫法是规划——Programming),它同样由两部分组成,目标函数和约束条件,可以用下面的式子表示: ...

  8. 【转】 SVM算法入门

    课程文本分类project SVM算法入门 转自:http://www.blogjava.net/zhenandaci/category/31868.html (一)SVM的简介 支持向量机(Supp ...

  9. SVM算法入门

    转自:http://blog.csdn.net/yangliuy/article/details/7316496SVM入门(一)至(三)Refresh 按:之前的文章重新汇编一下,修改了一些错误和不当 ...

随机推荐

  1. VR元年,VR虚拟现实这只风口上的猪有怎样的变化?

    走过了2016年,无论我们承认不承认,这一年到底是不是VR元年,我们都很难否定,在这一年,VR虚拟现实生态圈有很大的变化,那么,这一年VR虚拟现实到底有怎样的改变呢?我们的VR虚拟现实生态圈,发生了什 ...

  2. java8 stream ,filter 等功能代替for循环

    直接上代码,比较实在. 对象A public Class A{ private Long id; private String userName; ..... ....省略get和set方法 } 在L ...

  3. IOS开发-UI学习-UIWebView,简单浏览器的制作

    制作一个简单的浏览器,包含网址输入框,Search按钮,前进.回退按钮,UIWebView就这几个简单的控件. UITextField:用来输入网址: UIbuttom:实现前进,后退,搜索等功能: ...

  4. Ubuntu切换默认语言

    不得不说,从Ubuntu到Debian,又到CentOS 7,我胡汉三又回来了... 然后又装了个中文版的Ubuntu16.04LTS,不得不说,Ubuntu对中文的支持真的很好 不过,还是不太习惯, ...

  5. UVa 10427 - Naughty Sleepy Boys

    题目大意:从1开始往后写数字,构成一个如下的字符串 123456789101112... .求第n位的数字是多少. 找规律,按数字的位数可以构建一个类似杨辉三角的东西,求出第n位是哪个数的第几位即可. ...

  6. UVa 10057 - A mid-summer night's dream

    题目大意:给n个数,找一个数A使得A与这n个数的差的绝对值最小.输出A最小的可能值,n个数中满足A的性质的数的个数以及满足A性质的不同的数的个数(不必从这n个数中挑选). 看见绝对值就想到了数轴上点之 ...

  7. 《疯狂Java讲义》(七)---- 方法

    一 方法的参数传递机制 Java方法的参数传递方式只有一种:值传递.就是将实际参数值的副本传入方法内,而参数本身不会受到任何影响. eg. 基本类型的值传递 public class Primitiv ...

  8. catalan卡特兰数

    卡塔兰数是组合数学中一个常在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡塔兰(1814–1894)命名.历史上,清代数学家明安图(1692年-1763年)在其<割圜密率捷法>最 ...

  9. 通过RMAN克隆11g数据库(基于active database)

    11g的RMAN duplicate 可以通过Active databaseduplicate和Backup-based duplicate两种方法实现.这里的测试使用的是Active databas ...

  10. pureMVC简单示例及其原理讲解二(Model层)

    本节将讲述Model层. Model层有VO和Mediator组成,非常简单,仅仅包含两个类:UserVO和UserProxy. UserVO中的构造器用于初始化用户的添加(通过email和密码),另 ...