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

支持向量机算法(三):非线性支持向量原理层层拆解,精读公式每一处细节

支持向量机算法(一):像讲故事一样讲明白它的原理及实现奥秘-CSDN博客

支持向量机算法(二):层层拆解,精读公式每一处细节-CSDN博客

支持向量机算法(一)、算法(二)学习了什么是支持向量机、线性可分支持向量机、线性支持向量机,本次学习非线性支持向量机。

在线性支持向量机模型中,通过引入松弛因子可以让少量噪声样本也能正确分类并得到最优超平面,用线性超平面将非线性数据集近似分离。然而,这些被战略性“放弃”的样本是少数样本,被认为是噪声或是一种扰动。如果数据集中两种类别的大部分样本都是混叠在一起,那么采用这种方法得到的模型效果就不佳了。此时,要采用核函数映射的方法将低维空间映射到高维空间,将低维空间中的非线性问题转化为高维空间中的线性问题。

因此,非线性支持向量机模型为“核函数映射+线性支持向量机模型”,即在核函数映射后的数据集上训练线性支持向量机模型。 核函数映射的技巧在于不显式地定义映射函数,而是通过寻找一个核函数k(·,·),使得通过核函数映射后的结果等价于样本通过映射函数后在特征空间的内积。即核技巧实际是将特征映射与内积两步运算压缩在一起,而不关心具体的映射函数本身是哪种形式。

☀我们该如何理解这段话呢?

(1)从映射说起
想象你有一些玩具(这些玩具就像是原始数据),它们在一个小盒子(低维空间)里摆放着。你想把这些玩具放到一个大仓库(高维空间)里,并且摆放的方式要更有规律,这样才能更好地分类或者做其他操作。这个把玩具从盒子放到仓库并且重新摆放的过程就像是映射函数。
以前呢,我们得先想好怎么把玩具从盒子拿到仓库,并且要清楚地告诉别人每个玩具在仓库里放在哪儿,这就是明确地定义映射函数。比如,你要把一个小方块玩具从盒子里拿到仓库,并且规定它在仓库的第三排第五列第二层(这就像定义了映射函数后,知道样本在高维空间的位置)。
(2)核函数的特别之处
现在有了核函数,就好像有了一个魔法盒子。你不需要知道玩具在大仓库里具体是怎么摆放的(不需要知道映射函数)。
这个魔法盒子有个神奇的功能,你只要把两个玩具的名字(原始样本)告诉它,它就能直接告诉你这两个玩具在大仓库里如果按照某种神秘规则摆放后,它们离得有多近(通过核函数计算得到的结果等价于在高维空间中的内积)。
比如,有两个玩具叫小熊和小兔子,你把它们的名字告诉魔法盒子(核函数),魔法盒子就会告诉你一个数字,这个数字就代表了如果把小熊和小兔子放到大仓库里,它们之间的一种亲密程度(在高维特征空间中的内积)。
(3)为什么这样做很好
要是用以前的方法,你得先把小熊和小兔子按照复杂的规则放到大仓库里(计算映射函数),然后再量它们之间的距离(计算内积),这很麻烦。
但是有了魔法盒子(核函数),就简单多了。而且,很多时候,我们其实只关心小熊和小兔子在大仓库里是不是离得近(样本在高维空间中的相似性),并不关心它们具体放在仓库的哪个位置(具体的映射函数)。所以核函数这种方法又简单又能达到我们想要的效果。

核函数的定义如下:设Ω为输入空间(欧式空间),Η为特征空间(希尔伯特空间),如果存在一个从Ω到H 的映射∅(x):Ω→ Η,使得对于所有的x, y∈Ω,都有函数k(x,y)满足:

 则称k(x,y)为核函数,∅ (·)定义为映射函数,∅(x)·∅(y)表示映射后在特征空间的内积,以下是几种常用的核函数。

(1)线性核函数

线性核函数(Linear Kernel)是最简单的核函数,主要用于线性可分的情况,表达式为:

其中,c为可选的常数。线性核函数是原始输入空间的内积,即特征空间和输入空间的维度是一样的,参数较少,运算速度较快。一般情况下,在特征数量相对于样本数量非常多时,适合采用线性核函数。

①公式解读

xy是输入的向量(可以理解为数据点),x^{T}是向量x的转置,x^{T}\cdot y这部分就是两个向量的内积运算,c是一个可选的常数。

②线性核函数特点

☛与原始输入空间的关系:线性核函数是原始输入空间的内积,这意味着它没有对原始数据进行复杂的非线性变换,直接使用原始数据的内积来计算核函数的值。例如,在二维平面上有一些点,使用线性核函数计算它们之间的核函数值,就是直接计算这些点坐标向量的内积。
☛特征空间和输入空间维度:因为是原始输入空间的内积,所以特征空间和输入空间的维度是一样的。比如原始数据是三维向量,那么经过线性核函数处理后,在 “特征空间”(这里其实就是原始空间)中还是三维的。
☛参数较少:相比其他一些复杂的核函数(如高斯核函数等),线性核函数只有内积运算和一个可选的常数,没有其他复杂的参数需要调整,所以参数较少。
☛运算速度较快:由于不需要进行复杂的非线性变换等计算,只是简单的内积运算和可能的常数加法,所以运算速度相对较快。例如,在处理大规模数据时,计算线性核函数的值比计算一些复杂核函数的值要快很多。

(2)多项式核函数

多项式核函数(Polynomial Kernel)的参数比较多,当多项式阶数高时,复杂度会很高,对于正交归一化后的数据,可优先选此核函数,其表达式如下:

其中,α表示调节参数,p表示最高次项次数,c为可选常数。 

线性核函数是多项式核函数的特殊情况(a=1,p=1),多项式核函数通过调整a、c和p的值,可以得到不同的核函数形式,具有更强的灵活性和适应性。

(3)径向基核函数(高斯核函数)

径向基核函数(Radial Basis Function Kernel)具有很强的灵活性,应用很广泛。与多项式核函数相比,它的参数少,因此大多数情况下,都有比较好的性能;在不确定用哪种核函数时,可优先验证高斯核函数。由于类似于高斯函数,所以也称其为高斯核函数。表达式如下:

其中,σ^2越大,高斯核函数变得越平滑,模型的偏差和方差大,泛化能力差,容易过拟合。σ^2越小,高斯核函数变化越剧烈,模型的偏差和方差越小,模型对噪声样本比较敏感。 

①公式各部分表达的意思

k(x,y):表示核函数的值,它衡量了输入向量xy之间的某种相似度或关系。 

exp:表示以自然常数e为底的指数函数。

\left \| x-y \right \|^{2}:这是向量xy之间的欧几里得距离的平方。它反映了两个向量在空间中的距离远近,距离越近,\left \| x-y \right \|^{2}的值越小。

\sigma:是一个超参数,称为带宽(bandwidth)。它控制了高斯核函数的宽度,\sigma的值越大,核函数的曲线越平坦,意味着对距离较远的样本也会给予一定的权重;\sigma的值越小,核函数的曲线越陡峭,只有距离非常近的样本才会有较大的权重。

☀我们该如何理解超参数呢?

在机器学习中,超参数是在模型训练之前需要手动设置的参数,它不通过模型的训练过程来学习。就是高斯核函数中的一个超参数,它对核函数的形状和性质有着重要的影响。

在机器学习任务中,\sigma的选择至关重要:

①如果选择的\sigma值过大,模型可能会过于平滑,导致对训练数据的拟合不足,可能无法捕捉到数据中的复杂模式,从而在测试数据上的表现不佳,出现欠拟合的情况。
②相反,如果\sigma值过小,模型可能会对训练数据中的噪声过于敏感,过度拟合训练数据,在新的数据上泛化能力差。
③因此,需要通过交叉验证等方法来选择合适的\sigma值,以平衡模型的拟合能力和泛化能力,使得模型在处理实际问题时能够达到较好的性能。

\sigma作为高斯核函数的带宽,通过控制核函数的宽度,影响着样本之间的权重分配,进而对基于高斯核函数的机器学习模型的性能产生重要影响,需要谨慎选择和调整。

(4)Sigmoid 核函数

Sigmoid核函数来源于感知机中的激活函数,SVM使用Sigmoid相当于一个两层的感知机网络,Sigmoid核函数表达式如下:

其中,α表示调节参数,c为可选常数,一般c可取为1/n,n为数据维度。     

☀tanh是什么呢?

tanh是双曲正切函数,它的定义为:

函数的值域在(-1,1)之间,它具有非线性的特性,可以将输入值映射到这个区间内。

非线性支持向量机的算法步骤如下:

①选择合适的核函数k(x,y)与惩罚参数C,并计算核函数的映射结果。

②构造并求解约束最优化问题:

 ☀公式是什么意思呢?

是要最大化的目标函数。

☛其中, a_{i}是拉格朗日乘子, y_{i}是样本x_{i}的类别标签(通常为 +1 或 -1), k(x_{i},y_{i})是核函数,用于计算样本x_{i}x_{j}在高维特征空间中的内积(或相似度)。

是所有拉格朗日乘子的和,是一个关于拉格朗日乘子和样本之间相似度的二次项。通过最大化这个目标函数,可以找到最优的拉格朗日乘子值,进而确定支持向量机(SVM)的决策边界。

是一个等式约束,表示所有样本对应的拉格朗日乘子与类别标签的乘积之和为 0。这个约束条件保证了模型的分类决策是基于样本之间的相对关系,而不是绝对的数值大小。

是不等式约束,其中C是一个超参数,称为惩罚参数。它控制了对误分类样本的惩罚程度。

③使用SMO等算法得到最佳超平面得到最佳分类面的表达式

非线性支持向量机模型核函数的选择非常关键,而选定核函数后,核函数中的参数也直接影响了模型性能。因此,在非线性支持向量机模型中,需要优化的超参数有惩罚参数C及核函数的参数,如多项式核函数的阶次p、高斯核函数的核函数宽度σ。

相关文章:

支持向量机算法(三):非线性支持向量原理层层拆解,精读公式每一处细节

支持向量机算法(一):像讲故事一样讲明白它的原理及实现奥秘-CSDN博客 支持向量机算法(二):层层拆解,精读公式每一处细节-CSDN博客 支持向量机算法(一)、算法&#xff0…...

一文读懂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 两个数组的交集Ⅱ

解析 与刚刚的《两个数组的交集》一样&#xff0c;只是这道题允许重复&#xff0c;将上一题的set去除即可。 代码 class Solution { public:vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {vector<int> res;int index1 …...

云原生第二次练习

1.判断192.168.1.0/24网络中&#xff0c;当前在线的ip有哪些&#xff0c;并编写脚本打印出来。 #!/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 基本使用第一步&#xff1a;导入依赖第二步&#xff1a;Controller 层开发第三步&#xff1a;SpringMVC 配置类配置核心组件第四步&#xff1a;SpringMVC 环境搭建第五步&#xff1a;部…...

前端小案例——网页井字棋

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

ComfyUI-PromptOptimizer:文生图提示优化节点

ComfyUI-PromptOptimizer 是 ComfyUI 的一个自定义节点&#xff0c;旨在优化文本转图像模型的提示。它将用户输入的提示转换为更详细、更多样化、更生动的描述&#xff0c;使其更适合生成高质量的图像。无需本地模型。 1、功能 提示优化&#xff1a;优化用户输入的提示以生成…...

AudioGPT全新的 音频内容理解与生成系统

AudioGPT全新的 音频内容理解与生成系统 ChatGPT、GPT-4等大型语言模型 (LLM) 在语言理解、生成、交互和推理方面表现出的非凡能力,引起了学界和业界的极大关注,也让人们看到了LLM在构建通用人工智能 (AGI) 系统方面的潜力。 现有的GPT模型具有极高的语言生成能力,是目前最…...

thinkphp6 + redis实现大数据导出excel超时或内存溢出问题解决方案

redis下载安装&#xff08;window版本&#xff09; 参考地址&#xff1a;https://blog.csdn.net/Ci1693840306/article/details/144214215 php安装redis扩展 参考链接&#xff1a;https://blog.csdn.net/jianchenn/article/details/106144313 解决思路&#xff1a;&#xff0…...

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&#xff1a;Bugs in LLM Training - Gradient Accumulation Fix 这篇文章的记录。 在深度学习训练过程中&#xff0c;尤其是在大批量&#xff08;large batch&#xff09;训练中&#xff0c;如何高…...

基于本地消息表实现分布式事务

假设我们有一个电商系统,包含订单服务和库存服务。当用户下单时,需要在订单服务中创建订单,同时在库存服务中扣减库存。这是一个典型的分布式事务场景,我们需要保证这两个操作要么都成功,要么都失败,以保证数据的最终一致性。 项目结构: 订单服务(Order Service)库存服务(Inv…...

Web3与加密技术的结合:增强个人隐私保护的未来趋势

随着互联网的快速发展&#xff0c;个人隐私和数据安全问题越来越受到关注。Web3作为新一代互联网架构&#xff0c;凭借其去中心化的特性&#xff0c;为个人隐私保护提供了全新的解决方案。而加密技术则是Web3的重要组成部分&#xff0c;进一步增强了隐私保护的能力。本文将探讨…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙&#xff08;HarmonyOS5&#xff09;中集成百度地图&#xff0c;可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API&#xff0c;可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​&#xff1a;下载安装 ​​De…...

OCR MLLM Evaluation

为什么需要评测体系&#xff1f;——背景与矛盾 ​​ 能干的事&#xff1a;​​ 看清楚发票、身份证上的字&#xff08;准确率>90%&#xff09;&#xff0c;速度飞快&#xff08;眨眼间完成&#xff09;。​​干不了的事&#xff1a;​​ 碰到复杂表格&#xff08;合并单元…...