本文适合于对SVM基本概念有一点了解的童鞋。

SVM基本概念:

  • 最大边缘平面——基本原理:结构风险最小化
  • 分类器的泛化误差
  • 支持向量

问题描述:

请对一下数据,利用svm对其进行分类。

      最终任务:
           找到最优超平面

  图1

看到这张图之后,发现这是一个线性可分的二分类问题。

数据是这样的:     

  y=1 类别1   y=-1 类别2
  x1 x2   x1 x2
x1 0 0 x4 3 3
x2 1 0 x5 3 0
x3 0 1 x6 0 3
 
好,老师的题目已经出完了,在动手解题之前,我们首先通过观察,可以轻易的发现,最佳的分类超平面就是:x1+x2-2=0
而类别1的支持向量为:x1+x2-1=0
类别2的支持向量为:x1+x2-3=0
好,这个观察的结果可以便于我们稍后通过计算而得出的结果进行一个验算。
 
 
————————————美丽的分割线之STEP1——————————————
下面开始正式的解题环节:
STEP    1,我们可以把这个超平面写成w·x+b=0(w1x1+x2x2+b=0)的形式(直线表示方法中的一般式),其中w和x都代表向量,w的方向垂直于决策边界。
问题的最终目标就是要得到W和b的值。
如图2:
 

图2

可以看到,点XA(XA1,XA2)和点XB(XB1,XB2)在决策边界上,因此,他们符合:

w·xA+b=0

w·xB+b=0

对于任何在决策边界上方的三角形X三角形,我们可以证明:

w·x三角形+b=k    == >    k>0

同理,对于任何在决策边界下方的三角形X圆形,我们可以证明:

w·x+b=k’   == >    k’<0

因此,我们可以用以下方式预测任何测试样本z的类型:

类别1    y=1    如果w·z+b>0

类别2    y=-1   如果w·z+b<0

————————————美丽的分割线之STEP2——————————————

下面,我们来考虑一下支持向量,两个超平面可以表示如下:

bi1:w·x+b=1

bi2:w·x+b=-1

(PS:这里是一定能够表示为上面的形式,因为你可以对式子两边同时进行等倍的放大和缩小)

假设,xm和xn分别为类1和类2上的点,那么:

                                                 图3(图画的不太好,请谅解)

将xm和xn分别代入公式,则边缘d可以通过两式相减得到:

w·(x1-x2)=2                                     模模cosθ

||w||✕d=2                                       可以理解为点到直线的距离

∴d=2 / ||w||

其中,||w||表示范数,这里的||w||可以理解为向量w的模(向量范数:向量x的2范数是x中各个元素平方之和再开根号),若向量w=(w1,w2),那么||w||=(w12+w22)1/2。这里,我们暂时还不知道哪些点是支持向量上的点。

————————————美丽的分割线之STEP3—————————————

SVM的训练目标就是训练出最优的W和b

让我们再来简单回顾一下:

yi=1:    w·xi+b≥1

yi=-1:   w·xi+b≤-1

这个条件要求,所有类别为1的训练实例(即三角形),都必须位于超平面w·x+b=1上或位于它的上方,而那些类别为2的训练实例(即圆圈)都必须位于超平面w·x+b=-1上或位于它的下方。我们可以整理出一个比较紧凑的形式:

yi(w·xi+b)≥1 , i=1,2(本例中,是二维的,故i取1和2)

尽管前面的条件可以用于其他的线性分类器,但是SVM增加了一个要求:决策边界的边缘必须是最大的。然而,最大化边缘等价于最小化下面的目标函数:

max (d=2 / ||w||)     ==     min (||w||2 / 2)

也就是说,我们当前的目的就是

由于目标函数是二次的,而约束在参数w和b上是线性的,因此,这个问题是一个凸(convex)优化问题,可以通过标准的拉格朗日乘子法解决。

整理一下得到该优化问题的拉格朗日算子:

下面,根据题目,我们把具体的数据代入式子展开后得到:

因为拉格朗日乘子是未知的,因此我们仍然不能得到向量w和b的解。请仔细揣摩书上的话:

决策边界的参数w和b仅依赖于这些支持向量

也就是说,我们利用二次规划的方法可以求出在支持向量上的点的λ值(不在支持向量上的点,λ值都为0,即拉格朗日乘子都为0)。

当我们知道所有λ的值之后,根据我们就可以算出w1和w2,然后在根据就可以求出b的值。

这样,我们就圆满的完成了任务。

————————————美丽的分割线之STEP4——————————————

那么,当线性不可分的时候,我们该如何转化呢?这时就要涉及到一些更高级的东东,未完待续。

支持向量机SVM进阶的更多相关文章

  1. 【IUML】支持向量机SVM

    从1995年Vapnik等人提出一种机器学习的新方法支持向量机(SVM)之后,支持向量机成为继人工神经网络之后又一研究热点,国内外研究都很多.支持向量机方法是建立在统计学习理论的VC维理论和结构风险最 ...

  2. 机器学习:Python中如何使用支持向量机(SVM)算法

    (简单介绍一下支持向量机,详细介绍尤其是算法过程可以查阅其他资) 在机器学习领域,支持向量机SVM(Support Vector Machine)是一个有监督的学习模型,通常用来进行模式识别.分类(异 ...

  3. 以图像分割为例浅谈支持向量机(SVM)

    1. 什么是支持向量机?   在机器学习中,分类问题是一种非常常见也非常重要的问题.常见的分类方法有决策树.聚类方法.贝叶斯分类等等.举一个常见的分类的例子.如下图1所示,在平面直角坐标系中,有一些点 ...

  4. 机器学习算法 - 支持向量机SVM

    在上两节中,我们讲解了机器学习的决策树和k-近邻算法,本节我们讲解另外一种分类算法:支持向量机SVM. SVM是迄今为止最好使用的分类器之一,它可以不加修改即可直接使用,从而得到低错误率的结果. [案 ...

  5. 机器学习之支持向量机—SVM原理代码实现

    支持向量机—SVM原理代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9596898.html 1. 解决 ...

  6. 支持向量机SVM——专治线性不可分

    SVM原理 线性可分与线性不可分 线性可分 线性不可分-------[无论用哪条直线都无法将女生情绪正确分类] SVM的核函数可以帮助我们: 假设‘开心’是轻飘飘的,“不开心”是沉重的 将三维视图还原 ...

  7. 一步步教你轻松学支持向量机SVM算法之案例篇2

    一步步教你轻松学支持向量机SVM算法之案例篇2 (白宁超 2018年10月22日10:09:07) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...

  8. 一步步教你轻松学支持向量机SVM算法之理论篇1

    一步步教你轻松学支持向量机SVM算法之理论篇1 (白宁超 2018年10月22日10:03:35) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...

  9. OpenCV 学习笔记 07 支持向量机SVM(flag)

    1 SVM 基本概念 本章节主要从文字层面来概括性理解 SVM. 支持向量机(support vector machine,简SVM)是二类分类模型. 在机器学习中,它在分类与回归分析中分析数据的监督 ...

随机推荐

  1. 升级win10,提示(RAM)内存不足2G的解决的方法,亲測可行

    前两天升级win10,检測我内存不足2G,可我的电脑是8G的内存如图 百度,google了非常多方法,有些是两根内存,去掉一个就好了,但是我的就一根8G的,其它就没什么好的方法了,改biosCPU选项 ...

  2. Dynamics CRM 2015/2016 Web API:聚合查询

    各位小伙伴们,今天是博主2016年发的第一篇文章.首先祝大家新年快乐.工资Double,哈哈.今天我们来看一个比較重要的Feature--使用Web API运行FetchXML查询! 对的,各位.你们 ...

  3. (https://www.ibm.com/developerworks/community/forums/html/topic?id=77777777-0000-0000-0000-000014550004)Topic: Caught java.io.CharConversionException. ERRORCODE=-4220, SQLSTATE=null

    270002WDPN                                            3 Posts                             0 people l ...

  4. Java虚拟机性能管理神器 - VisualVM(3) 插件安装与更新路径配置

    Java虚拟机性能管理神器 - VisualVM(3)  插件安装与更新路径配置 插件路径地址配置方法: VisualVM打开后,会发现功能比较单一,只有概述.监视.线程.抽样器.Profiler五个 ...

  5. Windows环境下ELK(5.X)平台的搭建

    一.Windows环境下ELK平台的搭建(2.*) 1.安装配置Java环境 在Oracle官网获取最新版的Java版本,由于只是运行不是开发,所以也可以只下载JRE.官网:http://www.or ...

  6. HTML5 3D Google搜索 小盒子 大世界

    HTML5真是能让人想象万千,居然动起了Google搜索的主意,它利用HTML5技术将Google搜索放到了一个小盒子里,弄起了3D搜索.随着鼠标移动,HTML5 3D搜索盒子也就转动,非常立体.点击 ...

  7. Netbeans配置Java SE嵌入式平台(树莓派)

    1.配置平台 来源:http://www.cnblogs.com/xiaobo-Linux/p/7955769.html 2. 选择远程 3. 填写信息 JRE 路径是树莓派上的路径:how? sud ...

  8. SELECT a.loginname,a.deviceid,a.time,Row_Number() OVER (partition by a.loginname ORDER BY a.deviceid desc,a.time asc) rank

    现在做一个反欺诈内容要用到笛卡尔积,用来分析用户一个手机号,对应的多个设备,每个更换设备的时间,这里取的时间是系统收集时间,用来代表更换的时间, 所以要先对设备换的时间作排序,然后进行rank,最后求 ...

  9. Javascript数组与类数组对象

    问题来由: 之前面试X公司的时候,问我关于原型链知道多少,于是我就开始说了一些有关于原型链的东西,面试官问Array的原型是什么,我说是对象,毕竟Array.prototype===array.__p ...

  10. Ckeditor的JS的加载和取值和赋值方法

    Ckeditor 就是原来的Fckeditor. JS加载: $(function() { CKEDITOR.replace('FContent'); //FContent:这个对应文本域 }); J ...