Logistuc Regression相比,SVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。比较容易理解的是,从决策边界到各个training example的距离越大,在分类操作的差错率就会越小。因此,SVM也叫作Large Margin Classifier。

最简单的情况是,在二维平面中的,线性可分情况,即我们的training set可以用一条直线来分割称为两个子集,如下图所示。而在图中我们可以看到,H2和H3都可以正确的将training set进行分类,但细细想来,使用H2进行分类的话,我们对于靠近蓝线的几个训练样例其实是不敢说100%的,但对于离蓝线最远的小球,我们却很有把握。这也是H3这条SVM红线出现的原因:尽量让两侧的训练样例远离决策边界,从而让我们的分类系统有把握对每个球Say Absolutely。

Logistic Regression中,我们将类别y定义为0和1,从而把h(x)看做p(y=1)的概率,而在SVM里,我们将其定义为-1和+1。而我们所需要在n维空间中寻找的超平面,则被定义为:

由此,分类函数可以定义为:

将training example的坐标带入可以得到三种结果:f(x)=0,则该点处于决策平面上;f(x)>0,属于y=1类;f(x)<0,属于y=-1类。而对于每个训练样例,我们可以通过计算如下定义的“函数间隔”(functional margin),来判断是否分类正确(数值为负则说明错误),以及通过数值大小看出测试点与决策平面的距离:

而真正表征SVM决策边界margin宽窄的,是上式中值最小的那个,也就是说,距离边界最近的点,其到边界的距离,决定了margin的大小。

而上式得出的函数间隔,实际上并不是该间隔真正的长度值,所以我们需要计算“几何间隔”(geometric margin),即点到平面距离公式:

带入SVM公式,的几何间隔计算公式:

此时,我们想要做的事情是,最大化这个几何距离:

那么,如此看来,我们已经ok了,如下图:

我们现在得到的三个hyperplane的方程为:

在这种情况下,margin是多少呢,根据平行线的距离公式:

在这里其实我纠结了很长时间,因为很多课程从此就说的不太详细了,也许是我个人的数学水平较差吧,所以就花了很久去思考。首先,我们考虑到这个几何距离gamma,肯定是一个常数,因为当我们的f(x)确定,数据集确定以后,它就是离f(x)最近的点到f(x)=0这条直线的距离。那么,我们上述的三个方程,同时除以一个常数,一切会改变吗?首先,可以确定,3个方程一点也不会变,2x+4=6与x+2=3,是一样的对吗?那么我当时就想了,这波操作后,margin肯定会变的!实际上,由于gamma和w之间的线性关系,margin也是不变的,所以相当于,我们修改了w,从而消去了gammar。

而单边的margin则等于总margin的一半:

则问题转化为:

求解w的过程请见:Support Vector Machine(2):求解线性可分SVM的最佳边界

最新文章

  1. Linux中SysRq的使用(魔术键)
  2. 主成分分析 (PCA) 与其高维度下python实现(简单人脸识别)
  3. C语言 &#183; 未名湖边的烦恼
  4. WPF datagrid 加入图片
  5. 零基础如何学习java更有效呢?
  6. Html简单介绍
  7. Java基础和JDK5.0新特性
  8. 编译安装的 mysql apache 用 service mysqld start 来启动
  9. MongoDB性能监控
  10. Java知识点:Object类
  11. Java学习小结(1)-数组的创建与传参
  12. Android 使用MediaStore.Images和 Cursor查询本地图片和图片缩略图
  13. mapreduce源码分析总结
  14. WPF窗体置于桌面最底层
  15. public static &lt;T&gt; Map&lt;String, T&gt; json2map
  16. AccountManager使用教程
  17. 51Nod--1085背包问题
  18. Python数据结构应用2——Queue
  19. Android为TV端助力 播放视频卡顿问题
  20. php curl报错:417 - Expectation Failed

热门文章

  1. Linux下创建虚VIP的方法及相互的区别:
  2. struts2导入多个xml引入报错&lt;include&gt;
  3. Codeforces Round #421 (Div. 2) - A
  4. JS合并两个函数
  5. [题目] 4座塔的Hanoi
  6. alert(1) to win 2
  7. [MethodImpl(MethodImplOptions.Synchronized)]、lock(this)与lock(typeof(...))
  8. Altium Designer 19 导出光绘文件
  9. basic deepwalk
  10. 基于 Flink 的实时数仓生产实践