支持向量机缩写是SVM(support vaector machine),这里的“机(machine)”是一个算法。在机器学习领域,常把一些算法看做是一个机器,如感知机(也叫感知器)。支持向量机本身是一种监督学习算法,它广泛的应用于统计分类以及回归分析中。

构建支持向量机

  支持向量机的假设函数与逻辑归回一样,这里需要回顾一下逻辑回归的模型:

  当实际值是1时,如果我们想让预测结果尽可能准确,则需要预测值是1的概率很大,即hθ(x) ≈ 1,此时,θTx >> 0;相应的,当实际值是0时,如果希望预测值尽可能准确,则hθ(x) ≈ 0,θTx << 0。对于逻辑回归的损失函数:

  当y=1时,z = θTx越大,预测结果hθ(x) 越接近1,cost值越小;z = θTx越小,预测结果hθ(x) 越接近0,cost值越大:

  当y=0时,z = θTx越大,预测结果hθ(x) 越接近1,cost值越大;z = θTx越小,预测结果hθ(x) 越接近0,cost值越小:

  支持向量机的cost function可以看作逻辑回归的退化,它将曲线变为直线:

  这里的cost1和cost0是对称的,都是折线函数,其斜率和截距可以自行选定。上图中的cost可能是:

  因为1/m是常量,对最终的优化不起任何作用,所以习惯上支持向量机损失函数去掉1/m:

  上式中λ是常量,相应地,1/λ同样是常量,对于最终目标(求得最佳θ使J(θ)最小化)来说,乘以一个常数对计算没有任何影响,所以上式可乘以1/λ:

  对于优化来说,①和②最终将得到同样的结果,其中λ在优化中起到的作用一样,如果过拟合,需要增大λ(减小C),欠拟合需要缩小λ(增大C)。

  我们使用一个极端的例子,假设C设置的很大,为了使J(θ)最小化, 需要让C控制的表达式接近0:

  因为C相当于1/λ,C很大等价于λ很小,这将产生过拟合:

安全距离的直观理解

  假设支持向量机代价涵数的曲线如下所示:

  对于二分类来说:

  结合最小化J(θ):

  对于能够正确分开的正样本,逻辑回归要求z = θTx ≥ 0,而SVM要求z = θTx ≥ 1,此时cost1(z) = 0;对于正确分开的负样本,逻辑回归要求z = θTx < 0,而SVM要求z = θTx ≤ -1,此时cost0(z) = 0。可见SVM要比逻辑回归严格,相当于多嵌入了一个额外的安全距离因子,也就是cost的函数斜线部分的截距:

  用一个例子说明安全距离的作用。对于一个有两个特征的线性可分的训练集,下图中的三条直线都能将样本正确分类:

  实际上支持向量机会选择更安全的黑色直线,因为它距离两侧的分类都有足够的距离,也就是说,相对与其他分隔线,如果选取黑色直线,那么分隔线和距离其最近的样本点的距离比其它直线要大:

与逻辑回归的区别

  在逻辑回归中,正例的hθ(x)≥0.5,负例的hθ(x)≤0.5,强调在全部训练实例上达到J(θ)最小化的目标,其分隔平面如下所示:

  逻辑回归强调所有点尽可能地远离分隔平面,更准确地说是所有点的损失函数之和最小,为了达到这个目的,可能会使一部分点十分接近分隔平面从而换取另一部分点更加远离平面。从图中我们可以确定A是×类别,B还算能够确定(比如hθ(x) = 0.65),C是不太确定的(比如hθ(x) = 0.55)。可以说,逻辑回归关心的是全局。

  但是实际应用中,我们更关心靠近分隔平面的模棱两可的点,而不是十分确定的点,SVM的思路正是通过拉近远离分隔平面的点,从而换得原来靠近平面的点能够远离平面。

间隔和支持向量

  在线性可分的情况下,支持向量机的分隔线仅与几个最靠近它的点有关,这些点称为支持向量,下图中H是分隔直线,H1上的1个点和H2上的2个点是支持向量,也称为支撑向量:

  下一篇的内容:支持向量机的模型函数;如何寻找最大间隔

  参考

  Ng视频 《Support Vector Machines》


  作者:我是8位的

  出处:http://www.cnblogs.com/bigmonkey

  本文以学习、研究和分享为主,如需转载,请联系本人,标明作者和出处,非商业用途!

  扫描二维码关注公众号“我是8位的”

  

ML(7)——支持向量机1(构建支持向量机)的更多相关文章

  1. [ML从入门到入门] 支持向量机:从SVM的推导过程到SMO的收敛性讨论

    前言 支持向量机(Support Vector Machine,SVM)在70年代由苏联人 Vladimir Vapnik 提出,主要用于处理二分类问题,也就是研究如何区分两类事物. 本文主要介绍支持 ...

  2. 大数据-10-Spark入门之支持向量机SVM分类器

    简介 支持向量机SVM是一种二分类模型.它的基本模型是定义在特征空间上的间隔最大的线性分类器.支持向量机学习方法包含3种模型:线性可分支持向量机.线性支持向量机及非线性支持向量机.当训练数据线性可分时 ...

  3. [吴恩达机器学习笔记]12支持向量机1从逻辑回归到SVM/SVM的损失函数

    12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.1 SVM损失函数 从逻辑回归到支持向量机 为了描述 ...

  4. 机器学习之支持向量机(Support Vector Machine)

    转载请注明出处:http://www.cnblogs.com/Peyton-Li/ 支持向量机 支持向量机(support vector machines,SVMs)是一种二类分类模型.它的基本模型是 ...

  5. [转] 从零推导支持向量机 (SVM)

    原文连接 - https://zhuanlan.zhihu.com/p/31652569 摘要 支持向量机 (SVM) 是一个非常经典且高效的分类模型.但是,支持向量机中涉及许多复杂的数学推导,并需要 ...

  6. 支持向量机(SVM)之数学公式详细推导

    一.概述 1.含义: 支持向量机(support vector machine,SVM)是一种二类分类器,它的基本模型是定义在特征空间上的间隔最大化的线性分类器,通过引入核函数,也可以作为非线性分类器 ...

  7. 机器学习课程-第7周-支持向量机(Support Vector Machines)

    1. 优化目标 在监督学习中,许多学习算法的性能都非常类似,因此,重要的不是你该选择使用学习算法A还是学习算法B,而更重要的是,应用这些算法时,所创建的大量数据在应用这些算法时,表现情况通常依赖于你的 ...

  8. 4.1、支持向量机(SVM)

    1.二分类问题 在以前的博客中,我们介绍了用于处理二分类问题的Logistic Regression算法和用于处理多分类问题的Softmax Regression算法,典型的二分类问题,如图: 对于上 ...

  9. Halcon学习笔记之支持向量机(二)

    例程:classify_halogen_bulbs.hdev 在Halcon中模式匹配最成熟最常用的方式该署支持向量机了,在本例程中展示了使用支持向量机对卤素灯的质量检测方法.通过这个案例,相信大家可 ...

随机推荐

  1. Java基础-语法定义

    Java三个体系 Java SE(Java Platform,Standard Edition).Java SE 以前称为 J2SE.它允许开发和部署在桌面.服务器.嵌入式环境和实时环境中使用的 Ja ...

  2. ubuntu 搭建ss和使用方法

    一 ubuntu 搭建ssa.安装    sudo apt-get install python-gevent python-pip python-m2crypto    sudo pip insta ...

  3. day 54 jQuery 的初步基础

    jQuery介绍 jQuery是一个轻量级的.兼容多浏览器的JavaScript库. jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方便地进行Ajax交互, ...

  4. Arduino 串口输出LM35温度

    #include "stdlib.h" float temp = 0.0; float maxtemp = 0.0; float mintemp =100.0; // the se ...

  5. springsecurity基于数据库验证用户

    之前的springsecurity程序都是将数据存放在内存中的,通过 <security:user-service> <security:user name="user&q ...

  6. 开发者用的linux系统推荐

    开发者对操作系统的4个需求 俗话说,吃什么补什么.一个开发者(也可以叫“程序员”)需要具备4个特色:办事利索(性能).相貌平平拒绝杀马特(外观).消化能力优秀(易安装).知识技能储备雄厚(软件多),所 ...

  7. getHibernateTemplate().save(t)执行不成功,数据不能插入到数据库

    BaseDaoImpl类中的代码如下 public void save(T t) {System.out.println(666);getHibernateTemplate().save(t);    ...

  8. Spring+Tomcat的JNDI数据源连接池简单配置

    使用Tomcat JNDI数据源与Spring一起使用步骤如下: 1.将数据库驱动复制到Tomcat的lib文件夹下面 2.配置Tomcat的server.xml配置文件,在GlobalNamingR ...

  9. 当BeanUtils遇到泛型

    前言: BeanUtils(spring版/apache版)工具极大方便了java developer, 尤其在写业务代码中, 各种域模型DO, BO, VO等对象之间的复制. 但使用BeanUtil ...

  10. Linux命令学习之路——变更文档拥有者:chown

    使用权限:root用户 使用方式:chown [ -cvfRh ] [ --help ] [ --version ] user[ :group ] file... 作用:该命令用于改变文档的拥有者 注 ...