支持向量机

2023-05-16

一、是否线性可分的问题

考虑图6-1中,A-D共4个方框中的数据点分布,一个问题就是,能否画出一条直线,将圆形点和方形点分开呢?

比如图6-2中,方框A中的两组数据,它们之间已经分隔得足够开,因此很容易就可以在图中画出一条直线将两组数据点分开。在这种情况下,这组数据被称为线性可分数据。 

 

二、 分隔超平面的定义

上述将数据集分隔开来的直线称为分隔超平面(separating hyperplane)。在上面给出的例子
中,由于数据点都在二维平面上,所以此时分隔超平面就只是一条直线。但是,如果所给的数据
集是三维的,那么此时用来分隔数据的就是一个平面。显而易见,更高维的情况可以依此类推。
如果数据集是1024维的,那么就需要一个1023维的某某对象来对数据进行分隔。这个1023维的某
某对象到底应该叫什么?

我们称该对象被称为超平面(hyperplane),也就是分类的决策边界。分布在超平面一侧的所有数据都属于某个类别,而分布在另一侧的所有数据则属于另一个类别。我们希望能采用这种方式来构建分类器,即如果数据点离决策边界越远,那么其最后的预测结果也就越可信。

考虑图6-2框B到框D中的三条直线,它们都能将数据分隔开,但是其中哪一条最好呢?是否应该最小化数据点到分隔超平面的平均距离来求最佳直线?如果是那样,图6-2的B和C框中的直线是否真的就比D框中的直线好呢?如果这样做,是不是有点寻找最佳拟合直线的感觉?

是的,上述做法确实有点像直线拟合,但这并非最佳方案。我们希望找到离分隔超平面最近的点,确保它们离分隔面的距离尽可能远。这里点到分隔面的距离被称为间隔。我们希望间隔尽可能地大,这是因为如果我们犯错或者在有限数据上训练分类器的话,我们希望分类器尽可能健壮。
 

三、支持向量机

支持向量(support vector)就是离分隔超平面最近的那些点。支持向量机(Support Vector Machine,SVM),是一种监督式学习模型的算法。给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。

接下来要试着最大化支持向量到分隔面的距离,需要找到此问题的优化求解方法。

 四、寻找最大间隔

如何求解数据集的最佳分隔直线?先来看看图6-3。分隔超平面的形式可以写成wTx+b。要计
算 点 A 到 分 隔 超 平 面 的 距 离 , 就 必 须 给 出 点 到 分 隔 面 的 法 线 或 垂 线 的 长 度 , 该 值 为|wTA+b|/||w||。这里的常数b类似于Logistic回归中的截距w0。这里的向量w和常数b一起描述了所给数据的分隔线或超平面。接下来我们讨论分类器。

五、分类器求解的优化问题

输入数据给分类器会输出一个类别标签,这相当于一个类似于Sigmoid的函数在作用。下面将使用类似阶跃函数的函数对wTx+b作用得到f(wTx+b),其中当u<0时f(u)输出-1,反之则输出+1。

这里的类别标签为什么采用1和+1,而不是0和1呢?这是由于-1和+1仅仅相差一个符号,
方便数学上的处理。我们可以通过一个统一公式来表示间隔或者数据点到分隔超平面的距离,同
时不必担心数据到底是属于-1还是+1类。

当计算数据点到分隔面的距离并确定分隔面的放置位置时,间隔通过label * (wTx+b)来
计算,这时就能体现出-1和+1类的好处了。如果数据点处于正方向(即+1类)并且离分隔超平
面很远的位置时, wTx+b会是一个很大的正数,同时label*(wTx+b)也会是一个很大的正数。而
如果数据点处于负方向(-1类)并且离分隔超平面很远的位置时,此时由于类别标签为1,则
label * (wTx+b)仍然是一个很大的正数。
现在的目标就是找出分类器定义中的w和b。为此,我们必须找到具有最小间隔的数据点,而
这些数据点也就是前面提到的支持向量。一旦找到具有最小间隔的数据点,我们就需要对该间隔
最大化。这就可以写作

直接求解上述问题相当困难,所以我们将它转换成为另一种更容易求解的形式。首先考察一下上式中大括号内的部分。由于对乘积进行优化是一件很讨厌的事情,因此我们要做的是固定其中一个因子而最大化其他因子。如果令所有支持向量的label*(wTx+b)都为1,那么就可以通过求||w||-1的最大值来得到最终解。

但是,并非所有数据点的label*(wTx+b)都等于1,只有那些离分隔超平面最近的点得到的值才为1。而离超平面越远的数据点,其label*(wTx+b)的值也就越大。在上述优化问题中,给定了一些约束条件然后求最优值,因此该问题是一个带约束条件的优化问题。

这里的约束条件就是label*(wTx+b)≥ 1.0。对于这类优化问题,有一个非常著名的求解方法,即拉格朗日乘子法。通过引入拉格朗日乘子,我们就可以基于约束条件来表述原来的问题。由于这里的约束条件都是基于数据点的,因此我们就可以将超平面写成数据点的形式。于是,优化目标函数最后可以写成:


 

 其约束条件为:

至此,一切都很完美,但是这里有个假设:数据必须100%线性可分。目前为止,我们知道
几乎所有数据都不那么“干净”。这时我们就可以通过引入所谓松弛变量(slack variable),来允
许有些数据点可以处于分隔面的错误一侧。这样我们的优化目标就能保持仍然不变,但是此时新
的约束条件则变为:
 

这里的常数C用于控制“最大化间隔”和“保证大部分点的函数间隔小于1.0”这两个目标的权重。在优化算法的实现代码中,常数C是一个参数,因此我们就可以通过调节该参数得到不同
的结果。一旦求出了所有的alpha,那么分隔超平面就可以通过这些alpha来表达。这一结论十分
直接, SVM中的主要工作就是求解这些\alpha _{i}

六、 LIBSVM的使用步骤

1)准备数据集,转化为 LIBSVM支持的数据格式 :
[label] [index1]:[value1] [index2]:[value2] ...
即 [l类别标号] [特征1]:[特征值] [特征2]:[特征值] ...
2)对数据进行简单的缩放操作(scale);
3)考虑选用核函数(通常选取径函数,程序默认);
4)采用交叉验证(一般采用5折交叉验证),选择最佳参数C与g ;
5)用得到的最佳参数C与g 对整个训练集进行训练得到SVM模型;
6)用得到的SVM模型进行测试
 

参考:

看了这篇文章你还不懂SVM你就来打我 - 知乎

支持向量机通俗导论(理解SVM的三层境界)_v_JULY_v的博客-CSDN博客

看了这篇文章你还不懂SVM你就来打我 - 知乎
​https://www.cnblogs.com/jiahuiyu/p/5415939.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

支持向量机 的相关文章

  • 【Matlab】基于SVM支持向量机的时间序列预测(Excel可直接替换数据)

    Matlab 基于SVM支持向量机的时间序列预测 Excel可直接替换数据 1 模型原理 2 文件结构 3 Excel数据 4 分块代码 5 完整代码 6 运行结果 1 模型原理 基于支持向量机 Support Vector Machine
  • Scikit-learn之支持向量机

    Scikit learn之支持向量机 1 支持向量机简介 2 SVM在sklearn中的实现 2 1 实现目标 2 2 实现步骤 2 3 线性核函数 2 4 多项式核函数 2 5 高斯核函数 2 6 总结 1 支持向量机简介 SVM 支持向
  • 机器学习(一)svm运用实例

    机器学习 一 svm运用实例 这里我使用sklearn svm SVC函数 首先介绍一下函数参数 sklearn svm SVC C 1 0 kernel rbf degree 3 gamma auto coef0 0 0 shrinkin
  • 机器学习笔记13——支持向量机(SVM)模型原理以及python实现案例

    支持向量机 SVM 1 概述 2 基本概念 2 1 线性可分 2 2 函数间隔和几何间隔 2 3 间隔最大化 硬间隔最大化 2 4 凸优化问题 2 5 支持向量和间隔边界 2 6 对偶问题 3 线性可分支持向量机 3 1定义 3 2 优化目
  • 【机器学习】机器学习实验二:支持向量机(详细代码展示)

    文章目录 一 项目地址 二 实验二的详细代码 一 项目地址 https mbd pub o bread ZJWampxx 二 实验二的详细代码 手动调参
  • 人工智能——支持向量机(SVM)思维导图

    目录 1 机器学习 2 SVM 2 1 线性可分分类器 2 1 1 间隔 2 1 2 基本思想 2 1 3 目标函数 2 2 性质 2 3 线性不可分分类器 2 3 1 核函数 2 3 2 软间隔分类器 1 机器学习 2 SVM 2 1 线
  • 机器学习算法——支持向量机SVM1(超平面)

    支持向量机 Support Vector Machines SVM 是一种基于统计学习理论的机器学习算法 是一种二分类模型 它的基本模型是定义在特征空间上的间隔最大的线性分类器 SVM学习的基本思想是求解能够正确划分训练数据集并且几何间隔最
  • 基于支持向量机SVM的图像多分类,SVM的详细原理

    目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 SVM应用实例 SVM图像多分类 代码 结果分析 展望 参考 支持向量机SVM的详细原理 SVM的定义 支持向量机 support vector machines SVM 是一种二
  • 【图像识别】基于支持向量机svm植物叶子疾病检测和分类

    最近在学习svm算法 借此文章记录自己的学习过程 在学习很多处借鉴了z老师的讲义和李航的统计 若有不足的地方 请海涵 svm算法通俗的理解在二维上 就是找一分割线把两类分开 问题是如下图三条颜色都可以把点和星划开 但哪条线是最优的呢 这就是
  • 机器学习之SVM

    文章目录 一 SVM基本介绍 二 SVM工作原理 1 线性支持向量机 数据可分 2 软边距支持向量机 数据不可分 三 sklearn实现SVM 注 SVM涉及距离 需要先数据标准化处理 1 线性SVM LinearSVC 构造函数的参数及默
  • 基于MATLAB GUI的裂缝检测(识别)系统(支持向量机)

    主要内容 本文对裂缝检测技术进行了深入研究 并结合裂缝图像的特征 提出了一种基于传统机器学习和图像处理技术的裂缝检测方法 实现裂缝基本参数的计算和显示 内容如下 1 裂缝图像采集 无人机 2 裂缝图像预处理 3 裂缝分割 提取 裂缝连接 4
  • 【机器学习】感知机、线性支持向量机

    文章目录 一 感知机 线性二分类 二 感知机的损失函数 三 感知机实战 sklearn linear model Perceptron 四 Linear SVM 参考链接 一 感知机 线性二分类 感知机是一种相对简单的 二分类 的 线性 分
  • 彻底搞清“SVM”

    文章目录 前言 一 SVM是什么 概述 二 线性SVM 2 1 决策面 方程 2 2 约束条件 以下可以证明 有约束条件和没约束条件的公式是一样的 2 3 线性SVM优化 三 非线性分类 3 1 核函数 总结 前言 分类分析 概念 通过构造
  • 哈工大2021机器学习期末考试题

    一 说明参数正则化和参数后验之间的联系 并解释在机器学习模型参数估计中使用正则化的目的 二 给出条件熵的定义 举一个本课程中应用该方法的例子 说明使用条件熵的好处 给出你的直观解释 三 朴素贝叶斯的基本假设是什么 有什么好处 当假设满足时
  • Python回归预测建模实战-支持向量机预测房价(附源码和实现效果)

    机器学习在预测方面的应用 根据预测值变量的类型可以分为分类问题 预测值是离散型 和回归问题 预测值是连续型 前面我们介绍了机器学习建模处理了分类问题 具体见之前的文章 接下来我们以波斯顿房价数据集为例 做一个回归预测系列的建模文章 实现功能
  • 【机器学习】支持向量回归

    有任何的书写错误 排版错误 概念错误等 希望大家包含指正 在阅读本篇之前建议先学习 机器学习 支持向量机 上 硬间隔 机器学习 支持向量机 下 软间隔与核函数 支持向量回归 支持向量回归 support vector regression
  • 最小二乘支持向量机”在学习偏微分方程 (PDE) 解方面的应用(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 本代码说明了 最小二乘支持向量机 在学习偏
  • Sklearn GridSearchCV跑SVM很慢或卡死解决办法,SVM线性核函数卡死

    今天跑人工智能SVM实验 想试一下线性核函数 结果卡死了 很久也不出结果 但之前使用高斯核函数是没问题的 历经千辛万苦终于找到了原因 记录一下 希望对后人有帮助 本人只是个做作业的小菜菜 如有不对欢迎指正 参考了以下文章 关于Python
  • 量化交易动了谁的奶酪

    最近关于量化交易的政策讨论频出 在内容上 主要是限制其高频交易和某些可能对市场产生负面影响的行为 具体来说 中国证券监督管理委员会和上海证券交易所等机构都出台了相关政策 对量化交易的频率 规模 风险控制等方面进行了限制 这些政策的出台主要是
  • SVM原理理解

    目录 概念推导 共识 距离两个点集距离最大的分类直线的泛化能力更好 更能适应复杂数据 怎么能让margin最大 最大化margin公式 求解最大margin值 拉格朗日乘子法 为什么公式中出现求和符号 SVM模型 求解拉格朗日乘子 如何求解

随机推荐

  • 升级构建工具,从Makefile到CMake

    更多博文 xff0c 请看音视频系统学习的浪漫马车之总目录 C C 43 43 编译 浅析C C 43 43 编译本质 一篇文章入门C C 43 43 自动构建利器之Makefile 升级构建工具 xff0c 从Makefile到CMake
  • RTKLIB简介

    RTKLIB是全球导航卫星系统GNSS global navigation satellite system 的标准 amp 精密定位开源程序包 xff0c RTKLIB由日本东京海洋大学 xff08 Tokyo University of
  • zzuli OJ 1038: 绝对值最大

    Description 输入3个整数 xff0c 输出绝对值最大的那个数 Input 输入包含3个int范围内的整数 xff0c 用空格隔开 Output 输出三个数中绝对值最大的数 xff0c 单独占一行 若绝对值最大的数不唯一 xff0
  • md5sum

    ERROR 1550456422 414780061 Client Lidar cipv 213 wants topic rs percept result to have datatype md5sum autodrive msgs Pe
  • libcurl实现HTTP

    关于libcurl的相关函数介绍以及参数详见官方说明 https curl haxx se libcurl c example html HTTP Request 一个http请求包含方法 路径 http版本 请求包头 请求方法 GET H
  • 深夜没事,抓个ARP包吧!

    深夜没事 xff0c 抓个ARP包吧 xff01 ipconfig查看网卡信息 选择en33这个网卡 xff0c 发送两次 xff0c 询问192 168 21 1的mac地址 xff0c 注意 xff1a ARP请求只能在同一子网内部进行
  • linux基础篇(一)——GCC和Makefile编译过程

    linux系列目录 xff1a linux基础篇 xff08 一 xff09 GCC和Makefile编译过程 linux基础篇 xff08 二 xff09 静态和动态链接 ARM裸机篇 xff08 一 xff09 i MX6ULL介绍 A
  • jni/ndk问题 :引用so库报错: java.lang.UnsatisfiedLinkError: No implementation found for

    问题 xff1a 引用so库报错 xff1a java span class token punctuation span lang span class token punctuation span UnsatisfiedLinkErro
  • 《python+opencv实践》一、基于颜色的物体追踪(上)

    点击打开链接 本文主要参考国外一大牛博客 xff0c 然后自己修改得来 相关知识点在这里 实现功能 xff1a 追踪红颜色瓶盖 xff0c 并画出瓶盖轮廓和运动轨迹 from collections import deque import
  • C++的sort函数实现字符串排序

    一 背景 sort函数用于C 43 43 中 xff0c 对给定区间所有元素进行排序 头文件是 include lt algorithm gt 实现原理 xff1a sort并不是简单的快速排序 xff0c 它对普通的快速排序进行了优化 x
  • C# 中的Dispose()用法

    一 对Dispose方法的理解是什么呢 xff1f 使用Dispose方法的对象 xff0c 应释放它拥有的所有资源 它还应该通过调用其父类型的Dispose方法释放其基类型拥有的所有资源 net的对象使用一般分为三种情况 1 创建对象 2
  • C++的 remove函数

    一 介绍 remove函数原型如下 xff1a template lt class ForwardIt class T gt ForwardIt remove ForwardIt first ForwardIt last const T a
  • 主板上的南桥与北桥

    一 历史 曾经 xff0c 北桥芯片和南桥芯片都是主板芯片组中最重要的组成部分 传统来说 xff0c 靠上方的叫北桥 xff0c 靠下方的叫南桥 北桥负责与CPU通信 xff0c 并且连接高速设备 xff08 内存 显卡 xff09 xff
  • CMake的add_library与target_link_libraries

    一 add library介绍 使用该命令可以在Linux下生成 xff08 静态 动态 xff09 库so或者 a文件 xff0c Windows下就是dll与lib文件 xff0c 它有两种命令格式 1 1 第一种格式 xff1a No
  • Linux下终止正在执行的shell脚本

    一 问题 Linux系统Shell中提交了一个脚本 xff0c 但是需要停止这个进程 xff0c 如何处理 xff1f 二 方案1 killall fileName 说明 xff1a killall是一个命令 xff0c 不是kill al
  • Qt对象树的销毁

    一 问题 在C 43 43 中中 xff0c 我们都知道 xff1a delete 和 new 必须配对使用 一 一对应 xff1a delete少了 xff0c 则内存泄露 为什么Qt使用new来创建一个控件 xff0c 但是却没有使用d
  • DNS域名解析之递归与非递归查询

    DNS域名解析之递归与非递归查询 递归查询迭代查询实例 递归查询 主机向本地域名服务器的查询一般是递归查询 xff1a 如果本地域名服务器不知道查询的IP地址 xff0c 那么本地域名服务器就会以DNS客户的身份向根域名服务器继续发生请求
  • spi,iic,uart,pcie区别

    一 spi SPI 是英语Serial Peripheral interface的缩写 xff0c 顾名思义就是串行外围设备接口 xff0c 是同步传输协议 xff0c 特征是 xff1a 设备有主机 xff08 master xff09
  • 决策树的介绍

    一 介绍 决策树 decision tree 是一类常见的机器学习方法 它是一种树形结构 xff0c 其中每个内部节点表示一个属性上的判断 xff0c 每个分支代表一个判断结果的输出 xff0c 最后每个叶节点代表一种分类结果 例如 xff
  • 支持向量机

    一 是否线性可分的问题 考虑图6 1中 xff0c A D共4个方框中的数据点分布 xff0c 一个问题就是 xff0c 能否画出一条直线 xff0c 将圆形点和方形点分开呢 xff1f 比如图6 2中 xff0c 方框A中的两组数据 xf