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

模式识别 —— 第六章 支持向量机(SVM)与核(Kernel)

模式识别 —— 第六章 支持向量机(SVM)与核(Kernel)

文章目录

  • 模式识别 —— 第六章 支持向量机(SVM)与核(Kernel)
    • 硬间隔(Hard-Margin)
    • 软间隔(Soft-Margin)
    • 核kernel
    • 对偶问题
      • 硬间隔优化问题的对偶转变
      • 考点
      • 软间隔优化问题的对偶转变

开始之前先推荐一个个人感觉把SVM讲的特别好的课程视频(尤其是转对偶问题那一部分),浙大胡浩基老师手写板书讲的,真的草履虫都能看懂!

点一下 嗖~就过去

硬间隔与软间隔区别如下:

硬间隔
完全分类准确,只在数据是线性可分离的时候才有效。其损失函数不存在,损失值为0。但它对异常值非常敏感,无法很好的泛化。

软间隔
要避免这些问题,最好使用更灵活的模型。目标是尽可能在保持最大间隔宽度和限制间隔违例之间找到良好的平衡,这就是软间隔分类。

所以软间隔允许一定量的样本分类错误;优化函数包括两个部分,一部分是点到平面的间隔距离,一部分是误分类的损失个数;C是惩罚系数,误分类个数在优化函数中的权重值;权重值越大,误分类的损失惩罚的越厉害。

硬间隔(Hard-Margin)

我们想找到一个超平面让其线性可分,数学表述如下:
在这里插入图片描述
a式子与b式子合并可得到下面的统一表示。

现在我们想让在这个分界线(面)附近的点(即支持向量)离它尽量远一点。由点到直线距离公式来使得Margin最大。
在这里插入图片描述
然后我们想办法将最大化Margin转化为下面这个优化问题:
在这里插入图片描述
怎么转化的呢?首先我们有两个事实条件:
在这里插入图片描述
之后:
在这里插入图片描述

此时,对于非支持向量那就相当于∣wTx0+b∣>1\lvert w^Tx_0+b \rvert >1wTx0+b>1
把y写进去来代替绝对值符号的作用就可以得到新的限制条件y(wTx0+b)≥1y(w^Tx_0+b) \geq 1y(wTx0+b)1

最后我们为了后续求导方便,我们可以在目标函数处多加一个12\frac{1}{2}21,如下:

在这里插入图片描述
这样就变成了一个凸优化的问题,即要么无解、要么只有一个极值。因此局部极值就是最值。

软间隔(Soft-Margin)

在这里插入图片描述
SVM对训练集里面的每个样本(xi,yi)(x_i,y_i)(xi,yi)引入了一个松弛变量ξi≥0ξ_i≥0ξi0,使函数间隔加上松弛变量大于等于1,也就是说条件变量改为如下:

yi(w∙xi+b)≥1−ξiyi(w∙xi+b)≥1−ξiyi(wxi+b)1ξi

加入松弛变量ξiξ_iξi后,损失函数就需要改写为:
min12∣∣wi∣∣2+C∑i=1nξimin\frac12||w_i||^2+C\sum_{i=1}^nξ_imin21∣∣wi2+Ci=1nξi

s.t.yi(wTxi+b)≥1−ξi(i=1,2,...m)s.t. \quad y_i(w^Tx_i+b)≥1−ξ_i(i=1,2,...m)s.t.yi(wTxi+b)1ξi(i=1,2,...m)

ξi≥0(i=1,2,...m)ξ_i≥0(i=1,2,...m)ξi0(i=1,2,...m)

这里,C>0为惩罚参数,可以理解为我们一般回归和分类问题正则化时候的参数。C越大,对误分类的惩罚越大,C越小,对误分类的惩罚越小。

也就是说,我们希望12∣∣wi∣∣2\frac12||w_i||^221∣∣wi2尽量小,误分类的点尽可能的少。C是协调两者关系的正则化惩罚系数。在实际应用中,需要调参来选择。

核kernel

对于在低维线性不可分的数据,在映射到了高维以后,就变成线性可分的了。例如:
在这里插入图片描述

左边是在二维空间的投影,我们没办法找到一条直线将两个类别区分开。但是如果我们将二维空间映射到三维空间的话,我们就可以找到一个超平面在三维中线性可分。

就像是三体中狄奥伦娜能进入四维空间后轻易的取人脑子一样。

维度越高线性可分就越容易。但是映射成的高维维度是爆炸性增长的,这个计算量实在是太大了,而且如果遇到无穷维的情况,就根本无从计算了。这就要用到我们的核函数了。

核函数的价值在于它虽然也是将特征进行从低维到高维的转换,但核函数好在它在低维上进行计算,而将实质上的分类效果(利用了内积)表现在了高维上,这样避免了直接在高维空间中的复杂计算,真正解决了SVM线性不可分的问题。

线性核函数
线性核函数(Linear Kernel)其实就是內积,如下:
K(x,y)=x∙yK(x,y)=x∙yK(x,y)=xy

多项式核函数
多项式核函数(Polynomial Kernel)是线性不可分SVM常用的核函数之一,公式如下:
K(x,y)=(γx∙y+r)dK(x,y)=(γx∙y+r)^dK(x,y)=(γxy+r)d

高斯核函数
高斯核函数(Gaussian Kernel),在SVM中也称为径向基核函数(Radial Basis Function,RBF),它是非线性分类SVM最主流的核函数。libsvm默认的核函数就是它。公式如下:

K(x,y)=e−∣∣x−y∣∣22σ2K(x,y)=e^{-\frac{||x-y||^2}{2\sigma ^2}}K(x,y)=e2σ2∣∣xy2

对偶问题

这部分建议看视频部分的讲解,讲的真的超级棒!

这里我们采用的是拉格朗日乘子将其转化成对偶问题,思路如下:

在这里插入图片描述

硬间隔优化问题的对偶转变

按照上述思路,首先我们将限制条件转换成a(x)≤0a(x) \leq 0a(x)0的形式:
在这里插入图片描述
之后我们构建拉格朗日常数:
在这里插入图片描述
因为是求最值,所以我们求导进行回代:
在这里插入图片描述

考点

这是我们这学期的期末考试题,老师提前透露的。也是类似上面的推导,只不过要简单一点再。

就是如果目标函数不是wTxi+bw^Tx_i + bwTxi+b而是wTxiw^Tx_iwTxi,请进行对偶问题的转换。其实是变简单了,不用对b进行求导回代了。解法如下:

在这里插入图片描述
可恶啊,背面画着图透过来了。算了,凑合看吧,其实结果是一样的。

软间隔优化问题的对偶转变

在这里插入图片描述在这里插入图片描述

相关文章:

模式识别 —— 第六章 支持向量机(SVM)与核(Kernel)

模式识别 —— 第六章 支持向量机(SVM)与核(Kernel) 文章目录模式识别 —— 第六章 支持向量机(SVM)与核(Kernel)硬间隔(Hard-Margin)软间隔(Soft…...

总结 synchronized

目录synchronized的特性1. 互斥2. 刷新内存3. 可重入synchronized的使用1. 直接修饰普通方法2. 修饰静态方法3. 修饰代码块synchronized的锁机制基本特点关键锁策略 : 锁升级synchronized的特性 1. 互斥 synchronized 会起到互斥效果, 某个线程执行到某个对象的 synchronized…...

360周鸿祎又“开炮”:GPT 6-8就将产生自主意识!我们来测算一下对错

‍数据智能产业创新服务媒体——聚焦数智 改变商业近日,360的周鸿祎放言“GPT6到GPT8人工智能将会产生意识,变成新的物种。未来,人工智能大语言模型有可能实现自我进化,自动更新系统和自我升级,或者指数级进化能力&am…...

python——飞机大战小游戏

目录 1、导入模块 2、窗口操作 3、事件操作 4、长按事件 5、添加游戏背景 6、添加英雄飞机 7、获取飞机的图片矩形 8、基本游戏窗口 9、添加游戏窗口图片 10、英雄飞机登场 11、英雄飞机装备子弹并发射 1、enemy_plane 2、game_main 3、game_map 4、game_score …...

数组(完全二叉树)向下建堆法与堆排序O(N*logN)

TIPS AdjustUp & AdjustDown向上调整AdjustUp与向下调整AdjustDown的参数是一个数组(完全二叉树)需要进行调整操作的数值的下标/一个数组(完全二叉树)堆元素个数需要调整操作的数值的下标。实际上就是对完全二叉树当中的某一点…...

Lua require 函数使用

从 Lua 的用户文档中我们知道 require("modName") 函数是用来加载模块的,而如果这个modName已经用require 加载过的,再调用require时,将直接返回模块的值。因为函数首先查找 package.loaded 表, 检测 modName 是否被加载…...

【面试】如何定位线上问题?

这个面试题我在两年社招的时候遇到过,前几天面试也遇到了。我觉得我每一次都答得中规中矩,今天来梳理复盘下,下次又被问到的时候希望可以答得更好。 下一次我应该会按照这个思路去答: 1、如果线上出现了问题,我们更多…...

字节二面,原来我对自动化测试的理解太浅了

如果你入职一家新的公司,领导让你开展自动化测试,作为一个新人,你肯定会手忙脚乱,你会如何落地自动化测试呢? 01 什么是自动化 有很多人做了很长时间的自动化但却连自动化的概念都不清楚,这样的人也是很悲…...

Android11.0 应用升级成功后立即断电重启,版本恢复

问题:客户反馈内置的应用升级成功后立刻断电重启,应用的版本被恢复。 使用adb命令升级客户应用,查看版本显示已更新,/data/system目录下packages.xml和packages.xml中应用版本信息均已更新 C:\Users\dell>adb shell dumpsys …...

关于python常用软件用法:Pycharm 常用功能

人生苦短,我用python 一.Pycharm的基本使用 1.在Pycharm下为你的Python项目配置Python解释器 (1).Setting>Project Interpreter>源码资料电子书:点击此处跳转文末名片获取 二.在Pycharm下创建Python文件、Python模块 1.File>New&g…...

SOLIDWORKS你不知道的小技巧

◉ SOLIDWORKS圆弧长度标注点智能标注,再选中该圆弧,然后分别点圆弧的两个端点,点击左键可以标注圆弧长度。◉ SOLIDWORKS强力裁剪剪裁实体中的强劲剪裁,除了可以裁剪实体外,还可以任意延伸实体。◉ SOLIDWORKS转折线转…...

有了HTTP,为啥还要用RPC

既然有 HTTP 请求,为什么还要用 RPC 调用? 一直以来都没有深究过RPC和HTTP的区别,不都是写一个服务然后在客户端调用么? HTTP和RPC最本质的区别,就是 RPC 主要是基于 TCP/IP 协议的,而 HTTP 服务主要是基…...

[leetcode] 动态规划

背包 先啃懂 背包九讲 01背包,即物品有限。 for 物品for 容量(倒序)P1048 [NOIP2005 普及组] 采药 [ 原题 | 题解 ] P1049 [NOIP2001 普及组] 装箱问题 [ 原题 | 题解 ] P1507 NASA的食物计划 [ 原题 | 题解 ] P1510 精卫填海 [ 原题 | 题…...

科大奥瑞物理实验——热电偶特性及其应用研究

实验名称:热电偶特性及其应用研究 1. 实验目的: 掌握电位差计的工作原理和结构特点;了解温差电偶测温的原理和方法;学会电位差计的使用及注意事项。 2. 实验器材: 电位差计 标准电池 光电检流计 稳压电源 温差电偶…...

Eclips快捷键大全(超详细)

Eclips快捷键大全(超详细)前言一、常用快捷键二、编辑快捷键三、导航快捷键四、运行和调试快捷键五、重构快捷键六、代码生成快捷键七、项目导航快捷键八、帮助快捷键九、搜索快捷键十、标记快捷键十一、版本控制快捷键十二、其它快捷键前言 本博主将用C…...

整懵了,蚂蚁金服4面成功拿下测开offer,涨薪10k,突然觉得跳槽也不是那么难

蚂蚁的面试挺独特的,每轮面试都没有HR约时间,一般是晚上8点左右面试官来一个电话,问是否能面试,能的话开始面,不能就约一个其他时间。 全程4面,前四面技术面,电话面试,最后一面是HR面…...

C++内存分布malloc-free-new-delete的区别和联系

目录 一、内存分布 1.1内存分布图: 1.2 为什么要将bss和data区分开呢? 1.3 堆和栈有什么区别 二、malloc、free;new、delete 2.1 new和delete是如何实现的,new与malloc的异同处 2.2既然有了malloc/free,C为什么还…...

【华为OD机试 2023最新 】 最多颜色的车辆(C++ 100%)

文章目录 题目描述输入描述输出描述用例题目解析C++题目描述 在一个狭小的路口,每秒只能通过一辆车,假设车辆的颜色只有 3 种,找出 N 秒内经过的最多颜色的车辆数量。 三种颜色编号为0 ,1 ,2 输入描述 第一行输入的是通过的车辆颜色信息 [0,1,1,2] 代表4 秒钟通过的车…...

Linux安全加固

一、重要文件 /etc/passwd #记录本地用户的属性信息,如UID、GID /etc/shadow #存放用户的口令信息 只有系统管理员能查看 /etc/pam.d/system-auth #账户安全配置文件 /etc/login.defs #修改登录的配置文件 /etc/profile …...

Java基础学习(6)

Java基础学习一 字符串1.1 API 与 API文档1.1.1 如何使用帮助文档查找想要导用的方法1.2 String 概述1.3 创建String对象的两种方式第一种第二种1.4 Java常用字符串方法1.4.1 比较1.4.2 字符串通过索引取出1.4.3 取出字符串中的单个字符1.4.4 替换出字符串当中的字符1.4.5 取出…...

【Java 25 ZGC 2.0终极调优指南】:27个生产级参数详解+GC停顿压至亚毫秒的5大黄金法则

第一章&#xff1a;Java 25 ZGC 2.0调优全景概览ZGC 2.0 在 Java 25 中迎来关键演进&#xff0c;其核心目标是将暂停时间稳定控制在亚毫秒级&#xff08;<1ms&#xff09;&#xff0c;同时显著提升高吞吐场景下的内存回收效率与可预测性。相比 Java 21 的 ZGC 实现&#xff…...

G-Helper:华硕ROG笔记本性能调校的轻量级解决方案

G-Helper&#xff1a;华硕ROG笔记本性能调校的轻量级解决方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地址: h…...

sklearn分类报告报错?一招解决UndefinedMetricWarning的零除问题

机器学习模型评估中的UndefinedMetricWarning&#xff1a;从原理到实战解决方案 当你第一次看到控制台弹出"UndefinedMetricWarning: Precision and F-score are ill-defined"的红色警告时&#xff0c;是不是感觉一头雾水&#xff1f;这个看似简单的警告背后&#x…...

RLT火了,但拧螺丝的真问题真是它解决的吗?

先说结论RLT的核心价值在于“分工”&#xff1a;让笨重但泛化好的VLA做感知和粗规划&#xff0c;让轻快但专精的小网络做在线微调&#xff0c;这是一种计算和样本成本的折中架构。它没有解决数据收集的根本成本&#xff0c;而是优化了“数据利用率”和“策略更新效率”&#xf…...

Keil MDK-ARM中map文件解析与内存管理

Keil MDK-ARM中map文件全面解析1. 项目概述在嵌入式系统开发过程中&#xff0c;内存管理是至关重要的环节。map文件作为编译链接过程中生成的中间文件&#xff0c;包含了程序内存布局的完整映射信息。对于使用Keil MDK-ARM开发环境的工程师而言&#xff0c;深入理解map文件的结…...

万物识别-中文镜像步骤详解:从镜像pull到浏览器验证的12个关键节点

万物识别-中文镜像步骤详解&#xff1a;从镜像pull到浏览器验证的12个关键节点 你是不是也遇到过这样的场景&#xff1a;看到一张图片&#xff0c;想知道里面是什么东西&#xff0c;但手动搜索又麻烦又慢&#xff1f;或者&#xff0c;你的项目需要批量识别图片内容&#xff0c…...

自然语言生成:为AI原生应用注入新活力

自然语言生成&#xff1a;为AI原生应用注入新活力 关键词&#xff1a;自然语言生成&#xff08;NLG&#xff09;、AI原生应用、大语言模型、文本生成、多模态交互 摘要&#xff1a;自然语言生成&#xff08;NLG&#xff09;是AI领域的“语言魔法”&#xff0c;能让机器像人类一…...

OpenClaw多通道控制:Qwen3-32B-Chat同时响应飞书与网页端指令

OpenClaw多通道控制&#xff1a;Qwen3-32B-Chat同时响应飞书与网页端指令 1. 为什么需要多通道控制&#xff1f; 上周三晚上11点&#xff0c;我正在用OpenClaw的网页控制台整理项目文档&#xff0c;突然飞书弹出同事的紧急需求&#xff1a;"能不能立刻帮我生成上季度销售…...

AI驱动的3D建模革命:PIFuHD开源工具让零基础用户轻松创建高精度数字人

AI驱动的3D建模革命&#xff1a;PIFuHD开源工具让零基础用户轻松创建高精度数字人 【免费下载链接】pifuhd High-Resolution 3D Human Digitization from A Single Image. 项目地址: https://gitcode.com/gh_mirrors/pi/pifuhd 在数字内容创作、游戏开发和AR/VR应用领域…...

Go语言中的工具链:从go build到go generate

Go语言中的工具链&#xff1a;从go build到go generate 前言 作为一个在小厂挣扎的Go后端老兵&#xff0c;我对工具链的理解就一句话&#xff1a;能自动化的绝不手动。 想当年在大厂时&#xff0c;工具链那叫一个完善&#xff0c;从代码编译到部署上线&#xff0c;全程自动化。…...