0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文带你快速读懂支持向量机 SVM 算法

h1654155999.2342 来源:博客园 作者: JerryLead 2021-08-26 15:27 次阅读

简介

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

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

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

重新审视logistic回归

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

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

形式化表示就是

假设函数

aa5ecf14-f846-11eb-9bcf-12bb97331649.png

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

aa77a2dc-f846-11eb-9bcf-12bb97331649.png的图像是

aa93046e-f846-11eb-9bcf-12bb97331649.png

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

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

aabd24d8-f846-11eb-9bcf-12bb97331649.png

当我们要判别一个新来的特征属于哪个类时,只需求aaeb088a-f846-11eb-9bcf-12bb97331649.png,若大于0.5就是y=1的类,反之属于y=0类。

再审视一下aaeb088a-f846-11eb-9bcf-12bb97331649.png,发现aaeb088a-f846-11eb-9bcf-12bb97331649.png只和ab32d732-f846-11eb-9bcf-12bb97331649.png有关,ab32d732-f846-11eb-9bcf-12bb97331649.png>0,那么ab60cbce-f846-11eb-9bcf-12bb97331649.png,g(z)只不过是用来映射,真实的类别决定权还在ab32d732-f846-11eb-9bcf-12bb97331649.png。还有当ab869638-f846-11eb-9bcf-12bb97331649.png时,aaeb088a-f846-11eb-9bcf-12bb97331649.png=1,反之aaeb088a-f846-11eb-9bcf-12bb97331649.png=0。

如果我们只从ab32d732-f846-11eb-9bcf-12bb97331649.png出发,希望模型达到的目标无非就是让训练数据中y=1的特征ab869638-f846-11eb-9bcf-12bb97331649.png,而是y=0的特征abd0d748-f846-11eb-9bcf-12bb97331649.png

Logistic回归就是要学习得到abef8eea-f846-11eb-9bcf-12bb97331649.png,使得正例的特征远大于0,负例的特征远小于0,强调在全部训练实例上达到这个目标。

图形化表示如下:

ac0c8c5c-f846-11eb-9bcf-12bb97331649.png

中间那条线是ac2780c0-f846-11eb-9bcf-12bb97331649.png,logistic回顾强调所有点尽可能地远离中间那条线。学习出的结果也就中间那条线。

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

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

形式化表示

我们这次使用的结果标签是y=-1,y=1,替换在logistic回归中使用的y=0和y=1。同时将abef8eea-f846-11eb-9bcf-12bb97331649.png替换成w和b。

以前的ac5a1a08-f846-11eb-9bcf-12bb97331649.png,其中认为ac8034f4-f846-11eb-9bcf-12bb97331649.png。现在我们替换aca11cfa-f846-11eb-9bcf-12bb97331649.png为b,后面替换acbfbaf2-f846-11eb-9bcf-12bb97331649.pngacdc3b1e-f846-11eb-9bcf-12bb97331649.png(即ad0adbea-f846-11eb-9bcf-12bb97331649.png)。这样,我们让ad2249ce-f846-11eb-9bcf-12bb97331649.png,进一步ad4341e2-f846-11eb-9bcf-12bb97331649.png

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

ad715730-f846-11eb-9bcf-12bb97331649.png

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

ad98c93c-f846-11eb-9bcf-12bb97331649.png

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

给定一个训练样本adb55e08-f846-11eb-9bcf-12bb97331649.png,x是特征,y是结果标签。i表示第i个样本。我们定义函数间隔如下:

addd8388-f846-11eb-9bcf-12bb97331649.png

可想而知,当ae151190-f846-11eb-9bcf-12bb97331649.png时,在我们的g(z)定义中,ae30ac84-f846-11eb-9bcf-12bb97331649.pngae4fc01a-f846-11eb-9bcf-12bb97331649.png的值实际上就是ae6752b6-f846-11eb-9bcf-12bb97331649.png。反之亦然。

为了使函数间隔最大(更大的信心确定该例是正例还是反例),当ae151190-f846-11eb-9bcf-12bb97331649.png时,ae8e9f6a-f846-11eb-9bcf-12bb97331649.png应该是个大正数,反之是个大负数。因此函数间隔代表了我们认为特征是正例还是反例的确信度。

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

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

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

aee7afba-f846-11eb-9bcf-12bb97331649.png

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

接下来定义几何间隔

假设我们有了B点所在的aec9ada8-f846-11eb-9bcf-12bb97331649.png分割面。任何其他一点,比如A到该面的距离以af54e79c-f846-11eb-9bcf-12bb97331649.png表示,假设B就是A在分割面上的投影。

我们知道向量BA的方向是af7d4476-f846-11eb-9bcf-12bb97331649.png(分割面的梯度),单位向量是afb3cdac-f846-11eb-9bcf-12bb97331649.png。A点是adb55e08-f846-11eb-9bcf-12bb97331649.png,所以B点是x=afdf28bc-f846-11eb-9bcf-12bb97331649.png(利用初中的几何知识),带入aec9ada8-f846-11eb-9bcf-12bb97331649.png得,

进一步得到

b02d5640-f846-11eb-9bcf-12bb97331649.png

af54e79c-f846-11eb-9bcf-12bb97331649.png实际上就是点到平面距离。

再换种更加优雅的写法:

b057aa76-f846-11eb-9bcf-12bb97331649.png

b075fd32-f846-11eb-9bcf-12bb97331649.png时,不就是函数间隔吗?是的,前面提到的函数间隔归一化结果就是几何间隔。

他们为什么会一样呢?因为函数间隔是我们定义的,在定义的时候就有几何间隔的色彩。同样,同时扩大w和b,w扩大几倍,b09437e8-f846-11eb-9bcf-12bb97331649.png就扩大几倍,结果无影响。同样定义全局的几何间隔b0b3917e-f846-11eb-9bcf-12bb97331649.png

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

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

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

b0ce205c-f846-11eb-9bcf-12bb97331649.png

这里用b09437e8-f846-11eb-9bcf-12bb97331649.png=1规约w,使得b0f630a6-f846-11eb-9bcf-12bb97331649.png是几何间隔。

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

由于b112b91a-f846-11eb-9bcf-12bb97331649.png不是凸函数,我们想先处理转化一下,考虑几何间隔和函数间隔的关系,b12f9620-f846-11eb-9bcf-12bb97331649.png,我们改写一下上面的式子:

b149fb8c-f846-11eb-9bcf-12bb97331649.png

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

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

这里为了简便我们取b1d495d0-f846-11eb-9bcf-12bb97331649.png。这样的意义是将全局的函数间隔定义为1,也即是将离超平面最近的点的距离定义为b1ed6cc2-f846-11eb-9bcf-12bb97331649.png。由于求b1ed6cc2-f846-11eb-9bcf-12bb97331649.png的最大值相当于求b21a0b6a-f846-11eb-9bcf-12bb97331649.png的最小值,因此改写后结果为:

b23844cc-f846-11eb-9bcf-12bb97331649.png

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

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

—版权声明—

仅用于学术分享,版权属于原作者。

若有侵权,请联系 删除或修改!

转自:JerryLead

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

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4610

    浏览量

    92860
  • 向量机
    +关注

    关注

    0

    文章

    166

    浏览量

    20875
  • SVM
    SVM
    +关注

    关注

    0

    文章

    154

    浏览量

    32454

原文标题:优雅的读懂支持向量机 SVM 算法

文章出处:【微信号:gh_f39db674fbfd,微信公众号:尖刀视】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    读懂单灯控制器工作原理

    读懂单灯控制器工作原理
    的头像 发表于 11-11 13:13 222次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>读懂</b>单灯控制器工作原理

    智慧公交是什么?带你详解智慧公交的解决方案!

    智慧公交是什么?带你详解智慧公交的解决方案!
    的头像 发表于 11-05 12:26 282次阅读
    智慧公交是什么?<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b>详解智慧公交的解决方案!

    读懂MSA(测量系统分析)

    读懂MSA(测量系统分析)
    的头像 发表于 11-01 11:08 895次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>读懂</b>MSA(测量系统分析)

    读懂新能源汽车的功能安全

    电子发烧友网站提供《读懂新能源汽车的功能安全.pdf》资料免费下载
    发表于 09-04 09:22 3次下载

    读懂什么单片:组成结构与应用

    欢迎来到单片的世界,这是种微小(但功能强大)的设备,改变了嵌入式系统的面貌。在本文中,您将了解单片些基本知识、单片的结构以及微处
    的头像 发表于 08-09 11:49 1685次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>读懂</b>什么单片<b class='flag-5'>机</b>:组成结构与应用

    计算机视觉威廉希尔官方网站 的AI算法模型

    威廉希尔官方网站 AI算法模型,包括卷积神经网络(CNN)、循环神经网络(RNN)、支持向量SVM)、卡尔曼滤波器(Kalman Filter)和随机
    的头像 发表于 07-24 12:46 824次阅读

    机器学习算法原理详解

    机器学习作为人工智能的个重要分支,其目标是通过让计算机自动从数据中学习并改进其性能,而无需进行明确的编程。本文将深入解读几种常见的机器学习算法原理,包括线性回归、逻辑回归、支持向量
    的头像 发表于 07-02 11:25 1019次阅读

    带你读懂什么是工控

    简单来说,工控是专为工业用途而设计的计算机。这意味着它可以在各种温度范围内提供工业自动化,具有增强的耐用性,并且通常包括专为工业应用设计的功能,例如过程控制和数据采集。体化设计用于轻松集成到更大
    的头像 发表于 06-03 17:00 485次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b><b class='flag-5'>读懂</b>什么是工控<b class='flag-5'>机</b>

    如何利用些小技巧实现SVM的增量式训练

    同时根据测试精度,可以看出,通过添加第次训练多得到的支持向量,而非将全体数据进行二次训练,能够达到同样的效果。
    发表于 04-25 11:05 907次阅读
    如何利用<b class='flag-5'>一</b>些小技巧实现<b class='flag-5'>SVM</b>的增量式训练

    电主轴:教您如何读懂?|深圳恒兴隆机电.

    电主轴:教您如何读懂?|深圳恒兴隆机电电主轴是种利用电机作为驱动源的主轴。它具有高速、高精度和高刚性等特点,广泛应用于机械加工、数控机床、机器人等领域。本文将详细介绍电主轴的原理
    发表于 03-27 10:30

    扩展包x-cube-ai能实现SVM支持向量吗?

    扩展包x-cube-ai能实现SVM支持向量
    发表于 03-22 07:26

    瑞萨电子宣布已开发具有快速读写操作的测试芯片MRAM

    瑞萨电子公司日前宣布,该公司已开发出用于嵌入式自旋转移矩磁阻随机存取存储器(STT-MRAM)的电路威廉希尔官方网站 ,以下简称MRAM)具有快速读写操作的测试芯片。
    的头像 发表于 02-25 10:53 888次阅读

    读懂宽带、带宽、网速之间的区别与关系

    读懂宽带、带宽、网速之间的区别与关系  宽带、带宽和网速是在网络领域中经常使用的术语,它们之间有定的区别和关系。在深入理解宽带、带宽和网速之间的关系之前,让我们先了解
    的头像 发表于 01-31 09:11 7089次阅读

    SVM的使用方法

    篇本着回归传统的观点,在这个深度学习繁荣发展的时期,带着大家认识了位新朋友,英文名SVM,中文名为支持向量
    的头像 发表于 01-25 09:23 1617次阅读
    <b class='flag-5'>SVM</b>的使用方法

    支持向量的基本原理 支持向量可以解决什么问题

    支持向量(Support Vector Machine,简称SVM)是种非常流行和强大的机器学习算法
    的头像 发表于 01-17 11:17 1649次阅读