支持向量机算法(三):非线性支持向量原理层层拆解,精读公式每一处细节
支持向量机算法(一):像讲故事一样讲明白它的原理及实现奥秘-CSDN博客
支持向量机算法(二):层层拆解,精读公式每一处细节-CSDN博客
支持向量机算法(一)、算法(二)学习了什么是支持向量机、线性可分支持向量机、线性支持向量机,本次学习非线性支持向量机。
在线性支持向量机模型中,通过引入松弛因子可以让少量噪声样本也能正确分类并得到最优超平面,用线性超平面将非线性数据集近似分离。然而,这些被战略性“放弃”的样本是少数样本,被认为是噪声或是一种扰动。如果数据集中两种类别的大部分样本都是混叠在一起,那么采用这种方法得到的模型效果就不佳了。此时,要采用核函数映射的方法将低维空间映射到高维空间,将低维空间中的非线性问题转化为高维空间中的线性问题。
因此,非线性支持向量机模型为“核函数映射+线性支持向量机模型”,即在核函数映射后的数据集上训练线性支持向量机模型。 核函数映射的技巧在于不显式地定义映射函数,而是通过寻找一个核函数k(·,·),使得通过核函数映射后的结果等价于样本通过映射函数后在特征空间的内积。即核技巧实际是将特征映射与内积两步运算压缩在一起,而不关心具体的映射函数本身是哪种形式。
☀我们该如何理解这段话呢?
(1)从映射说起
想象你有一些玩具(这些玩具就像是原始数据),它们在一个小盒子(低维空间)里摆放着。你想把这些玩具放到一个大仓库(高维空间)里,并且摆放的方式要更有规律,这样才能更好地分类或者做其他操作。这个把玩具从盒子放到仓库并且重新摆放的过程就像是映射函数。
以前呢,我们得先想好怎么把玩具从盒子拿到仓库,并且要清楚地告诉别人每个玩具在仓库里放在哪儿,这就是明确地定义映射函数。比如,你要把一个小方块玩具从盒子里拿到仓库,并且规定它在仓库的第三排第五列第二层(这就像定义了映射函数后,知道样本在高维空间的位置)。
(2)核函数的特别之处
现在有了核函数,就好像有了一个魔法盒子。你不需要知道玩具在大仓库里具体是怎么摆放的(不需要知道映射函数)。
这个魔法盒子有个神奇的功能,你只要把两个玩具的名字(原始样本)告诉它,它就能直接告诉你这两个玩具在大仓库里如果按照某种神秘规则摆放后,它们离得有多近(通过核函数计算得到的结果等价于在高维空间中的内积)。
比如,有两个玩具叫小熊和小兔子,你把它们的名字告诉魔法盒子(核函数),魔法盒子就会告诉你一个数字,这个数字就代表了如果把小熊和小兔子放到大仓库里,它们之间的一种亲密程度(在高维特征空间中的内积)。
(3)为什么这样做很好
要是用以前的方法,你得先把小熊和小兔子按照复杂的规则放到大仓库里(计算映射函数),然后再量它们之间的距离(计算内积),这很麻烦。
但是有了魔法盒子(核函数),就简单多了。而且,很多时候,我们其实只关心小熊和小兔子在大仓库里是不是离得近(样本在高维空间中的相似性),并不关心它们具体放在仓库的哪个位置(具体的映射函数)。所以核函数这种方法又简单又能达到我们想要的效果。
核函数的定义如下:设Ω为输入空间(欧式空间),Η为特征空间(希尔伯特空间),如果存在一个从Ω到H 的映射∅(x):Ω→ Η,使得对于所有的x, y∈Ω,都有函数k(x,y)满足:
则称k(x,y)为核函数,∅ (·)定义为映射函数,∅(x)·∅(y)表示映射后在特征空间的内积,以下是几种常用的核函数。
(1)线性核函数
线性核函数(Linear Kernel)是最简单的核函数,主要用于线性可分的情况,表达式为:
其中,c为可选的常数。线性核函数是原始输入空间的内积,即特征空间和输入空间的维度是一样的,参数较少,运算速度较快。一般情况下,在特征数量相对于样本数量非常多时,适合采用线性核函数。
①公式解读
和
是输入的向量(可以理解为数据点),
是向量
的转置,
这部分就是两个向量的内积运算,c是一个可选的常数。
②线性核函数特点
☛与原始输入空间的关系:线性核函数是原始输入空间的内积,这意味着它没有对原始数据进行复杂的非线性变换,直接使用原始数据的内积来计算核函数的值。例如,在二维平面上有一些点,使用线性核函数计算它们之间的核函数值,就是直接计算这些点坐标向量的内积。
☛特征空间和输入空间维度:因为是原始输入空间的内积,所以特征空间和输入空间的维度是一样的。比如原始数据是三维向量,那么经过线性核函数处理后,在 “特征空间”(这里其实就是原始空间)中还是三维的。
☛参数较少:相比其他一些复杂的核函数(如高斯核函数等),线性核函数只有内积运算和一个可选的常数,没有其他复杂的参数需要调整,所以参数较少。
☛运算速度较快:由于不需要进行复杂的非线性变换等计算,只是简单的内积运算和可能的常数加法,所以运算速度相对较快。例如,在处理大规模数据时,计算线性核函数的值比计算一些复杂核函数的值要快很多。
(2)多项式核函数
多项式核函数(Polynomial Kernel)的参数比较多,当多项式阶数高时,复杂度会很高,对于正交归一化后的数据,可优先选此核函数,其表达式如下:
其中,α表示调节参数,p表示最高次项次数,c为可选常数。
线性核函数是多项式核函数的特殊情况(a=1,p=1),多项式核函数通过调整a、c和p的值,可以得到不同的核函数形式,具有更强的灵活性和适应性。
(3)径向基核函数(高斯核函数)
径向基核函数(Radial Basis Function Kernel)具有很强的灵活性,应用很广泛。与多项式核函数相比,它的参数少,因此大多数情况下,都有比较好的性能;在不确定用哪种核函数时,可优先验证高斯核函数。由于类似于高斯函数,所以也称其为高斯核函数。表达式如下:
其中,σ^2越大,高斯核函数变得越平滑,模型的偏差和方差大,泛化能力差,容易过拟合。σ^2越小,高斯核函数变化越剧烈,模型的偏差和方差越小,模型对噪声样本比较敏感。
①公式各部分表达的意思
☛:表示核函数的值,它衡量了输入向量
和
之间的某种相似度或关系。
☛:表示以自然常数
为底的指数函数。
☛:这是向量
和
之间的欧几里得距离的平方。它反映了两个向量在空间中的距离远近,距离越近,
的值越小。
☛:是一个超参数,称为带宽(bandwidth)。它控制了高斯核函数的宽度,
的值越大,核函数的曲线越平坦,意味着对距离较远的样本也会给予一定的权重;
的值越小,核函数的曲线越陡峭,只有距离非常近的样本才会有较大的权重。
☀我们该如何理解超参数呢?
在机器学习中,超参数是在模型训练之前需要手动设置的参数,它不通过模型的训练过程来学习。就是高斯核函数中的一个超参数,它对核函数的形状和性质有着重要的影响。
在机器学习任务中,的选择至关重要:
①如果选择的值过大,模型可能会过于平滑,导致对训练数据的拟合不足,可能无法捕捉到数据中的复杂模式,从而在测试数据上的表现不佳,出现欠拟合的情况。
②相反,如果值过小,模型可能会对训练数据中的噪声过于敏感,过度拟合训练数据,在新的数据上泛化能力差。
③因此,需要通过交叉验证等方法来选择合适的值,以平衡模型的拟合能力和泛化能力,使得模型在处理实际问题时能够达到较好的性能。
作为高斯核函数的带宽,通过控制核函数的宽度,影响着样本之间的权重分配,进而对基于高斯核函数的机器学习模型的性能产生重要影响,需要谨慎选择和调整。
(4)Sigmoid 核函数
Sigmoid核函数来源于感知机中的激活函数,SVM使用Sigmoid相当于一个两层的感知机网络,Sigmoid核函数表达式如下:
其中,α表示调节参数,c为可选常数,一般c可取为1/n,n为数据维度。
☀tanh是什么呢?
tanh是双曲正切函数,它的定义为:
函数的值域在(-1,1)之间,它具有非线性的特性,可以将输入值映射到这个区间内。
非线性支持向量机的算法步骤如下:
①选择合适的核函数k(x,y)与惩罚参数C,并计算核函数的映射结果。
②构造并求解约束最优化问题:
☀公式是什么意思呢?
☛是要最大化的目标函数。
☛其中, 是拉格朗日乘子,
是样本
的类别标签(通常为 +1 或 -1),
是核函数,用于计算样本
和
在高维特征空间中的内积(或相似度)。
☛是所有拉格朗日乘子的和,
是一个关于拉格朗日乘子和样本之间相似度的二次项。通过最大化这个目标函数,可以找到最优的拉格朗日乘子值,进而确定支持向量机(SVM)的决策边界。
是一个等式约束,表示所有样本对应的拉格朗日乘子与类别标签的乘积之和为 0。这个约束条件保证了模型的分类决策是基于样本之间的相对关系,而不是绝对的数值大小。
是不等式约束,其中
是一个超参数,称为惩罚参数。它控制了对误分类样本的惩罚程度。
③使用SMO等算法得到最佳超平面得到最佳分类面的表达式
非线性支持向量机模型核函数的选择非常关键,而选定核函数后,核函数中的参数也直接影响了模型性能。因此,在非线性支持向量机模型中,需要优化的超参数有惩罚参数C及核函数的参数,如多项式核函数的阶次p、高斯核函数的核函数宽度σ。
相关文章:
支持向量机算法(三):非线性支持向量原理层层拆解,精读公式每一处细节
支持向量机算法(一):像讲故事一样讲明白它的原理及实现奥秘-CSDN博客 支持向量机算法(二):层层拆解,精读公式每一处细节-CSDN博客 支持向量机算法(一)、算法࿰…...

一文读懂iOS中的Crash捕获、分析以及防治
Crash系统性总结 Crash捕获与分析Crash收集符号化分析 Crash类别以及解法分析子线程访问UI而导致的崩溃unrecognized selector send to instance xxxKVO crashKVC造成的crashNSTimer导致的Crash野指针Watch Dog超时造成的crash其他crash待补充 参考文章: 对于iOS端开…...

代码随想录刷题day11|(链表篇)206.翻转链表
目录 一、链表理论基础 二、翻转链表思路 双指针解法 递归解法 三、相关算法题目 四、总结 一、链表理论基础 代码随想录 (programmercarl.com) 二、翻转链表思路 两种方法:双指针解法和递归解法 双指针解法 首先定义一个指针curr,初始化为原…...

【STM32-学习笔记-8-】I2C通信
文章目录 I2C通信Ⅰ、硬件电路Ⅱ、IIC时序基本单元① 起始条件② 终止条件③ 发送一个字节④ 接收一个字节⑤ 发送应答⑥ 接收应答 Ⅲ、IIC时序① 指定地址写② 当前地址读③ 指定地址读 Ⅳ、MPU6050---6轴姿态传感器(软件I2C)1、模块内部电路2、寄存器地…...
2025年1月17日(点亮三色LED)
系统信息: Raspberry Pi Zero 2W 系统版本: 2024-10-22-raspios-bullseye-armhf Python 版本:Python 3.9.2 已安装 pip3 支持拍摄 1080p 30 (1092*1080), 720p 60 (1280*720), 60/90 (640*480) 已安装 vim 已安装 git 学习目标:…...

ASP .NET Core 学习 (.NET 9)- 创建 API项目,并配置Swagger及API 分组或版本
本系列为个人学习 ASP .NET Core学习全过程记录,基于.NET 9 和 VS2022 ,实现前后端分离项目基础框架搭建和部署,以简单、易理解为主,注重页面美观度和后台代码简洁明了,可能不会使用过多的高级语法和扩展,后…...

mysql-5.7.18保姆级详细安装教程
本文主要讲解如何安装mysql-5.7.18数据库: 将绿色版安装包mysql-5.7.18-winx64解压后目录中内容如下图,该例是安装在D盘根目录。 在mysql安装目录中新建my.ini文件,文件内容及各配置项内容如下图,需要先将配置项【skip-grant-tab…...

RK3588平台开发系列讲解(NPU篇)NPU 驱动的组成
文章目录 一、NPU 驱动组成二、查询 NPU 驱动版本三、查询 rknn_server 版本四、查询 librknn_runtime 版本沉淀、分享、成长,让自己和他人都能有所收获!😄 一、NPU 驱动组成 NPU 驱动版本、rknn_server 版本、librknn_runtime 版本以及 RKNN Toolkit 版本的对应关系尤为重…...
ESP32学习笔记_FreeRTOS(6)——Event and Notification
摘要(From AI): 这篇博客详细介绍了 FreeRTOS 中的事件组和任务通知机制,讲解了事件组如何通过位操作实现任务间的同步与通信,以及任务如何通过通知机制进行阻塞解除和数据传递。博客提供了多个代码示例,展示了如何使用事件组和任务通知在多任…...
力扣-数组-350 两个数组的交集Ⅱ
解析 与刚刚的《两个数组的交集》一样,只是这道题允许重复,将上一题的set去除即可。 代码 class Solution { public:vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {vector<int> res;int index1 …...
云原生第二次练习
1.判断192.168.1.0/24网络中,当前在线的ip有哪些,并编写脚本打印出来。 #!/bin/bash for ip in $(seq 1 254); doping -c 1 -W 1 "192.168.1.$ip" > /dev/null 2>&1if [ $? -eq 0 ]; thenecho "192.168.1.$ip is online&qu…...

SpringMVC复习笔记
文章目录 SpringMVC 概念和基本使用SpringMVC 简介SpringMVC 核心组件和调用流程SpringMVC 基本使用第一步:导入依赖第二步:Controller 层开发第三步:SpringMVC 配置类配置核心组件第四步:SpringMVC 环境搭建第五步:部…...

前端小案例——网页井字棋
前言:我们在学习完了HTML、CSS和JavaScript之后,就会想着使用这三个东西去做一些小案例,不过又没有什么好的案例让我们去练手,本篇文章就提供里一个案例——网页井字棋。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可…...

ComfyUI-PromptOptimizer:文生图提示优化节点
ComfyUI-PromptOptimizer 是 ComfyUI 的一个自定义节点,旨在优化文本转图像模型的提示。它将用户输入的提示转换为更详细、更多样化、更生动的描述,使其更适合生成高质量的图像。无需本地模型。 1、功能 提示优化:优化用户输入的提示以生成…...
AudioGPT全新的 音频内容理解与生成系统
AudioGPT全新的 音频内容理解与生成系统 ChatGPT、GPT-4等大型语言模型 (LLM) 在语言理解、生成、交互和推理方面表现出的非凡能力,引起了学界和业界的极大关注,也让人们看到了LLM在构建通用人工智能 (AGI) 系统方面的潜力。 现有的GPT模型具有极高的语言生成能力,是目前最…...

thinkphp6 + redis实现大数据导出excel超时或内存溢出问题解决方案
redis下载安装(window版本) 参考地址:https://blog.csdn.net/Ci1693840306/article/details/144214215 php安装redis扩展 参考链接:https://blog.csdn.net/jianchenn/article/details/106144313 解决思路:࿰…...

Hexo + NexT + Github搭建个人博客
文章目录 一、 安装二、配置相关项NexT config更新主题主题样式本地实时预览常用命令 三、主题设置1.侧边栏2.页脚3.帖子发布字数统计 4.自定义自定义页面Hexo 的默认页面自定义 404 页自定义样式 5.杂项搜索服务 四、第三方插件NexT 自带插件评论系统阅读和访问人数统计 五、部…...
使用Sum计算Loss和解决梯度累积(Gradient Accumulation)的Bug
使用Sum计算Loss和解决梯度累积的Bug 学习 https://unsloth.ai/blog/gradient:Bugs in LLM Training - Gradient Accumulation Fix 这篇文章的记录。 在深度学习训练过程中,尤其是在大批量(large batch)训练中,如何高…...
基于本地消息表实现分布式事务
假设我们有一个电商系统,包含订单服务和库存服务。当用户下单时,需要在订单服务中创建订单,同时在库存服务中扣减库存。这是一个典型的分布式事务场景,我们需要保证这两个操作要么都成功,要么都失败,以保证数据的最终一致性。 项目结构: 订单服务(Order Service)库存服务(Inv…...

Web3与加密技术的结合:增强个人隐私保护的未来趋势
随着互联网的快速发展,个人隐私和数据安全问题越来越受到关注。Web3作为新一代互联网架构,凭借其去中心化的特性,为个人隐私保护提供了全新的解决方案。而加密技术则是Web3的重要组成部分,进一步增强了隐私保护的能力。本文将探讨…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...