SVM通俗详解

SVM通俗详解SVM 英文全称为 SupportVecto 中文名为支持向量机 由数学家 Vapnik 等人早在 1963 年提出 在深度学习兴起之前 SVM 一度风光无限 是机器学习近几十年来最为经典的 也是最受欢迎的分类方法之一 1SVM 与 三八线 不少人在初识 SVM 时会感觉到高深难懂 现在 就从你我熟知的 三八线 来走进 SVM 的思想内涵 回忆下小时候 同桌同学经常会用粉笔或是小刀在课桌中间划一条 三八线 将课桌一分为二 大家约定好每个人只能在自己的那半课桌领域活动 谁也不能越界 越界是小猪 小狗

SVM,英文全称为 Support Vector Machine,中文名为支持向量机,由数学家Vapnik等人早在1963年提出。在深度学习兴起之前,SVM一度风光无限,是机器学习近几十年来最为经典的,也是最受欢迎的分类方法之一。

1 SVM与“三八线”

不少人在初识SVM时会感觉到高深难懂。现在,就从你我熟知的“三八线”来走进SVM的思想内涵。

这样的“三八线”就可以看作二维空间中SVM的形象解释,它传递出了以下几点重要的信息:

1.是一条直线(线性函数);

2.能将桌面分为两个部分,分别属于你和我(具有分类功能,是一种二值分类);

3.位于课桌正中间,不偏向任何一方(注重公平原则,才能保证双方利益最大化)。

以上三点也正是SVM分类器的中心思想所在。

这是因为:SVM本质模型是特征空间中最大化间隔的线性分类器,是一种二分类模型。

首先,线性分类器指的就是线性函数;其次,最大化间隔离不开公平原则;再者,其解决的是二值分类问题(分两类);而特征空间则表明了其学习分类的对象是样本的特征数据。接下来,我们将会一一了解到这些SVM的本质精髓。

2为何叫支持向量机?

通过回忆“三八线”的故事,我们已经清楚了SVM的几个中心思想。下面我们再来了解支持向量机这一名称的渊源。

之所以叫支持向量机,因为其核心理念是:支持向量样本会对识别的问题起关键性作用。那什么是支持向量(Support vector)呢?支持向量也就是离分类超平面(Hyper plane)最近的样本点。

3 什么是线性分类器?

SVM是一种线性分类器,分类的对象要求是线性可分。因此我们首先要了解什么是线性可分与线性不可分。

在二维的平面课桌上,一条直线就足以将桌面一分为二。但如果扩展到三维空间中,则需要一个平面(比如一面墙、一扇屏风等)才能将立体空间区域一分为二。而对于高维空间(我们无法用图画出),能将其一分为二的则称为超平面。

我们已经清楚SVM是一种线性分类器,无论是二维空间的直线,还是三维空间的平面,以及多维空间的超平面,它们的数学表现形式都有着相同的特性,那就是都属于线性函数。线性函数的特点是计算简单,易于求解。

对于我们熟悉的二维空间(平面坐标),直线的函数表达式为:

y=ax+b

4.致力间隔最大化

如何找到最合适的分类超平面?依据的原则就是间隔最大化。

所谓间隔最大化,说的是分类超平面跟两类数据的间隔要尽可能大(即远离两边数据),这就要提到我们前面说到的公平原则。“三八线”要划在课桌正中间,不偏向任何一方,才能保证双方利益最大化。对于分类超平面来说,也就是要位于两类数据的正中间,不偏向任何一类,才能保证离两边数据都尽可能远,从而实现间隔最大化。

如左下图所示,有两类样本数据(分别用橙色和蓝色的小圆圈表示),我们可通过红色或蓝色两条直线(L1或L2)将这两类样本数据分开。事实上,我们还可以画出很多条直线将两类样本分开,也就是说,存在有多个可行的线性分类器能将两类样本分类。SVM的最终目标是:以间隔最大化为原则找到最合适的那个分类器。

在这里插入图片描述
从直观上看,图中蓝线L2偏向了橙色数据一方,有失公平原则,因而不是我们要找的理想的分类器。红线L1则较注重公平,不偏向任何一类数据,从而能较好地确保离两类数据都尽可能远,实现间隔最大化,这样的分类超平面具有更好的泛化性能,分类更加准确,正是我们要找的最合适的分类器。

我们注意到,图中两条虚线(S1和S2)上的圆点数据即为支持向量(Support vector),它们距离分类超平面最近。现在我们仅保留这些支持向量数据点进行分析(右上图),可以看出两条虚线之间的间隔距离为r。依据公平原则,支持向量到分类超平面的距离则为r/2,这个值即为分类间隔。间隔最大化,就是最大化这个值(r/2)。

由此可以看出,分类间隔值(r/2)只与支持向量数据点有关,与其他非支持向量数据点无关。这也正好诠释了我们在文中开头说到的:SVM的核心理念是支持向量样本会对识别的问题起关键性作用。也就是说,分类超平面的确定仅取决于支持向量。

SVM 通过选择一个核函数 K ,将低维非线性数据映射到高维空间中。原始空间中的非线性数据经过核函数映射转换后,在高维空间中变成线性可分的数据,从而可以构造出最优分类超平面。

简单地说,核函数是计算两个向量在隐式映射后空间中的内积的函数。核函数通过先对特征向量做内积,然后用函数 K 进行变换,这有利于避开直接在高维空间中计算,大大简化问题求解。并且这等价于先对向量做核映射然后再做内积。

多项式核函数,可根据R和d的取值不同,而有不同的计算式。

高斯核函数,可根据实际需要灵活选取参数σ,甚至还可以将原始维度空间映射到无穷维度空间。不过,如果σ取值很大,会导致高次特征上的权重衰减快;如果σ取值很小,其好处是可以将任意的数据映射成为线性可分,但容易造成过拟合现象。

在这里插入图片描述

参考https://baijiahao.baidu.com/s?id=1639719949469452687&wfr=spider&for=pc

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215814.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午1:06
下一篇 2026年3月18日 下午1:06


相关推荐

  • java 卸载工具_java卸载工具下载

    java 卸载工具_java卸载工具下载java怎样完全卸载?怎么彻底删除java?有些用户的系统上会自带java程序,或者是因为安装了什么软件导致java一起安装了,那这个时候怎么将java卸载呢?不清楚的用户,看看小米小编为大家推荐的一款非常好用的java卸载工具。软件介绍java卸载器是一款java完全卸载工具,当你的java出现了故障需要卸载重装的话,就可以使用这个软件完全卸载掉java的所有文件,可以完美解决java卸载不了、…

    2022年5月20日
    45
  • Flume-Kafka-Flume对接Kafka以及Kafka数据分类传输

    Flume-Kafka-Flume对接Kafka以及Kafka数据分类传输Flume对接KafkaFlume日志采集组件;Flume对接kafka主要是为了通过kafka的topic功能,动态的增加或者减少接收的节点,并且Flume要对接多个节点是需要多个channel和sink的会导致内存不够的情况。那么可以实现的场景就是Flume采集日志文件,通过kafka给多给业务线使用。1)配置flume(flume-kafka.conf)#definea1.sources=r1a1.sinks=k1a1.channels=c1#sourcea1

    2022年6月23日
    33
  • Python如何运行程序

    Python如何运行程序Python解释器简介解释器是一种让其他程序运行起来的程序。Python也有一个名为解释器的软件包,当你编写了一段Python程序,Python解释器将读取程序,并按照其中的命令执行,得出结果。实际

    2022年7月5日
    23
  • qaction不显示_QAction类详解:

    qaction不显示_QAction类详解:先贴一段描述 Qt 文档原文 DetailedDesc Inapplicatio toolbar

    2026年3月18日
    3
  • linux 查看用户组和所有用户

    linux 查看用户组和所有用户1 查看用户组信息 cat etc group etc group 的内容包括用户组 Group 用户组口令 GID 及该用户组所包含的用户 User 每个用户组一条记录 格式如下 group name passwd GID user list 在 etc group 中的每条记录分四个字段 第一字段 用户组名称 第二字段 用户组密码 第三字段 GID 第四字段 用户列表 每个用户之间用 号分割 本字段可以为空 如果字段为空表示用户组为 GID 的用户名 2 查看用户信息 系统存在

    2026年3月26日
    2
  • O2O:互联网的另一种变异形式

    O2O:互联网的另一种变异形式

    2021年8月27日
    67

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号