优雅的读懂支持向量机 SVM 算法


转自:JerryLead

http://www.cnblogs.com/jerrylead/archive/2011/03/13/1982639.html


简介


支持向量机基本上是最好的有监督学习算法了。最开始接触SVM是去年暑假的时候,老师要求交《统计学习理论》的报告,那时去网上下了一份入门教程,里面讲的很通俗,当时只是大致了解了一些相关概念。


这次斯坦福提供的学习材料,让我重新学习了一些SVM知识。我看很多正统的讲法都是从VC 维理论和结构风险最小原理出发,然后引出SVM什么的,还有些资料上来就讲分类超平面什么的。


这份材料从前几节讲的logistic回归出发,引出了SVM,既揭示了模型间的联系,也让人觉得过渡更自然


重新审视logistic回归


Logistic回归目的是从特征学习出一个0/1分类模型,而这个模型是将特性的线性组合作为自变量,由于自变量的取值范围是负无穷到正无穷。


因此,使用logistic函数(或称作sigmoid函数)将自变量映射到(0,1)上,映射后的值被认为是属于y=1的概率。

形式化表示就是


假设函数



其中x是n维特征向量,函数g就是logistic函数。

的图像是



可以看到,将无穷映射到了(0,1)。


而假设函数就是特征属于y=1的概率。



当我们要判别一个新来的特征属于哪个类时,只需求,若大于0.5就是y=1的类,反之属于y=0类。


再审视一下,发现只和有关,>0,那么,g(z)只不过是用来映射,真实的类别决定权还在。还有当时,=1,反之=0。

如果我们只从出发,希望模型达到的目标无非就是让训练数据中y=1的特征,而是y=0的特征

Logistic回归就是要学习得到,使得正例的特征远大于0,负例的特征远小于0,强调在全部训练实例上达到这个目标。


图形化表示如下:



中间那条线是,logistic回顾强调所有点尽可能地远离中间那条线。学习出的结果也就中间那条线。


考虑上面3个点A、B和C。从图中我们可以确定A是×类别的,然而C我们是不太确定的,B还算能够确定。这样我们可以得出结论,我们更应该关心靠近中间分割线的点,让他们尽可能地远离中间线,而不是在所有点上达到最优。


因为那样的话,要使得一部分点靠近中间线来换取另外一部分点更加远离中间线。我想这就是支持向量机的思路和logistic回归的不同点,一个考虑局部(不关心已经确定远离的点),一个考虑全局(已经远离的点可能通过调整中间线使其能够更加远离)。这是我的个人直观理解。


形式化表示


我们这次使用的结果标签是y=-1,y=1,替换在logistic回归中使用的y=0和y=1。同时将替换成w和b。


以前的,其中认为。现在我们替换为b,后面替换(即)。这样,我们让,进一步


也就是说除了y由y=0变为y=-1,只是标记不同外,与logistic回归的形式化表示没区别。再明确下假设函数



上一节提到过我们只需考虑的正负问题,而不用关心g(z),因此我们这里将g(z)做一个简化,将其简单映射到y=-1和y=1上。映射关系如下:



函数间隔(functional margin)和几何间隔(geometric margin)


给定一个训练样本,x是特征,y是结果标签。i表示第i个样本。我们定义函数间隔如下:



可想而知,当时,在我们的g(z)定义中,的值实际上就是。反之亦然。


为了使函数间隔最大(更大的信心确定该例是正例还是反例),当时,应该是个大正数,反之是个大负数。因此函数间隔代表了我们认为特征是正例还是反例的确信度。


继续考虑w和b,如果同时加大w和b,比如在前面乘个系数比如2,那么所有点的函数间隔都会增大二倍,这个对求解问题来说不应该有影响,因为我们要求解的是,同时扩大w和b对结果是无影响的。


这样,我们为了限制w和b,可能需要加入归一化条件,毕竟求解的目标是确定唯一一个w和b,而不是多组线性相关的向量。这个归一化一会再考虑。


刚刚我们定义的函数间隔是针对某一个样本的,现在我们定义全局样本上的函数间隔



说白了就是在训练样本上分类正例和负例确信度最小那个函数间隔。

接下来定义几何间隔,先看图



假设我们有了B点所在的分割面。任何其他一点,比如A到该面的距离以表示,假设B就是A在分割面上的投影。


我们知道向量BA的方向是(分割面的梯度),单位向量是。A点是,所以B点是x=(利用初中的几何知识),带入得,



进一步得到



实际上就是点到平面距离。

再换种更加优雅的写法:



时,不就是函数间隔吗?是的,前面提到的函数间隔归一化结果就是几何间隔。


他们为什么会一样呢?因为函数间隔是我们定义的,在定义的时候就有几何间隔的色彩。同样,同时扩大w和b,w扩大几倍,就扩大几倍,结果无影响。同样定义全局的几何间隔


最优间隔分类器(optimal margin classifier)


回想前面我们提到我们的目标是寻找一个超平面,使得离超平面比较近的点能有更大的间距。也就是我们不考虑所有的点都必须远离超平面,我们关心求得的超平面能够让所有点中离它最近的点具有最大间距。


形象的说,我们将上面的图看作是一张纸,我们要找一条折线,按照这条折线折叠后,离折线最近的点的间距比其他折线都要大。形式化表示为:



这里用=1规约w,使得是几何间隔。


到此,我们已经将模型定义出来了。如果求得了w和b,那么来一个特征x,我们就能够分类了,称为最优间隔分类器。接下的问题就是如何求解w和b的问题了。


由于不是凸函数,我们想先处理转化一下,考虑几何间隔和函数间隔的关系,,我们改写一下上面的式子:



这时候其实我们求的最大值仍然是几何间隔,只不过此时的w不受的约束了。然而这个时候目标函数仍然不是凸函数,没法直接代入优化软件里计算。我们还要改写。


前面说到同时扩大w和b对结果没有影响,但我们最后要求的仍然是w和b的确定值,不是他们的一组倍数值,因此,我们需要对做一些限制,以保证我们解是唯一的。


这里为了简便我们取。这样的意义是将全局的函数间隔定义为1,也即是将离超平面最近的点的距离定义为。由于求的最大值相当于求的最小值,因此改写后结果为:



这下好了,只有线性约束了,而且是个典型的二次规划问题(目标函数是自变量的二次函数)。代入优化软件可解。


到这里发现,这个讲义虽然没有像其他讲义一样先画好图,画好分类超平面,在图上标示出间隔那么直观,但每一步推导有理有据,依靠思路的流畅性来推导出目标函数和约束。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Newbe.Claptrap 0.9.4 发布,全新构建

Newbe.Claptrap 0.9.4 发布,全新构建,全新内容,全新体验。简介 此次的版本更新虽然只是一个副版本更新。但实际上我们带来了非常多全新的内容。全方位将本框架带入到一个新的次代。我们希望我们的努力可以为在业务中需要 Actor 模式的开发者带…

【知识贴】战争中的数学应用

一、方程在海湾战争中的应用

Android Donut SDK 1.6r1 今日发布

Google今天公布了新版Android SDK,也就是Donut的最新1.6版,它可以帮助智能手机应用程序开发商迅速将自己的应用转换到Android系统上. SDK的发布有助于Google为自己寻找到更多的合作伙伴,为自己的Android Market添加人气,目前Donut已经可以下载. 下载:Android 1.6 SDK

开始CSRebot

写代码很久了了,时不时想把这些年学到的,用到的,或自己感悟到的,汇总一下,形成一个东西,或资料,或工具。但每当开始时就一片空白,总是觉得这些大家都会,这些只是自己片面…

toast弹窗_Android 开发(一):Toast弹窗与获取控件的值

前言:本人也是刚接触Android开发,自己也在摸索中,在实现功能的过程中走了不少弯路,其中很重要的原因之一就是查询不到想要的内容,所以想把自己的经验分享出来。首先是Toast的应用,直接上关键代码。Toast to…

魔性十足的数学动态图,这种东西都拿出来分享?

小编最近发现了一组超美的与数学有关的动态图,而且看久了简直就有魔性,实在是按耐不住激动的心情,秉持着好图齐分享的原则,在这里和大家一起分享一波~>>>>来源:蒋迅的博客

Command模式

作用: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作. UML结构图: 解析: Comnand模式的思想是把命令封装在一个类中,就是这里的Command基类,同时把接收对象也封装在一个类中就是这里的Receiver 类中,由调用…

Dapr微服务应用开发系列4:状态管理构件块

Dapr微服务应用开发系列0:概述Dapr微服务应用开发系列1:环境配置Dapr微服务应用开发系列2:Hello World与SDK初接触Dapr微服务应用开发系列3:服务调用构件块题记:这篇介绍状态管理构件块,这个概念相对于微服…

开线程插数据_python笔记7-多线程之线程同步(锁lock)

前言丨关于吃火锅的场景,小伙伴并不陌生,前面几章笔记里面我都有提到,今天我们吃火锅的场景:吃火锅的时候a同学往锅里下鱼丸,b同学同时去吃掉鱼丸,有可能会导致吃到生的鱼丸。为了避免这种情况,…

一文读懂欧拉函数

欧拉函数φ(N)表示小于或等于N的正整数中与N互质的数的个数。又称φ函数、欧拉商数。下面介绍欧拉函数的几个性质:我们根据这几个性质就可以求出欧拉函数。基本思路是首先置φ(N)N,然后再枚举素数p,将p的整数倍的欧拉函数φ(kp)进行如下操作。…

windows 7在工作组模式下管理 Hyper-V

之前在工作组模式下win7来管理server core 下的hyper-v一直不成功,server core下的相应的防火墙端口也已开放但hyper管理器就是无法和hyper-v主机通讯在2008R2下没有问题,现把解决的过程记录下来,以备后查。1、下载Windows 7 远程服务器管理工…

打工就是 “演戏”,你可以认真,但别太当真

这是头哥侃码的第235篇原创时间飞逝,2021年的春节假期已经结束了。在我的记忆中,以前每逢春节的时候,身边的亲戚和朋友们都会非常忙碌,什么聚个餐,串个门呀,什么拜个年,打个牌啦……但从去年开始…

2018年的第一个工作日,推荐几个优质公众号

2017刚过去不久,我们迎来了2018。工作、生活节奏超快的今天,想要不断提升自我,碎片化阅读学习是你最佳的选择,如果你有一颗学习的心,那这些学习型的公众号,绝对会让你受益匪浅。小编为你精选了技术领域几个…

redis session java获取attribute_redis里的数据结构

Redis作为当前使用非常广泛的内存数据库,在代码层面做了很多极致的优化,已获取更好的性能。其中重要的一部分,就是对于底层数据结构的使用。Redis会根据数据量、数据大小等来优化对于不同结构的使用,从而获得更佳的运行效率和内存…

.NET 云原生架构师训练营(模块二 基础巩固 安全)--学习笔记

2.8 安全认证 VS 授权ASP .NET Core 认证授权中间件认证JWT 认证授权认证 VS 授权认证是一个识别用户是谁的过程授权是一个决定用户可以干什么的过程401 Unauthorized 未授权403 Forbidden 禁止访问ASP .NET Core 认证授权中间件在接收到请求之后,认证(A…

java超长字符序列化_String 字符串最长可以有多长?

Java技术栈www.javastack.cn打开网站看更多文章String 类可以说是在 Java 中使用最频繁的类了,就算是刚刚接触 Java 的初学者也不会陌生,因为对于 Java 程序来说,main 方法就是使用一个 String 类型数组来作为参数的(String[] args)。对于这样…

一文读懂 AVL 树

背景AVL 树是一棵平衡的二叉查找树,于 1962 年,G. M. Adelson-Velsky 和 E. M. Landis 在他们的论文《An algorithm for the organization of information》中发表。所谓的平衡之意,就是树中任意一个结点下左右两个子树的高度差不超过 1。&am…

欧几里得范数_从范数到正则化

范数是一个在数学领域中常用的工具,同时也是学习机器学习原理中经常碰到的概念。本文将从范数的定义出发,逐步带你理解其在机器学习中的应用。首先需要明确的是,范数是一个函数,在机器学习中我们通常用它来衡量向量的大小。 范数定…

IdentityServer4之持久化很顺手的事

前言原计划打算在春节期间多分享几篇技术文章的,但到最后一篇也没出,偷懒了吗?算是吧,过程是这样的:每次拿出电脑,在孩姥姥家的院子总有阳光沐浴,看不清屏幕,回屋又有点冷(在强行找理…

手写体识别代码_Python识别图片中的文字

一、前言不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制。或者像百度文档一样,只能复制一部分,这个时候我们就会选择截图保存。但是当我们想用到里面的文字时&a…