SVM直观理解

ops/2024/9/24 4:03:22/

https://tangshusen.me/2018/10/27/SVM/

https://www.bilibili.com/video/BV16T4y1y7qj/?spm_id_from=333.337.search-card.all.click&vd_source=8272bd48fee17396a4a1746c256ab0ae

SVM是什么? 先来看看维基百科上对SVM的定义:

支持向量机(英语:support vector machine,常简称为SVM,又名支持向量网络)是在分类与回归分析中分析数据的监督式学习模型与相关的学习算法。给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。

如果从未接触SVM的话,维基的这一大段解释肯定会让你一头雾水。简单点讲,SVM就是一种二类分类模型,他的基本模型是的定义在特征空间上的间隔最大的线性分类器,SVM的学习策略就是间隔最大化。

我们先来看看下面这个图:

img

图1.1

图中有分别属于两类的一些二维数据点和三条直线。如果三条直线分别代表三个分类器的话,请问哪一个分类器比较好?

我们凭直观感受应该觉得答案是H3。首先H1不能把类别分开,这个分类器肯定是不行的;H2可以,但分割线与最近的数据点只有很小的间隔,如果测试数据有一些噪声的话可能就会被H2错误分类(即对噪声敏感、泛化能力弱)。H3以较大间隔将它们分开,这样就能容忍测试数据的一些噪声而正确分类,是一个泛化能力不错的分类器。

对于支持向量机来说,数据点若是𝑝维向量,我们用𝑝−1维的超平面来分开这些点。但是可能有许多超平面可以把数据分类。最佳超平面的一个合理选择就是以最大间隔把两个类分开的超平面。

目标:

因此,SVM选择能够使离超平面最近的数据点的到超平面距离最大的超平面。

image-20240504102823332

以上介绍的SVM只能解决线性可分的问题,为了解决更加复杂的问题,支持向量机学习方法有一些由简至繁的模型:

  • 线性可分SVM

当训练数据线性可分时,通过硬间隔(hard margin,什么是硬、软间隔下面会讲)最大化可以学习得到一个线性分类器,即硬间隔SVM,如上图的的H3。

为了找到最大间隔超平面,我们可以先选择分离两类数据的两个平行超平面,使得它们之间的距离尽可能大。在这两个超平面范围内的区域称为“间隔(margin)”,最大间隔超平面是位于它们正中间的超平面。

image-20240504101749803

image-20240504103122695

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

image-20240504103729846

  • 线性SVM

当训练数据不能线性可分但是可以近似线性可分时,通过软间隔(soft margin)最大化也可以学习到一个线性分类器,即软间隔SVM。

image-20240504103611691

软间隔目的是在间隔距离和错误大小间找到一个平衡

  • 非线性SVM

当训练数据线性不可分时,通过使用核技巧(kernel trick)和软间隔最大化,可以学习到一个非线性SVM。

image-20240504103945039

此时不能通过一条直线将他有效区分

image-20240504104122650

进行升维转换,增加一个维度

image-20240504104237134

  1. 通过维度转换函数将低维数据进行升维
  2. 在高维度下求解SVM模型,找到对应的分隔超平面

但是维度转换函数需要更多的存储数据需求

image-20240504105012392

通过选取合适的核公式,可以不用知道具体的维度转换函数,直接获得数据的高维度差异


http://www.ppmy.cn/ops/32432.html

相关文章

前端vite+rollup前端监控初始化——封装基础fmp消耗时间的npm包并且发布npm beta版本

文章目录 ⭐前言💖vue3系列文章 ⭐初始化npm项目💖type为module💖rollup.config.js ⭐封装fmp耗时计算的class💖npm build打包class对象 ⭐发布npm的beta版本💖 npm发布beta版本 ⭐安装web-performance-tool的beta版本…

【LLM第二篇】stable diffusion扩散模型、名词解释

最近在整理大模型的相关资料,发现了几个名词,不是很懂,这里整理一下: stable diffusion(SD)模型: 扩散模型(Diffusion model)的一种,主要用于生成高质量的图像&#xf…

USB2.0和USB3.0识别方式

一. USB2.0识别方式 USB2.0向下兼容USB1.0和USB1.1,分为低速、全速和高速三种模式。 1. 全速和低速识别 根据规范,全速和低速通过设备端的上拉电阻进行区分。当设备插入HUB或上电时,有上拉电阻的那根数据线就会被拉高,HUB根据D…

StarryCoding 算法小白周赛2 题解与代码(含视频题解)

比赛链接(含视频题解):https://www.starrycoding.com/contest/4 A题题解: 题目大意 给你一个由 n n n 个正整数组成的数组 a a a,询问这个数组是否是严格单调递增的。 思路 因为他会按照“拜访时间安排表”的顺…

android_systemServer进程启动流程

一,systemServer进程是被Zygote进程fork出来的,具体代码, 在startBootstrapServices、startCoreServices、startOtherServices、startApexServices中,对各类服务进行了启动,比如我们常见的ActivityManagerService、Pa…

区块链 | IPFS:IPNS(实操版)

🦊原文:Publishing IPNS names Publishing IPNS names with Kubo Step1: 启动你的 IPFS 守护进程(如果尚未运行): $ ipfs daemon说明:以 $ 开头的是命令,以 > 开头的是执行结果…

(一)深度神经网络的安全性和可信度的调查----验证、测试、对抗性攻击和防御,以及可解释性

在过去的几年中,深度神经网络(DNNs)在几个长期任务上实现人类水平的表现方面取得了重大进展。随着dnn在各种应用上的广泛应用,人们对其安全性和可信度的担忧被公开提出,特别是在广泛报道涉及自动驾驶汽车的致命事件之后…

3.SpringSecurity基本原理

SpringSecurity本质是一个过滤器链。十多个过滤器构成一个过滤器链。 这些过滤器在项目启动就会进行加载。每个过滤器执行放行操作才会执行下一个过滤器。 常见过滤器 FilterSecurityInterceptor 是一个方法级的权限过滤器,基本位于过滤器链的最底部。 Excepti…