当前位置: 首页 > news >正文

支持向量机(SVM)白话之个人理解(学习记录)

本文仅有文字理解部分,没有相应的数学公式推导过程,便于新手理解。

一、什么是支持向量机

首先我们看下面这张图,在图中圆形和三角形分别代表不同的数据类型,如何画出一条直线使两者能够显著地区分开来呢?

答案可以多种多样,我们可以画出无数条直线将这两种数据分开。那么如何判断哪一条直线画的最好呢?这就牵扯到我们划该直线的目的。当另外又来了一个数据时,我们可以根据划分的直线来判断这个数据属于哪一种类型?对的,这个数据的类型我们可以估计为和它所在的那一侧的数据类型一样的数据类型。所以,我们可以看到上侧所画的红线就相对不是很好,因为当来了一个新数据接近与该直线时,我们有很大的几率将这个数据判断错误。

于是,我们进一步拓展:此时数据是在一个平面内,那如果是在三维、四维以及高维空间内呢?在二维空间内,我们可以找到一个平面来区分这些三维数据,这个平面就称为超平面。于是乎,我们提出:针对多个n维的数据类型,我们可以相应地找到一个n-1维的超平面来区分这两类n维数据类型。

我们重新回到二维平面上来,我们将所画的直线称之为决策边界(也叫超平面)。那么怎样的决策边界才是好的决策边界呢?根据上边的分析,我们初步认识到,当决策边界与两侧的数据都保持一定的距离时,这个距离在分析决策时起到了一个缓冲的作用,从而使出错的概率大大降低。那么这个缓冲区我们称之为间隔。而寻找最佳决策边界线其实就是找到间隔最大的那条直线。

由上图知,蓝线是最佳决策边界(决策超平面),其到两侧黑线的距离相等,而两侧黑线与两类数据相距最近的点相切。我们把黑线称为正超平面和负超平面(上侧是正超平面,下侧是负超平面)。而两侧黑线相切的点决定了间隔的大小,我们称相切的点为支持向量点,这也是支持向量机的由来。

二、进一步研究

探究一

如果两类数据类型中有一类数据有离群点(比如下图中的红点),我们按照之前的思路就会得到下图。

在上图中,虚线表示加入离群点后的超平面及其两侧正负超平面。而实线则是没加入红点之前的超平面和两侧正负超平面。那么我们是否要按照原来的思路选择虚线作为最终结果呢?我们可以看到,如果选择虚线,那么间隔距离就会大大减少,出错的概率就会增大。为此在上图中我们不妨舍弃这个异常离群点,仍旧选择实线作为输出结果。在上图中,我们把原来的间隔称为软间隔,把加入红点后的间隔称为硬间隔,而因为加入而失去的距离称为损失因子

当然,在实际问题中,离群点可能会很多并且很复杂,那么我们就需要用相应的数学方法去考量要不要舍弃某些离群点,在牺牲间隔距离和减少出错率之间达到最佳的平衡。

探究二

如果出现两类数据类型如下图所示,我们该如何分类画线呢?(两类数据分别用红点和蓝点表示)

为解决此类问题人们想出了升维转换这个方法,即下图。

即增加一个维度,使二维点成为三维点,然后找到一个超平面将其分为两类。所以对于在低维下无法轻易地分类的数据,可以采用这种方法来解决他们。

http://www.lryc.cn/news/334585.html

相关文章:

  • 【运输层】TCP 的可靠传输是如何实现的?
  • K8s技术全景:架构、应用与优化
  • Java的异常机制
  • 考虑预同步的虚拟同步机T型三电平逆变器并离网MATLAB仿真模型
  • 记一次k8s取证检材过期的恢复
  • 【网站项目】自助购药小程序
  • Ubuntu22.04修改默认窗口系统为X11
  • 延时队列实现实战:如何利用 RabbitMQ 实现延时队列,以满足特定延迟处理需求
  • 关于在Ubuntu上配置mysql踩的一些坑
  • JSBridge原理 - 前端H5与客户端Native交互
  • 【Java EE】Spring请求如何传递参数详解
  • 菜鸟笔记-Numpy常用函数用法汇总
  • tensorflow.js 如何使用opencv.js通过面部特征点估算脸部姿态并绘制示意图
  • Linux命令-dpkg-divert命令(Debian Linux中创建并管理一个转向列表)
  • flex: 1 是哪些属性的缩写?
  • python基于opencv实现数籽粒
  • OpenCV图像处理——基于OpenCV的ORB算法实现目标追踪
  • 13.JavaWeb XML:构建结构化数据的重要工具
  • 鸿蒙OS实战开发:【多设备自适应服务卡片】
  • 深度学习基础之一:机器学习
  • Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之五 简单指定视频某片段重复播放效果
  • ARXML处理 - C#的解析代码(二)
  • 关于华为即将举行的鸿蒙春季沟通会的新闻报道
  • MySQL视图及如何导入导出
  • 文心一言上线声音定制功能;通义千问开源模型;openAI又侵权?
  • 课时89:流程控制_函数进阶_函数变量
  • Linux命令-dpkg-preconfigure命令(Debian Linux中软件包安装之前询问问题)
  • SEO优化艺术:精细化技巧揭示与搜索引擎推广全面战略解读
  • 《springcloud alibaba》 四 seata安装以及使用
  • -bash: cd: /etc/hadoop: 没有那个文件或目录