支持向量机 SVM | 非线性可分:核函数

news2025/1/22 23:35:31

目录

  • 一. 情景引入
  • 二. 核函数
    • 1. 核函数的分类
      • 1.1 线性核函数(Linear Kernel)
      • 1.2 多项式核函数(Polynomial Kernel)
      • 1.3 高斯核函数(Radial Basis Function Kernel)
      • 1.4 Sigmoid核函数(Sigmoid Kernel)
    • 2. 核函数小节

前面我们讲述了SVM算法的线性可分问题,即对应硬间隔模型和软间隔模型;下面我们来聊SVM算法的非线性可分问题

	注意:对于完全不可分的数据,SVM硬间隔与软间隔都无法解决

在这里插入图片描述

一. 情景引入

我们在线性回归:多项式扩展篇中,采用多项式扩展的方法,将低维度的数据扩展成为高维度的数据,从而使线性回归模型可以解决线性不可分的问题

以2维空间中的线性不可分为例子:

对于2维线性模型

h θ ( x 1 , x 2 ) = θ 0 + x 1 θ 1 + x 2 θ 2 h_{\theta }(x_{1},x_{2})=\theta _{0} + x_{1}\theta _{1}+x_{2}\theta _{2} hθ(x1,x2)=θ0+x1θ1+x2θ2

( x 1 , x 2 ) (x_{1},x_{2}) (x1,x2)进行2阶多项式扩展:

( x 1 , x 2 ) → 多项式扩展 ( x 1 , x 2 , x 1 2 , x 2 2 , x 1 x 2 ) {(x_{1},x_{2})\overset{多项式扩展}{\rightarrow} (x_{1},x_{2},x_{1}^{2},x_{2}^{2},x_{1}x_{2} )} (x1,x2)多项式扩展(x1,x2,x12,x22,x1x2)

对于5维线性模型

h θ ( x 1 , x 2 ) = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 2 + θ 4 x 2 2 + θ 5 x 1 x 2 h_{\theta }(x_{1},x_{2})=\theta _{0} +\theta _{1}x_{1} +\theta _{2}x_{2} +\theta _{3}x_{1}^{2}+ \theta _{4}x_{2}^{2}+\theta _{5} x_{1}x_{2} hθ(x1,x2)=θ0+θ1x1+θ2x2+θ3x12+θ4x22+θ5x1x2

那么同理,在SVM算法中,我们依然希望通过一种方法,将低维特征数据映射到高维特征数据中,从而解决数据的线性不可分问题

于是我们首先尝试通过多项式扩展的方式解决低维度到高维度映射的问题,为了描述方便,我们来定义一个 ϕ \phi ϕ函数,该函数的作用将数据从低维度映射到高维度中,也就是做多项式扩展;那么对于SVM优化的目标函数,我们就可以得到:
{ min ⁡ 1 2 ∑ i = 1 , i = 1 m β i β j y ( i ) y ( j ) ϕ ( x ( j ) ) ⋅ ϕ ( x ( i ) ) − ∑ i = 1 m β i s . t : ∑ i = 1 m β i y ( i ) = 0 a \left\{\begin{matrix}\min\frac{1}{2}\sum_{i=1,i=1}^{m} \beta _{i}\beta _{j} y^{(i)}y^{(j)}\phi (x^{(j)})\cdot \phi( x^{(i)})-\sum_{i=1}^{m} \beta _{i} \\s.t:\sum_{i=1}^{m} \beta _{i} y^{(i)}=0 \end{matrix}\right.a {min21i=1,i=1mβiβjy(i)y(j)ϕ(x(j))ϕ(x(i))i=1mβis.t:i=1mβiy(i)=0a
0 ≤ β i ≤ C , i = 1 , 2 , . . . , m 0\le \beta _{i}\le C,i=1,2,...,m 0βiCi=1,2,...,m

进一步解释 ϕ ( x ( j ) ) ⋅ ϕ ( x ( i ) ) \phi (x^{(j)})\cdot \phi( x^{(i)}) ϕ(x(j))ϕ(x(i))

首先,明确 x ( j ) , x ( i ) x^{(j)},x^{(i)} x(j)x(i)是向量,这里是向量的点乘
下面我们来举例子:

在这里插入图片描述
是不是觉得3维数据的计算量还能接受?
如果原始数据是10维,20维度,30维呢?
如果有一百万条数据呢?
显然,这样的点乘计算量巨大

二. 核函数

SVM的发明者为了解决上述计算量的问题,发明了核函数

  • 核函数定义
    假设函数Ф是一个低维特征空间到高维特征空间的映射,那么如果存在函数K(x,z), 对于任意的低维特征向量x和z,都有:
    K ( x , z ) = ϕ ( x ) ϕ ( z ) K(x,z) = \phi (x)\phi (z) K(x,z)=ϕ(x)ϕ(z)
    则称函数K为核函数(kernal function)

  • 说人话版本:
    核函数在低维空间上的计算量等价于特征做维度扩展后的点乘的结果;即核函数的作用相当于扩展后再点乘

     	这里需要补充一点
     	对于Ф(从低位映射到高维)而言,多项式扩展只是其中的一种方法
    

即,核函数用低维空间中少量的内积的计算量让模型具有高维空间中的线性可分的优点


首先我们用算式说明:

假设向量 x 1 = ( α 1 , α 2 ) T , x 2 = ( η 1 , η 2 ) T x_{1} =(\alpha _{1}, \alpha _{2})^{T},x_{2} =( \eta _{1}, \eta_{2})^{T} x1=(α1,α2)Tx2=(η1,η2)T

2阶扩展映射到五维空间中,我们可以得到:
ϕ ( x 1 ) ⋅ ϕ ( x 2 ) = α 1 η 1 + α 2 η 2 + α 1 2 η 1 2 + α 2 2 η 2 2 + α 1 α 2 η 1 η 2 \phi (x_{1})\cdot \phi (x_{2})=\alpha _{1}\eta _{1}+ \alpha _{2}\eta_{2}+\alpha _{1}^{2}\eta _{1}^{2}+\alpha _{2}^{2}\eta _{2}^{2}+\alpha _{1}\alpha _{2}\eta _{1}\eta _{2} ϕ(x1)ϕ(x2)=α1η1+α2η2+α12η12+α22η22+α1α2η1η2
而对于K函数的思想,我们可以得到:
( x 1 ⋅ x 2 + 1 ) 2 = 2 α 1 η 1 + 2 α 2 η 2 + α 1 2 η 1 2 + α 2 2 η 2 2 + 2 α 1 α 2 η 1 η 2 + 1 (x_{1}\cdot x_{2}+1)^{2} = 2\alpha _{1}\eta _{1}+ 2\alpha _{2}\eta_{2}+\alpha _{1}^{2}\eta _{1}^{2}+\alpha _{2}^{2}\eta _{2}^{2}+2\alpha _{1}\alpha _{2}\eta _{1}\eta _{2}+1 (x1x2+1)2=2α1η1+2α2η2+α12η12+α22η22+2α1α2η1η2+1

	可以直观的发现,式子的主要区别在系数上
	也就是说:
		只需要乘上一个系数,就可以将五维空间的内积转换成两维空间的内积

下面,我们再用实际数据来具体说明核函数的作用:

假设向量 x 1 = ( 3 , 5 ) x_{1} =(3, 5) x1=(3,5),二阶扩展后得到:3,5,9,25,15
         x 2 = ( 4 , 2 ) x_{2} =( 4,2) x2=(4,2),二阶扩展后得到:4,2,16,4,8

进行二阶扩展时,我们会得到:
ϕ ( x 1 ) ⋅ ϕ ( x 2 ) = 3 ∗ 4 + 5 ∗ 2 + 9 ∗ 16 + 25 ∗ 4 + 15 ∗ 8 = 386 \phi (x_{1})\cdot \phi (x_{2})=3*4+5*2+9*16+25*4+15*8=386 ϕ(x1)ϕ(x2)=34+52+916+254+158=386
( x 1 ⋅ x 2 + 1 ) 2 = ( 3 ∗ 4 + 5 ∗ 2 + 1 ) 2 = 529 (x_{1}\cdot x_{2}+1)^{2} =(3*4+5*2+1)^{2}=529 (x1x2+1)2=(34+52+1)2=529
[ 0.8476 ( x 1 ⋅ x 2 ) + 1 ] 2 = [ 0.8476 ( 3 ∗ 4 + 5 ∗ 2 ) + 1 ] 2 = 386.01 [0.8476(x_{1}\cdot x_{2})+1]^{2} =[0.8476(3*4+5*2)+1]^{2}=386.01 [0.8476(x1x2)+1]2=[0.8476(34+52)+1]2=386.01

1. 核函数的分类

这里我们明确下SVM使用时,需要包含核函数和松弛因子

1.1 线性核函数(Linear Kernel)

	该核函数针对线性可分数据
		即:不需要做扩展,只点乘,其他什么都没做

K ( x , z ) = x ∙ z K(x,z)=x\bullet z K(x,z)=xz

1.2 多项式核函数(Polynomial Kernel)

	γ、r、degree扩展阶数 属于超参,需要调参

K ( x , z ) = ( γ x ∙ z + r ) d K(x,z)=(\gamma x\bullet z+r)^{d} K(x,z)=(γxz+r)d

1.3 高斯核函数(Radial Basis Function Kernel)

	径向基函数核
	γ属于超参,要求大于0,需要调参
		常用核函数

K ( x , z ) = e − γ ∥ x − z ∥ 2 K(x,z)=e^{-\gamma\left \| x-z \right \|^{2} } K(x,z)=eγxz2

1.4 Sigmoid核函数(Sigmoid Kernel)

	γ、r属于超参,需要调参

K ( x , z ) = tanh ⁡ ( γ x ∙ z + r ) K(x,z)=\tanh (\gamma x\bullet z+r) K(x,z)=tanh(γxz+r)

2. 核函数小节

在这里插入图片描述

虽然核函数计算输出的结果与二阶扩展的结果一致,但核函数的价值在于,通过在低维上进行计算,从而达到高维上的分类效果,避免了直接在高维空间中的复杂计算

	核函数的作用:将非线性可分的数据转换为线性可分数据
	
	核函数可以自定义
		核函数必须是正定核函数,任何半正定的函数都可以作为核函数
			Gram矩阵是半正定矩阵:			

在这里插入图片描述

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

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

相关文章

集简云新增通义千问qwen 72b chat、qwen1.5 等多种大语言模型,提升多语言支持能力

通义千问再开源!继发布多模态模型后,通义千问 1.5 版本也在春节前上线。 此次大模型包括六个型号:0.5B、1.8B、4B、7B、14B 和 72B,性能评测基础能力在在语言理解、代码生成、推理能力等多项基准测试中均展现出优异的性能&#x…

个人商城系统开源(登录)

原文地址:个人商城系统开源(登录) - Pleasure的博客 下面是正文内容: 前言 由于近期实在没有什么话题可写和一些有趣的项目教程可以分享。所以我只能决定将我自己亲手编写的一个迷你迷你商城系统进行开源。 也就是放在我博客右边…

【unity实战】事件(Event)的基本实战使用

文章目录 最终效果前言一、素材二、角色金币交互1. 拾取金币2. 显示金币数UI 完结 最终效果 前言 之前我们介绍过委托的用法,具体可以跳转:【unity小技巧】委托(Delegate)的基础使用和介绍 这期来讲讲事件,使用你会发…

IDEA稀奇古怪问题的解决方案

idea在电脑死机重启后,启动项目报错 尝试了各种办法,重新导入项目,删除.idea文件重新导入,把本地代码删除重新pull下来再次导入,均无法解决。而且代码在eclipse中可以正常启动,遂排除代码和网络环境原因。…

【VTKExamples::PolyData】第四十九期 Silhouette

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享VTK样例Silhouette,并解析接口vtkPolyDataSilhouette,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 1. Silhouett…

消息队列实现AB进程对话

进程A代码&#xff1a; #include <stdio.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#include <stdlib.h>#include <string.h>#define MSG_EXCEPT 020000struct msgbuf{long mtype;char mtext[100];};int main(in…

Redis6 搭建主从集群架构

文章目录 搭建Redis主从集群架构1.集群结构2.准备实例和配置3.启动4.开启主从关系5.测试 搭建Redis主从集群架构 安装部署单机版Redis6可参考&#xff1a; 安装部署单机版Redis6 1.集群结构 我们搭建的主从集群结构如图&#xff1a; 我们计划是在一台虚拟机里去部署三个R…

Docker数据卷篇

1. 数据卷&#xff08;容器数据管理&#xff09; 引言&#xff1a;在之前的nginx案例中&#xff0c;修改nginx的html页面时&#xff0c;需要进入nginx内部。并且因为没有编辑器&#xff0c;修改文件也很麻烦。 这就是因为容器与数据&#xff08;容器内文件&#xff09;耦合带…

重新下载各种编辑器、软件

全是资源编辑器&#xff0c;书写&#xff0c;有需要书写资料或者是代码编程的可以找我呀&#xff0c;闲暇时间接一下副业。 git任务也重启了&#xff0c;原家厨房项目也重启了&#xff0c;浓心项目也在重启。如下图 后续再慢慢联系吧&#xff0c;先书写到这里&#xff0c;晚安…

Day29-Ubuntu介绍及企业标准安装实战

Day29-Ubuntu介绍及企业标准安装实战 第1章 Ubuntu Linux系统介绍1.Ubuntu是什么2.Ubuntu Linux基本特点3.为什么要讲Ubuntu&#xff1f;4.Ubuntu服务器版本选择5.如何学习Ubuntu使用6.Linux发展前景说明简介 第2章 Ubuntu安装环境搭建准备第3章 Ubuntu安装实战1. 开机安装Ubun…

【无标题】day6网路

#include<myhead.h> int main(int argc, const char *argv[]) {int workid 0;char name[20] "";double salary 0;sqlite3 *ppDb NULL;//数据库句柄指针//打开数据库&#xff0c;如果数据库不存在&#xff0c;则创建数据库//将数据库句柄由参数2返回if((sql…

JVM工作原理与实战(四十二):JVM常见面试题目

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、JVM常见面试题目 1.请阐述JVM的概念及其核心功能&#xff0c;并简要介绍其组成部分和常用的实现。 2.请阐述Java字节码文件的组成部分。 3.请描述JVM的运行时数据区及其组成部分…

Android中的传感器类型和接口名称

本文将介绍传感器坐标轴、基础传感器和复合传感器&#xff08;动作传感器、姿势传感器、未校准传感器和互动传感器&#xff09;。 1. 传感器坐标轴 许多传感器的传感器事件值在相对于设备静止的特定坐标系中表示。 1.1 移动设备坐标轴 Sensor API 仅与屏幕的自然方向相关&a…

前端将html导出pdf文件解决分页问题

这是借鉴了qq_251025116大佬的解决方案并优化升级完成的&#xff0c;原文链接 1.安装依赖 npm install jspdf html2canvas2.使用方法 import htmlToPdffrom ./index.jsconst suc () > {message.success(success);};//记得在需要打印的div上面添加 idlet dom document.que…

operator-sdk入门(mac)

1. 安装operator-sdk brew install operator-sdk 2. 安装kubebuilder brew install kubebuilder 3.初始化一个operator脚手架 3.1 新建一个文件夹 redis-operator 3.2 执行初始化 operator-sdk init --domain lyl.com --repo github.com 参数介绍 可以通过operator-sdk --…

HTML静态网页成品作业(HTML+CSS)——图书出版社介绍设计制作(6个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有6个页面。 &#x1f3f7;️想要…

idea手动导入插件

idea有时候连接不上 我们去手动下载压缩包 插件网址 选择下载的压缩包导入 导入成功

Intel CPU体系结构

原文来自一文解析&#xff0c;Linux内核——Intel CPU体系结构 本文主要介绍Intel CPU体系结构&#xff0c;以供读者能够理解该技术的定义、原理、应用。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;计算机杂记…

RabbitMQ(任务模型,交换机(广播,订阅,通配符订阅))

一.WorkQueues模型 WorkQueues(任务模式):让多个消费者绑定到一个队列&#xff0c;共同消费队列中的消息。 架构: 所需场景: 当消息处理比较耗时的时候&#xff0c;可能生产消息的速度会远远大于消息的消费速度。长此以往&#xff0c;消息就会堆积越来越多&#xff0c;无法及…

大数据开发-Hadoop之MapReduce

文章目录 MapReduce原理剖析MapReduce之Map阶段MapReduce之Reduce阶段WordCount分析多文件WordCount分析 实战wordCount案例开发 MapReduce原理剖析 MapReduce是一种分布式计算模型,主要用于搜索领域&#xff0c;解决海量数据的计算问题MapReduce由两个阶段组成&#xff1a;Ma…