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

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

3天内不再提示

图解支持向量机SVM

新机器视觉 来源:新机器视觉 作者:Rohit Pandey 2020-12-26 11:46 次阅读

作者说:我以前一直没有真正理解支持向量机,直到我画了一张图。

1. 问题

支持向量机(SVM)旨在解决「分类」问题。数据通常包含一定数量的条目/行/点。现在,我们想对每个数据点进行分类。为简单起见,我们假设两个类别:「正类」和「负类」。这或许可以帮助解答以下问题:

基于图像的像素数据,判断这张图像中是否有猫(有猫则标签为正类);

基于邮件的主题、发送者、文本等,判断该邮件是否为垃圾邮件;

判断某个病人是否患有某种疾病。

其精髓在于,当我们知道正确答案时,我们会想到一些将数据分为两类的规则(对于支持向量机而言,「规则」是画一个平面,一侧的所有点均为「正」,另一侧的所有点均为「负」)。当我们遇到不知道类别的新数据点时,我们使用规则对其进行分类。分类问题严重依赖约束优化,同时也是约束优化的一个直观示例。大家可以参考以下博客或吴恩达的文章。

博客地址:https://towardsdatascience.com/lagrange-multipliers-with-pictures-and-code-ace8018dac5e

吴恩达文章地址:http://cs229.stanford.edu/notes/cs229-notes3.pdf

1.1 图解

我以前一直没有真正理解支持向量机,直到我画了一张图。

我们可以看到特征空间中有一些点。为方便可视化,我们使用一个可在屏幕上观看的 2D 特征空间。该空间中散落着一些数据点,每个点具备二元标签((1/-1)。如下图所示,我们将绿色点看作正类,红色点看作负类,黄色点类别未知。如果让你猜测黄色点的标签,你会怎么选?你可能会发现其中一些点并不是那么容易确认类别。

图 1:2-D 分类问题。绿色点是正类,红色点是负类。你可以猜出黄色点的标签吗?(绘图工具:https://github.com/ryu577/pyray)

现在,如果我画一条紫色线将两个类别分割开,那么黄色点属于哪个类别就清晰多了(紫色线上方是绿色点,下方是红色点)。

图 2:画一条线,作为将正类标签和负类标签分割开来的「规则」。现在,我们可以使用该规则标注每个黄色点的类别。

然而,这条线并非唯一。有很多条紫色线可以将绿色点和红色点完美分割(见下图)。随着下图中紫色线的移动,某些黄色点就显得很微妙了(它们处于紫色线的不同侧,因此它们的类别取决于你选择使用哪条紫色线)。

图 3:将红色点和绿色点完美分割的线有很多条。那么我们应该选择哪一条呢?

问题在于,所有候选线中,哪一条是「最优」的?有一点很清楚:当上图中的紫色线接近右下角的红色点(critical point)时,其泛化效果不好,而当它远离那个点时,其分割效果要好得多。因此,这个红色点可以说明紫色线的分类效果,因此它是「关键点」。我们可以说,远离该红色点的线同样远离所有训练样本,而靠近该红色点的线最终的分类效果并不好。因此,离最近的训练样本较远的线才是优秀的分类器。

接下来,我们来看如何利用数学知识绘制分割线。

2. 绘制分割线

现在我们要(在 2D 空间中)画一条分割线(在更高维度的空间中,则为分割面)。那么这条线是什么呢?它是具备某种共性的点的无限集合。这些点满足一个特定公式。为了找到这个公式,我们先从最简单的线 x 轴开始。x 轴上所有点的位置向量存在什么共性?v_x = [x,0],即它们对应的 y 坐标均为 0。

也就是说,x 轴上每个点的位置向量与指向 y 轴方向的向量是正交(垂直)的。

这个说法可能看起来比较晦涩难懂,但是我们必须这么说,因为这种现象其实对所有线都成立,而并非只适用于 x 轴。我们希望将此说法泛化至任意线。现在每次挪动一小步,我们来看看穿过原点的线(如 x 轴)。如下图所示,只需将 x 轴旋转一定角度,就可以得到这些线。

图 4:旋转 x 轴可以得到穿过原点的任意线。这些线上的每个点都与橙色向量相垂直。

随着线的变化,与线相垂直的向量也在变化,但是所有线上每个点的位置向量都与某个向量垂直。我们把这个与线垂直的向量叫做 w。当我们改变 w 时,就可以捕捉到所有此类线。

注意,对于任意给定线而言,存在多个 w 值。如果我们将向量 w 扩展或缩小一定数值,该线上每个点的位置向量仍与向量 w 垂直。

图 5:扩大或缩小正交 w 向量。

为什么不把 w 向量限制在大小为 1 呢?下文中,我们将 w 向量的大小设为 1。

现在我们已经将穿过原点的所有线都参数化了。那么那些没有穿过原点的线呢?我们将穿过原点的线移动一定量,即在该线法向量 w 的方向上移动 b。现在,w 与该线上每个点的位置向量的点积不为零,而是常量 b(参见下图)。w 向量是从原点指向紫色线的单位向量,且与紫色线垂直。A 即紫色线上与原点最接近的点。假设 OA 的距离是 -b。现在,考虑两个随机点 B 和 C(分别是图中绿色点和橙色点)。将 OB 或 OC 与单位向量 w 相乘,分别得到三角形 OAB 和 OAC 的底。 在这两种情况中,OA 为 -b。由于这两个点只是紫色线上的任意点,我们可以推断出,紫色线上的所有点均满足 w^T x+b=0(其中 x 表示紫色线上点的位置向量)。

图 6:未穿过原点的线。

如果我们将不在该线上的点应用于上述公式呢?得到的结果不是零,而是从该点到紫色线的垂直距离(对于紫色线上的点而言也是如此,所以它们所对应的公式结果为零)。我们需要注意:这个结论仅适用于 |w|=1 的情况。下图清晰说明了这一结果。B 为不属于紫色线的任意点,B』』 为从 B 到紫色线的垂点,B』 为从 B 到 w 向量的垂点。从 B 到紫色线的垂直距离为 BB』』。但是由于 A-B』-B-B』』 是一个矩形,因此该垂直距离等于 AB』=OB』-OA。现在,OB』 是 B 的位置向量与 w 的点积。因此,如果 x 是 B 的位置向量,则 |OB』| = w^T x。这意味着 |AB』|=w^T x-(-b)(OA=-b)。因此从点 B 到紫色线的距离是:|AB』|=w^T x+b(该公式恰好是紫色线的公式)。

图 7:将不在紫色线上的点应用于紫色线公式会发生什么?我们得到该点与紫色线之间的垂直距离。

注意,在 w 指向方向一侧的所有点(如图 7 中的点 B)到紫色线的垂直距离为正值,而另一侧点的垂直距离为负值。

在 w 指向方向一侧的所有点均得到正类标签 (t_i=1),而另一侧的所有点均得到负类标签 (t_i=-1)。因此,如果我们将这些标签与垂直距离相乘,则所有点调整后的垂直距离均为正,前提是这些点均被紫色线正确分类(即具备正类标签的点在线一侧,具备负类标签的点在另一侧)。

3. 最佳分割线

现在到了 SVM 的重点了。我们将任意点到分割线的调整后垂直距离叫做「间距」(margin)。那么,对于任意给定分割线,所有点均具备间距(如果点被分割线正确分类,则间距为正,反之则间距为负)。我们想获取将正类和负类完美分割的线。也就是说,间距越大越好,即使是对于邻近界限(分割平面)的点。

那么,最大化所有间距(甚至是最接近分割线的点的间距)的分割平面应该能够很好地分割这些点。现在,给出 (w,b),第 i 个点的间距为:

04fc60f4-4699-11eb-8b86-12bb97331649.png

间距公式。

其中 x_i 表示特征空间中的位置向量,t_i 表示标签:1 为正类,-1 为负类。

所有点中的最小间距为:

0530d06e-4699-11eb-8b86-12bb97331649.png

公式 1:所有点中的最小间距。

我们想让 (w,b) 最大化上述最小间距。也就是:

05c2e8fa-4699-11eb-8b86-12bb97331649.png

即我们想让 (w,b) 满足 |w|=1,且最大化间距:

05f25cb6-4699-11eb-8b86-12bb97331649.png

公式 2:SVM 目标函数。

注意:如果这条线没有分离数据,那么对于 (w,b),某些点的间距

04fc60f4-4699-11eb-8b86-12bb97331649.png

间距公式。

为负。且这些点中的其中一个会在第一次最小化中「脱颖而出」,这意味着 (w,b) 无法在第二次 arg max 时胜出。因此,该公式保证了胜出的 (w,b) 能够分割数据。

公式 2 是一个优化问题,涉及最小化和最大化(mini-max)。解决一级优化总比二级优化要简单。因此,我们尝试将公式 2 转化为约束优化问题。

我们用 γ 表示所有点的最小间距。

066b0972-4699-11eb-8b86-12bb97331649.png

公式 3:约束。

最终得到的优化问题为:

06a9c536-4699-11eb-8b86-12bb97331649.png

公式 4:SVM 优化问题。

上述优化问题具备二次/线性约束和线性目标函数。我们可以使用二次规划求解器(quadratic programming solver)和最优分割线/平面 (w,b) 解决该问题。

现在,我们来试着进一步简化该问题。我们发现可以去除 γ。其代价是,我们必须放弃 w^T w = 1 这一要求。但这是值得的。我们使用 γ 将约束分割为两部分,得到:

06d4d79e-4699-11eb-8b86-12bb97331649.png

公式 5:使用 γ 分割分割平面公式。

现在,使

070546d6-4699-11eb-8b86-12bb97331649.png

引入新的 w 变量。

为两侧取绝对值:

07245198-4699-11eb-8b86-12bb97331649.png

取绝对值。

我们之前要求 |w|=1。这意味着:

0750e67c-4699-11eb-8b86-12bb97331649.png

因此,公式 3 变成了:

078c7246-4699-11eb-8b86-12bb97331649.png

公式 5 和公式 6 使公式 4 中的优化问题变成了:

07d1f38e-4699-11eb-8b86-12bb97331649.png

现在,优化问题有了一个丑陋的目标函数。但是最大化 1/|w| 等同于最小化 |w|,等同于最小化 |w|²。添加 1/2 使得计算更加简单。

因此,上述优化问题变为:

080ebda0-4699-11eb-8b86-12bb97331649.png

公式 7

现在,该优化问题具备二次目标函数和线性约束(线性约束二次规划,LCQP)。使用二次规划求解器即可解决该问题。

现在,我们知道如何通过解决优化问题找出最优分割线了。透过表面查看解决这类优化问题的真正机制,会帮助我们对该问题了解更多,具备更强大的洞察和见解。

责任编辑:xj

原文标题:透过现象看本质,图解支持向量机 SVM

文章出处:【微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

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

    关注

    0

    文章

    164

    浏览量

    20707
  • SVM
    SVM
    +关注

    关注

    0

    文章

    152

    浏览量

    32129

原文标题:透过现象看本质,图解支持向量机 SVM

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

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

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

    SVM的使用方法

    上一篇本着回归传统的观点,在这个深度学习繁荣发展的时期,带着大家认识了一位新朋友,英文名SVM,中文名为支持向量机,是一种基于传统方案的机器学习方案,同样的,支持根据输入的数据进行训练
    的头像 发表于 01-25 09:23 1007次阅读
    <b class='flag-5'>SVM</b>的使用方法

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

    支持向量机(Support Vector Machine,简称SVM)是一种非常流行和强大的机器学习算法,常用于分类和回归问题。它的基本原理源自于统计学和线性代数的理论基础,通过找到能够在特征空间
    的头像 发表于 01-17 11:17 362次阅读

    cifar10数据集介绍 knn和svm的图像分类系统案例

      摘要:本文使用CIFAR-10数据集设计实现了基于k近邻(knn)和支持向量机(svm)的图像分类系统。首先介绍了CIFAR-10数据集及其特征,然后分析实现了两种分类算法的原理与流程。在此基础上,对
    发表于 07-18 15:23 4次下载

    支持向量机(多类问题之1类对另1类)

    假设测试样本需被分为三类,首先需构建三个支持向量机模型
    的头像 发表于 07-05 16:08 291次阅读
    <b class='flag-5'>支持</b><b class='flag-5'>向量</b>机(多类问题之1类对另1类)

    支持向量机(多类问题之1类对K-1类方式)

    支持向量机可求解二分类问题。当需要求解多分类问题时,支持向量机可将二分类问题的求解方式转化为多分类问题的求解方式
    的头像 发表于 06-30 16:07 274次阅读

    支持向量机算法

    下面看一道例题:有18组数据,有不同的类别属性,建立SVM模型。
    的头像 发表于 06-18 17:32 454次阅读
    <b class='flag-5'>支持</b><b class='flag-5'>向量</b>机算法

    支持向量机(兵(车)王问题MATLAB程序)

    首先将LIBSVM工具包下载至SVM EXAMPLE的目录下。
    的头像 发表于 06-16 16:06 589次阅读
    <b class='flag-5'>支持</b><b class='flag-5'>向量</b>机(兵(车)王问题MATLAB程序)

    支持向量机(兵王问题描述)

    本文主要内容为采用支持向量机(SVM)解决国际象棋兵王问题。
    的头像 发表于 06-09 17:52 642次阅读
    <b class='flag-5'>支持</b><b class='flag-5'>向量</b>机(兵王问题描述)

    对偶支持向量机DSVM

    首先,我们回顾一下,对于非线性SVM,我们通常可以使用非线性变换将变量从x域转换到z域中。
    的头像 发表于 06-01 15:38 604次阅读
    对偶<b class='flag-5'>支持</b><b class='flag-5'>向量</b>机DSVM

    支持向量机(原问题和对偶问题)

    本文主要介绍原问题(PRIME PROBLEM)和对偶问题(DUAL PROBLEM),支持向量机优化问题可通过原问题向对偶问题的转化求解。
    的头像 发表于 05-25 09:31 679次阅读

    支持向量机(核函数的定义)

    根据机器学习相关介绍(10)——支持向量机(低维到高维的映射),支持向量机可通过引入φ(x)函数,将低维线性不可分问题转换为高维线性可分问题。
    的头像 发表于 05-20 10:41 515次阅读
    <b class='flag-5'>支持</b><b class='flag-5'>向量</b>机(核函数的定义)

    机器学习相关介绍:支持向量机(低维到高维的映射)

    根据机器学习相关介绍(9)——支持向量机(线性不可分情况),通过引入松弛变量δi将支持向量机推广至解决非线性可分训练样本分类的方式不能解决所有非线性可分训练样本的分类问题。因此,
    的头像 发表于 05-16 11:20 1286次阅读
    机器学习相关介绍:<b class='flag-5'>支持</b><b class='flag-5'>向量</b>机(低维到高维的映射)

    Vladimir Vapnik创立支持向量

    在Vladimir Vapnik创立支持向量机前,已有如下结论:在二分类情况中,如果一个数据集线性可分,即存在一个超平面可将两个类别完全分开
    的头像 发表于 05-04 18:03 590次阅读
    Vladimir Vapnik创立<b class='flag-5'>支持</b><b class='flag-5'>向量</b>机

    介绍支持向量机的基础概念

    支持向量机(Support Vector Machine)是一种较知名的机器学习算法,该算法由俄罗斯数学家Vladimir Vapnik创立。
    的头像 发表于 04-28 09:09 612次阅读
    介绍<b class='flag-5'>支持</b><b class='flag-5'>向量</b>机的基础概念