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

news2025/1/19 21:22:22

支持向量机算法(一):像讲故事一样讲明白它的原理及实现奥秘-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、高斯核函数的核函数宽度σ。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2279068.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LLM - 大模型 ScallingLaws 的迁移学习与混合训练(PLM) 教程(3)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/145212097 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Scalin…

数据可视化:让数据讲故事的艺术

目录 1 前言2 数据可视化的基本概念2.1 可视化的核心目标2.2 传统可视化手段 3 数据可视化在知识图谱中的应用3.1 知识图谱的可视化需求3.2 知识图谱的可视化方法 4 数据可视化叙事:让数据讲故事4.1 叙事可视化的关键要素4.2 数据可视化叙事的实现方法 5 数据可视化…

数据库开发支持服务

文章目录 前言适用产品服务范围前提条件责任矩阵交互项目 服务流程交付件项目完成标志 前言 数据库开发支持服务是为了达成客户业务系统开发、测试、上线运行提供的具体技术支撑,内容包括数据库开发指导、性能调优、第三方平台对接支持、应用对接与上线支持等。数据…

2024年,我的技术探索与成长之路

2024年,我的技术探索与成长之路 2024年已经过去,作为一名技术爱好者和写作者,我回顾了过去一年在博客上记录的点滴,感慨良多。这一年,我不仅见证了技术的飞速发展,也在不断学习和实践中找到了自己的成长方向…

机器学习经典无监督算法——聚类K-Means算法

目录 算法原理 算法步骤 算法API 算法导入 API参数理解 算法实现 算法原理 Kmeans 算法是一种无监督的聚类算法,目的是将数据集中的样本划分到 K 个不同的簇中。 聚类:将数据集中相似的数据点归为一组或一个簇的过程。 数据集:一组相…

【MySQL索引:B+树与页的深度解析】

文章目录 MySQL索引:B树与页的深度解析1. 索引使用的数据结构——B树1.1 B树介绍1.2 B树的特点1.3 B树和B树的对比 2. MySQL中的页2.1 页的介绍2.2 页主体2.3 页目录2.4 B树在MySQL索引中的应用 MySQL索引:B树与页的深度解析 在MySQL数据库中&#xff0…

新阿里云买服务器配置需手动配置80端口

新买阿里云服务器需手动配置80,端口才可以访问nginx CentOS系统 安装nginx 1. 安装 Nginx yum install nginx 2. 启动 Nginx 服务 systemctl start nginx 3. 修改默认网页 cd /usr/share/nginx/ echo "666" >index.html cat index.html 访问ngin最后…

机器学习——什么是代价函数? 下

“上次课讲了机器学习的模型表示,讲了一个线性模型的例子,那怎样在可能的拟合直线里选择一条最合适的呢?有没有数学的方法让这个直线合适还是不合适变得可以量化呢?这就要说代价函数了。” 本次课前半段内容非常简单,带领我们一起复习初中平面几何的知识,后半段给出了代价…

LeetCode - #187 Swift 实现重复的DNA序列

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…

ReactiveReactor Core

Reactive&Reactor Core 一、概述1、问题2、优势3、发展 二、Reactive Streams1、依赖2、API 三、Project Reactor1、概述2、并发模型3、入门1、依赖2、Flux和Mono3、空流&错误流 4、订阅响应式流1、常见订阅2、自定义订阅 5、API1、index2、timestamp3、any4、map5、fi…

STL容器-- list的模拟实现(附源码)

STL容器-- list的模拟实现(附源码) List的实现主要考察我们对list这一容器的理解,和代码的编写能力,通过上节对list容器的使用,我们对list容器已经有了一些基本的了解,接下来就让我们来实现一些list容器常见…

【转】厚植根基,同启新程!一文回顾 2024 OpenHarmony 社区年度工作会议精彩瞬间

在数字化浪潮奔腾不息的今天,开源技术已成为推动科技创新与产业发展的强大引擎。2025年1月10日-11日,OpenAtom OpenHarmony(开放原子开源鸿蒙,以下简称“OpenHarmony”或“开源鸿蒙”)社区2024年度工作会议于深圳盛大启…

蓝桥杯备考:堆和priority queue(优先级队列)

堆的定义 heap堆是一种特殊的完全二叉树,对于树中的每个结点,如果该结点的权值大于等于孩子结点的权值,就称它为大根堆,小于等于就叫小根堆,如果是大根堆,每个子树也是符合大根堆的特征的,如果是…

力扣682

from typing import Listclass Solution:def calPoints(self, operations: List[str]) -> int:a [] # 用于存储有效得分的列表for op in operations:if op.isdigit() or (op[0] - and op[1:].isdigit()): # 如果是整数(包括负数)a.append(int(op)…

考研计算机组成原理——零基础学习的笔记

第一章 研究计算机硬件的学科。 1.计算机系统概述 计算机系统硬件软件(系统软件:比如操作系统、数据库管理系统、标准程序库等,应用软件:QQ等) 1.2计算机的层次结构 1.2.1计算机硬件的基本组成 冯诺伊曼计算机&a…

海康工业相机的应用部署不是简简单单!?

作者:SkyXZ CSDN:SkyXZ~-CSDN博客 博客园:SkyXZ - 博客园 笔者使用的设备及环境:WSL2-Ubuntu22.04MV-CS016-10UC 不会吧?不会吧?不会还有人拿到海康工业相机还是一脸懵叭?不会还有人…

计算机网络 (49)网络安全问题概述

前言 计算机网络安全问题是一个复杂且多维的领域,它涉及到网络系统的硬件、软件以及数据的安全保护,确保这些元素不因偶然的或恶意的原因而遭到破坏、更改或泄露。 一、计算机网络安全的定义 计算机网络安全是指利用网络管理控制和技术措施,保…

STM32 FreeRTOS中断管理

目录 FreeRTOS的中断管理 1、STM32中断优先级管理 2、FreeRTOS任务优先级管理 3、寄存器和内存映射寄存器 4、BASEPRI寄存器 5、FreeRTOS与STM32中断管理结合使用 vPortRaiseBASEPRI vPortSetBASEPRI 6、FromISR后缀 7、在中断服务函数中调用FreeRTOS的API函数需注意 F…

操作系统 期末重点复习

操作系统 期末重点复习 必会 课后题摘要 第二章: 在操作系统中为什么要引入进程概念?它会产生什么样的影响? 为了使程序在多道程序环境下能并发执行,并对并发执行的程序加以控制和描述,在操作系统中引入了进程概念。影响: 使程…

7.5.4 MVCC优化测试

作者: h5n1 原文来源: https://tidb.net/blog/4e02d900 1. 背景 由于MVCC 版本数量过多导致rocksdb扫描key数量过多影响SQL执行时间是tidb经常出现问的问题,tidb也一直在致力于优化该问题。 一些优化方式包括比: (1) 从传统…