深入了解核函数:连接机器学习与统计学的桥梁

news2024/11/14 18:33:29

引言

在机器学习中,支持向量机(SVM)是一种强大的监督学习模型,特别适合处理分类问题。然而,SVM最初被设计用于线性可分的数据集,现实中的数据往往不是线性可分的。为了解决这一问题,我们引入了核函数的概念。核函数通过将数据映射到高维特征空间,使得在新的特征空间中数据可以线性可分,从而提升了模型的表现。

核函数(Kernel Function)是机器学习和统计学中的一个核心概念,尽管其重要性不言而喻,但它的定义和应用往往令人困惑。在多种应用中,核函数的不同形式和解释让初学者感到难以把握。然而,核函数实际上是一个非常美丽且强大的数学工具,可以统一不同机器学习任务中的多种概念和方法。

本文将带你从非参数模型开始,逐步深入讨论核函数的不同类型及其在统计学和机器学习中的应用,旨在为你建立一个能够连接所有环节的直觉。

线性不可分问题与特征空间映射

在许多现实世界的应用中,数据往往不是线性可分的。例如,著名的“异或”问题就是一个典型的线性不可分问题。在二维空间中,找不到一个直线可以将这类数据正确划分。因此,我们需要将这些数据从原始空间映射到一个更高维的特征空间中,使其在新空间中变得线性可分。

假设我们有一个映射函数 ϕ ( x ) \phi(x) ϕ(x),它可以将输入向量 x x x从原始空间映射到一个高维特征空间中。在这个新的特征空间中,我们可以找到一个超平面来正确划分数据。模型的表达式可以表示为:

f ( x ) = w T ϕ ( x ) + b f(x) = w^T\phi(x)+b f(x)=wTϕ(x)+b

其中, w w w b b b是模型的参数

在特征空间中,支持向量机的优化问题可以表示为:
在这里插入图片描述
其对偶问题则为:

在这里插入图片描述
在这个对偶问题中,我们会发现需要计算样本在高维特征空间中的内积 ϕ ( x i ) T ϕ ( x j ) \phi(x_i)^T\phi(x_j) ϕ(xi)Tϕ(xj)。然而,由于特征空间的维度可能非常高甚至是无穷维,直接计算内积是非常困难的。

从非参数模型到核函数

在统计学和机器学习中,模型的选择和构建是一个核心问题。传统的参数模型,例如线性回归,假设数据遵循某种固定形式的分布,模型结构也是预定义的。这些模型通常需要对数据分布的形式作出假设。然而,在实际应用中,数据的分布可能复杂且难以描述,这时,非参数模型便成为一种有效的替代方案。

非参数模型的优势

非参数模型是那些不具有随输入大小而增长的参数的统计模型。请注意,非参数模型并不意味着“零参数模型”,而是使用一组固定的参数(也称为超参数),这些参数不会随着输入维度的增加而增加。例如,在普通的线性回归模型中,模型的参数 θ \theta θ决定了超平面的斜率,而超平面的大小则取决于输入 x x x的维数:

y = θ T x + ϵ y=\theta^Tx+\epsilon y=θTx+ϵ

其中, θ \theta θ是参数向量, x x x是输入特征向量, ϵ \epsilon ϵ是误差项。对于固定的 θ \theta θ,模型的复杂度不会随着输入数据的大小而变化。

非参数模型的灵活性使得模型可以更好地适应复杂数据。例如,核密度估计(KDE)和 k-最近邻(k-NN)等方法都是典型的非参数模型。通过这些方法,模型能够捕捉数据的局部结构而不必预设全局形式。

然而,非参数模型在处理高维数据时可能会遇到“维度灾难”的问题

为了解决维度灾难这一问题,同时保留非参数模型的灵活性,核函数(Kernel Function)应运而生。

在这里插入图片描述

核函数的引入

核函数是一种将数据从低维空间映射到高维空间的工具,从而在高维空间中使得数据更加容易被线性分割。具体来说,核函数的作用是计算两个样本在高维特征空间中的内积,而无需显式地进行映射。这种方法极大地减少了计算复杂度,同时保留了模型的灵活性。

核函数 k ( x i , x j ) k(x_i,x_j) k(xi,xj) 是一个定义在输入空间上的函数,能够直接计算样本在特征空间的内积,即:

k ( x i , x j ) = ϕ ( x i ) T ϕ ( x j ) k(x_i,x_j)=\phi(x_i)^T\phi(x_j) k(xi,xj)=ϕ(xi)Tϕ(xj)

有了核函数,我们可以避免显式地进行高维映射,只需要在原始空间中计算核函数即可。因此,对偶问题可以重写为:

在这里插入图片描述

最终的分类决策函数为:
在这里插入图片描述

核函数的性质与核函数定理

核函数的选择对支持向量机的性能有着至关重要的影响。那么,什么样的函数可以作为核函数呢?

核函数定理给出了核函数的基本性质:令 χ \chi χ为输入空间, k ( ⋅ , ⋅ ) k(·,·) k(⋅,⋅)是定义在 χ × χ \chi \times \chi χ×χ上的对称函数,则 k k k是核函数当且仅当对于任意数据 D = x 1 , x 2 , . . . , x m D=x_1,x_2,...,x_m D=x1,x2,...,xm,其对应的“核矩阵” K K K是半正定的。

核矩阵 K K K的定义为:
在这里插入图片描述
上述定理表明,只要一个对称函数所对应的核矩阵是半正定的,它就可以作为核函数使用。

核密度估计(KDE)与核回归

核密度估计(KDE)

核密度估计(Kernel Density Estimation, KDE)是一种非参数方法,用于估计随机变量的概率密度函数。给定一个样本集 { x 1 , x 2 , . . . , x n } \lbrace x_1,x_2,...,x_n\rbrace {x1,x2,...,xn},核密度估计的形式为:

f ^ ( x ) = 1 n h ∑ i = 1 n K ( x − x i h ) \hat f(x) = \frac{1}{nh}\sum_{i=1}^nK(\frac{x-x_i}{h}) f^(x)=nh1i=1nK(hxxi)

其中, K ( ⋅ ) K(⋅) K()是核函数, h h h是带宽参数(也称为平滑参数),它控制核函数的宽度。带宽 h h h的选择对估计结果影响很大,过大或过小的 h h h都会导致估计不准确。

KDE 的直观意义是通过在每个样本点上放置一个核函数来估计整个数据的概率密度。常用的核函数包括高斯核、拉普拉斯核等。

核回归

核回归(Kernel Regression)是一种非参数回归方法,用于估计输入变量 X X X和输出变量
Y Y Y之间的关系。给定一个输入值 x x x,核回归估计值为:

y ^ ( x ) = ∑ i = 1 n K h ( x , x i ) y i ∑ i = 1 n K h ( x , x i ) \hat y(x)=\frac{\sum_{i=1}^nK_h(x,x_i)y_i}{\sum_{i=1}^nK_h(x,x_i)} y^(x)=i=1nKh(x,xi)i=1nKh(x,xi)yi

其中, K h ( x , x i ) K_h(x,x_i) Kh(x,xi)是在输入 x x x处使用带宽 h h h的核函数对数据点 x i x_i xi进行加权。

核回归通过对输入空间中的每个点进行加权平均,得到估计值。这种方法的优势在于它无需假设数据的全局结构,只需局部地进行估计,因而具有较高的灵活性。

Mercer 核函数与高维点积

Mercer 核函数

Mercer 核函数理论为核函数的构建提供了理论基础。Mercer 定理指出,一个对称函数 k ( x , z ) k(x,z) k(x,z)是一个合法的核函数,当且仅当对于任意数据集 { x 1 , x 2 , . . . , x m } \lbrace x_1,x_2,...,x_m\rbrace {x1,x2,...,xm},其核矩阵 K K K是半正定的:

在这里插入图片描述
即,对任意的非零向量 α ∈ R m \alpha \in R^m αRm,有:

α T K α > = 0 \alpha^TK\alpha>= 0 αTKα>=0

这个定理确保了只要核函数满足 Mercer 定理的条件,就可以被用作支持向量机、核密度估计等算法中的核函数。

高维点积

核函数的一个重要应用是将数据从低维空间映射到高维空间,使得原本线性不可分的问题在高维空间中变得线性可分。高维点积即是在高维空间中计算样本点之间的内积,这一过程通过核函数隐式地进行,无需明确计算映射后的高维向量。

以高斯核为例,其形式为:
k ( x , z ) = e x p ( − ∣ ∣ x − z ∣ ∣ 2 2 σ 2 ) k(x,z)=exp(-\frac{||x-z||^2}{2\sigma^2}) k(x,z)=exp(2σ2∣∣xz2)

其中, σ \sigma σ是带宽参数。通过高斯核,可以将数据映射到一个无限维空间,在该空间中执行线性操作。

常见的核函数类型

在实际应用中,我们可以选择不同类型的核函数来适应不同的数据分布。以下是几种常见的核函数:

  1. 线性核(Linear Kernel)
    线性核是最简单的核函数,对应的是直接在原始空间中的内积运算:
    k ( x , x ′ ) = x T x ′ k(x,x^\prime)=x^Tx^\prime k(x,x)=xTx

线性核函数特别适合用于线性可分的数据集,或者当我们对特征进行大量预处理使其接近线性可分时。

其优缺点如下:

  • 优点:模型简单、速度快、可解释性好;
  • 缺点:无法处理线性不可分的数据集。
  1. 多项式核(Polynomial Kernel)
    多项式核通过增加输入样本的维度,使得在高维空间中数据更可能线性可分:

k ( x , x ′ ) = ( γ x T x ′ + ζ ) q k(x,x^\prime)=(\gamma x^Tx^\prime+\zeta)^q k(x,x)=(γxTx+ζ)q

其中 ζ \zeta ζ是一个常数, q q q是多项式的阶数。当 q = 1 q=1 q=1时,多项式核退化为线性核。

优缺点:

  • 优点: 能够处理非线性问题,并可以通过调整阶数 q q q来控制模型的复杂度。
  • 缺点: 数值计算的稳定性较差,尤其在高维空间中需要选择多个超参数。
  1. 高斯核(Gaussian Kernel)或RBF核
    高斯核是最常用的非线性核函数之一,适用于处理非线性可分的数据:

k ( x , x ′ ) = e x p ( − γ ∣ ∣ x − x ′ ∣ ∣ 2 ) k(x,x^\prime)=exp(-\gamma||x-x^\prime||^2) k(x,x)=exp(γ∣∣xx2)

其中超参数 γ > 0 \gamma >0 γ>0控制高斯函数的方差, γ \gamma γ取值越大,径向基函数的径向越小,模型越容易过拟合:
在这里插入图片描述
当超参数 γ \gamma γ趋于无穷大时,高斯核趋近于:

在这里插入图片描述

优缺点:

  • 优点: 高斯核是一种无限维度的核函数,能够有效处理复杂的非线性问题,数值稳定性好,只需调整一个超参数。
  • 缺点: 可解释性较差,计算复杂度较高,容易过拟合。

特征变换:
假设 γ = 1 \gamma=1 γ=1则高斯核的特征变换可通过 Taylor 展开式表示为:

在这里插入图片描述
对应的特征变换 χ ( x ) \chi(x) χ(x)为:
在这里插入图片描述

  1. 拉普拉斯核 (Laplacian Kernel)
    定义:

KaTeX parse error: Expected group after '^' at position 33: …xp(-\frac{||x-x^̲^\prime||}{\sig…

特点: 拉普拉斯核与高斯核类似,但它基于欧几里德距离而非平方距离,通常用于对数据点分布更敏感的场景。

  1. Sigmoid 核 (Sigmoid Kernel)

定义:

k ( x , x ′ ) = t a n h ( β x T x ′ + θ ) , β > 0 , θ < 0 k(x,x^\prime) = tanh(\beta x^Tx^\prime+\theta),\beta>0,\theta<0 k(x,x)=tanh(βxTx+θ)β>0,θ<0

特点: 该核函数源于神经网络中的激活函数,因此具有一定的生物启发性,适合处理类似逻辑回归的问题。

  1. 核函数的线性组合与直积

核函数的选择

核函数的选择是支持向量机模型中的一个关键步骤。如果选择的核函数不合适,可能会导致模型在特征空间中无法正确划分数据,从而影响最终的分类效果。

在实践中,选择核函数时可以遵循以下经验:

  • 线性核:适用于高维稀疏数据,如文本分类。
  • 多项式核:适用于当特征空间与原始数据存在多项式关系时。
  • 高斯核:适用于大多数非线性问题,尤其是当数据没有明显的线性关系时。

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

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

相关文章

第十一届MathorCup高校数学建模挑战赛-C题:基于有限差分法的散热机理建模与海底数据中心优化设计

目录 摘 要 1 问题重述 1.1 问题背景 1.2 问题重述 2 问题分析 3 模型假设 4 符号说明 5 我们的工作 6 模型的建立与求解 6.1 建模前的准备 6.2 问题一的建模与求解 6.3 问题二的建模与求解 6.4 问题三的建模与求解 6.5 问题四的建模与解决 7 结果检验及误差分析 8 模型评价 9 …

[Modbus] Modbus协议开发-基本概念(一)

历史 ModBus官网是Modicon&#xff08;Modicon早年已被施耐德收购&#xff09;公司为其PLC通讯而开发的一种通讯协议。 概述 通过Modbus协议&#xff0c;控制器之间、或控制器经由网络&#xff08;如以太网&#xff09;可以和其它设备之间进行通信。 优点 免费、好用、成熟…

springboot项目搭建集成 redis/跨域/远程请求

目录 一&#xff0c;创建maven项目 1&#xff0c;左上角file > new > maven project 2&#xff0c;next 到 创建 Group id 和 Artifact id​编辑​编辑 二&#xff0c;配置springboot 1&#xff0c;配置pom文件&#xff0c; 2&#xff0c;创建启动类 3&#xff…

五段式S型算法笔记

设定已知&#xff1a;v0 vmax j&#xff1b; 减加速段&#xff1a;tm到tmax 加加速段&#xff1a;0到tm tm&#xff1a;中点时间 vm&#xff1a;中点速度 vmax&#xff1a;最大速度&#xff1b; j加速度的斜率 -j相反加速度的斜率 这个图首先说明&#xff…

大数据面试SQL(六):共同使用ip用户检测问题

文章目录 共同使用ip用户检测问题 一、题目 二、分析 三、SQL实战 四、样例数据参考 共同使用ip用户检测问题 一、题目 现有用户登录日志表&#xff0c;记录了每个用户登录的IP地址&#xff0c;请查询共同使用过3个及以上IP的用户对。 样例数据&#xff1a; 结果数据&…

NSSCTF练习记录:[SWPUCTF 2021 新生赛]jicao

题目&#xff1a; 这段PHP代码的意思是&#xff1a; 对index.php文件进行语法高亮显示&#xff0c;插入flag.php文件&#xff0c;变量id的值为POST传递的值&#xff0c;变量json的值为GET传递的json类型的值。当id值为wllmNB且json中含有键为“x”&#xff0c;值为“wllm”的时…

【Android】安卓四大组件之Service用法

文章目录 使用Handler更新UIService基本特点启动方式非绑定式服务使用步骤 绑定式服务步骤 生命周期非绑定式启动阶段结束阶段 绑定式启动阶段结束阶段 前台Service使用步骤结束结束Service本身降级为普通Service降级为普通Service 使用Handler更新UI 主线程创建Handler对象&a…

文件描述符中设置FD_CLOEXEC的用处

linux中&#xff0c;父进程fork出子进程&#xff0c;子进程本身会继承父进程的所有文件描述符。若子进程再调用exec系列函数转化为新的进程实体&#xff0c;其实父进程的描述符对其没有意义。此时文件上只需要设置FD_CLOEXEC即可。 下面是例子说明&#xff1a; #include <…

vue3、uniapp-vue3模块自动导入

没有使用插件 使用插件,模块自动导入 安装: npm i -D unplugin-auto-importvite.config.js (uniapp没有此文件,在项目根目录下创建) import { defineConfig } from "vite"; import uni from "dcloudio/vite-plugin-uni"; import AutoImport from &qu…

SpringBoot 自定义 Starter 实现

一、定义&#xff0c;什么是Starter SpringBoot Starter 是”一站式服务&#xff08;one-stop service&#xff09;“的依赖 Jar 包&#xff1a; 包含 Spring 以及相关技术&#xff08;比如Redis&#xff09;的所有依赖提供了自动配置的功能&#xff0c;开箱即用提供了良好的…

7. Kubernetes核心资源之Service服务实战

**service分类 : ** **ClusterIP : ** 默认类型&#xff0c;自动分配一个【仅集群内部】可以访问的虚拟IP **NodePort : ** 对外访问应用使用&#xff0c;在ClusterIP基础上为Service在每台机器上绑定一个端口&#xff0c;就可以通过: ipNodePort来访问该服务 **LoadBalanc…

[24年新算法]NRBO-XGBoost回归+交叉验证基于牛顿拉夫逊优化算法-XGBoost多变量回归预测

[24年新算法]NRBO-XGBoost回归交叉验证基于牛顿拉夫逊优化算法-XGBoost多变量回归预测 多输入单输出 程序已调试好&#xff0c;无需更改代码替换数据直接使用&#xff01;&#xff01;&#xff01;数据格式为excel格式&#xff01;如下。 中文注释清晰&#xff0c;图很丰富 …

2. C++的指针作用

目录 1.问题描述及分析 2.结论 不同类型所产生的指针在C语言中有什么作用&#xff1f;带着这个疑问&#xff0c;对C的指针进行简介。 1.问题描述及分析 在如下的一段代码中&#xff0c;分别有4个指针&#xff0c;这四个指针有什么不一样的地方么&#xff1f; class ZooAni…

Unity物理模块 之 ​2D刚体

本文仅作笔记学习和分享&#xff0c;不用做任何商业用途本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正​ 1.刚体是什么 在 Unity 中&#xff0c;刚体&#xff08;Rigidbody&#xff09; 是物理引擎中最基本的组件之一&#x…

Python 函数(2)

2、函数 2.1、函数传递列表 将列表传递给函数后&#xff0c;函数就能直接访问其内容。 下列为一个实例&#xff1a;将一个名字列表传递给一个名为greet_users()的函数&#xff0c;这个函数将会向列表中的每一个元素执行相应的信息。 def greet_users(name):for name in name…

1.2 C 语言开发环境 CLion 的安装(含 Windows 和 Mac )

目录 1 C 语言的由来 2 安装 MinGW 编译器 3 Windows 中安装 CLion 开发环境 3.1 安装 CLion 开发环境 3.2 运行试用 30 天 3.3 新建项目​ 3.​4 激活 3.5 汉化 4 Mac 中安装 Clion 开发环境 4.1 安装 CLion 开发环境 4.2 运行试用 30 天 4.3 新建项目 ​4.4 激活…

RuoYi-Vue源码阅读(三):用户相关模块

文章目录 1 用户角色权限信息 getInfo1.1 后端代码实现步骤1.1.1 获取用户角色权限信息1.1.2 获取用户的角色集合 1.2 前端代码实现步骤 2 获取用户路由信息 getRouters2.1 后端代码实现步骤2.1.1 获取菜单目录2.1.2 构建前端路由所需要的菜单 2.2 前端代码实现步骤 3 参考链接…

设计模式20-备忘录模式

设计模式20-备忘录 动机定义与结构定义结构 C代码推导优缺点应用场景总结备忘录模式和序列化备忘录模式1. **动机**2. **实现方式**3. **应用场景**4. **优点**5. **缺点** 序列化1. **动机**2. **实现方式**3. **应用场景**4. **优点**5. **缺点** 对比总结 动机 在软件构建过…

Redis相关面试题(二)

一、BIT中不同命令使用的场景 Sring Seesion会话业务缓存分布式锁&#xff1a;为了防止用户同时登录多个设备进行操作 Int 计数器限流全局唯一ID Hash 电商购物车 BitMap 用户签到 List 消息队列 ZSet 排行榜 二、什么是缓存击穿&#xff0c;缓存穿透&#xff0c;…

C++--类和对象(一)

C是一个面向对象的编程语言&#xff0c;而面向对象编程有四大特性&#xff1a;封装&#xff0c;抽象&#xff0c;继承&#xff0c;多态。类和对象就是对应其中的封装&#xff0c;在C中将数据和对数据的操作都封装在一个class&#xff08;类&#xff09;的结构体中。 目录 类的…