ML(7)——支持向量机1(构建支持向量机)
支持向量机缩写是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(构建支持向量机)的更多相关文章
- [ML从入门到入门] 支持向量机:从SVM的推导过程到SMO的收敛性讨论
前言 支持向量机(Support Vector Machine,SVM)在70年代由苏联人 Vladimir Vapnik 提出,主要用于处理二分类问题,也就是研究如何区分两类事物. 本文主要介绍支持 ...
- 大数据-10-Spark入门之支持向量机SVM分类器
简介 支持向量机SVM是一种二分类模型.它的基本模型是定义在特征空间上的间隔最大的线性分类器.支持向量机学习方法包含3种模型:线性可分支持向量机.线性支持向量机及非线性支持向量机.当训练数据线性可分时 ...
- [吴恩达机器学习笔记]12支持向量机1从逻辑回归到SVM/SVM的损失函数
12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.1 SVM损失函数 从逻辑回归到支持向量机 为了描述 ...
- 机器学习之支持向量机(Support Vector Machine)
转载请注明出处:http://www.cnblogs.com/Peyton-Li/ 支持向量机 支持向量机(support vector machines,SVMs)是一种二类分类模型.它的基本模型是 ...
- [转] 从零推导支持向量机 (SVM)
原文连接 - https://zhuanlan.zhihu.com/p/31652569 摘要 支持向量机 (SVM) 是一个非常经典且高效的分类模型.但是,支持向量机中涉及许多复杂的数学推导,并需要 ...
- 支持向量机(SVM)之数学公式详细推导
一.概述 1.含义: 支持向量机(support vector machine,SVM)是一种二类分类器,它的基本模型是定义在特征空间上的间隔最大化的线性分类器,通过引入核函数,也可以作为非线性分类器 ...
- 机器学习课程-第7周-支持向量机(Support Vector Machines)
1. 优化目标 在监督学习中,许多学习算法的性能都非常类似,因此,重要的不是你该选择使用学习算法A还是学习算法B,而更重要的是,应用这些算法时,所创建的大量数据在应用这些算法时,表现情况通常依赖于你的 ...
- 4.1、支持向量机(SVM)
1.二分类问题 在以前的博客中,我们介绍了用于处理二分类问题的Logistic Regression算法和用于处理多分类问题的Softmax Regression算法,典型的二分类问题,如图: 对于上 ...
- Halcon学习笔记之支持向量机(二)
例程:classify_halogen_bulbs.hdev 在Halcon中模式匹配最成熟最常用的方式该署支持向量机了,在本例程中展示了使用支持向量机对卤素灯的质量检测方法.通过这个案例,相信大家可 ...
随机推荐
- AngularJS输出helloworld
AngularJS是什么? AngularJS是目前很火的前端JS框架之一, AngularJS的开发团队将其描述为一种构建动态Web应用的结构化框架.它是完全使用JavaScript编写的客户端技术 ...
- 手打struts知识点
Struts2概论 1.MVC原理 MVC(Model-View-Controller),程序设计理念 视图不用多说,html.jsp等 控制器,中转站,分配各个组件应当做什么,接受参数并跳转其他处理 ...
- <Flume><Source Code><Flume源码阅读笔记>
Overview source采集的日志首先会传入ChannelProcessor, 在其内首先会通过Interceptors进行过滤加工,然后通过ChannelSelector选择channel. ...
- python day14--内置函数二
主要内容: 1.lamda匿名函数 2.sorted() 3.filter() 4.map() 5.递归函数 一.Lamda匿名函数 语法:lamda:参数:返回值 # 计算n的n次⽅方 def fu ...
- js实现瀑布流以及加载效果
一.瀑布流是个啥? 瀑布流,是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部. 最早采用瀑布流布局的网站是Pinteres ...
- Tail Recusive
1.尾递归 double f(double guess){ if (isGoodEnough(guess)) return guess; else return f(improve(guess)); ...
- 剑指offer-面试题1:赋值运算符函数
如下为类型CMyString的声明,请为该类型添加赋值运算符函数. 解析:给一个类进行运算符重载. 关键部分代码: CMyString& CMyString::operator =(const ...
- [LeetCode&Python] Problem 717. 1-bit and 2-bit Characters
We have two special characters. The first character can be represented by one bit 0. The second char ...
- [LeetCode&Python] Problem 606. Construct String from Binary Tree
You need to construct a string consists of parenthesis and integers from a binary tree with the preo ...
- HDU - 5201 :The Monkey King (组合数 & 容斥)
As everyone known, The Monkey King is Son Goku. He and his offspring live in Mountain of Flowers and ...