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

引言

在机器学习中,支持向量机(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.rhkb.cn/news/394468.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

共享之道——享元模式(Python实现)

共享之道——享元模式&#xff08;Python实现&#xff09; 大家好&#xff0c;今天我们继续来讲结构型设计模式&#xff0c;上一期我们介绍了外观模式&#xff0c;这一期我们来讲享元模式&#xff08;Flyweight Pattern&#xff09;。 享元模式&#xff08;Flyweight Pattern…

Bitwise 首席投资官:忽略短期的市场波动,关注加密货币的发展前景

原文标题&#xff1a;《The Crypto Market Sell-Off: What Happened and Where We Go From Here》撰文&#xff1a;Matt Hougan&#xff0c;Bitwise 首席投资官编译&#xff1a;Chris&#xff0c;Techub News 加密货币市场在周末经历了大幅下跌。从上周五下午 4 点到周一早上 7…

优质电器/机械岗位推荐:经验不限大厂直招,薪资最高30K!

本周优质电器/机械岗位推荐&#xff0c;涵盖C、自动化、开发、安卓开发、项目管理等岗位&#xff0c;经验不限&#xff0c;更有大厂直招岗位&#xff0c;薪资最高30K&#xff01;&#xff01; 抓紧投递&#xff0c;早投早入职&#xff01; &#x1f447;点击职位名称查看详情…

PHP + Laravel + RabbitMQ + Redis 实现消息队列 (三) 消费队列在RabbitMQ和redis中的发布和订阅

发布订阅&#xff08;Pub/Sub&#xff09; 对于消息队列传统的模式来说&#xff0c;一个消费者消费一条消息&#xff0c;这条消息被消费之后就不会再次被其它的消费者消费。但是在发布订阅模式中&#xff0c;一条消息是可以被多个消费者消费的&#xff0c;这些消费者其实相当于…

前端构建工具|vite快速入门

认识vite vite组成部分 Vite是一种新型前端构建工具&#xff0c;能够显著提升前端开发体验。它主要由两部分组成&#xff1a; 一个开发服务器&#xff0c;它基于 原生 ES 模块 提供了 丰富的内建功能&#xff0c;如速度快到惊人的 模块热更新&#xff08;HMR&#xff09;。一…

C++——类模板经典案例——自定义通用数组类

案例&#xff1a;自定义数组类 需求&#xff1a; 1&#xff0c;对内置数据及自定义数据类型的数据存储 2&#xff0c;将数组中的数据存储到堆区 3&#xff0c;构造函数中可以存入数组的容量 4&#xff0c;提供对应的拷贝构造函数和运算符重载防止浅拷贝问题的发生 5&#xff0c…

基于Springboot + Vue的宿舍管理系统

前言 文末获取源码数据库 感兴趣的可以先收藏起来&#xff0c;需要学编程的可以给我留言咨询&#xff0c;希望帮助更多的人 精彩专栏推荐订阅 不然下次找不到哟 Java精品毕设原创实战项目 作者的B站地址&#xff1a;程序员云翼的个人空间-程序员云翼个人主页-哔哩哔哩视频 csd…

vue3+axios请求导出excel文件

在Vue 3中使用axios请求导出Excel文件&#xff0c;可以发送一个GET或POST请求&#xff0c;并设置响应类型为blob或arraybuffer&#xff0c;然后使用new Blob()构造函数创建一个二进制文件&#xff0c;最后使用URL.createObjectURL()生成一个可以下载的链接。 先看代码 import…

Stable Diffusion绘画 | 必备插件安装推荐

新手必备安装的插件推荐如下&#xff1a; 汉化语言包&#xff1a;汉化插件GitHub地址&#xff1b;双语对照插件GitHub地址无边图库&#xff1a;无边图库插件GitHub地址ControlNet&#xff1a;已默认安装 插件安装 最推荐的安装方式&#xff1a;通过「可下载」、「从网址安装…

Qt Modbus 寄存器读写实例

一.线圈状态寄存器读写 项目效果如下 1. 写单个寄存器 MODBUS_API int modbus_write_bit(modbus_t *ctx, int coil_addr, int status); int addrui->spinBoxwirte_addr->value();int dataui->spinBoxwirte_data->value();int ret modbus_write_bit(mb,addr,d…

学习c#-4语句 ,条件,循环

代码&#xff1a; string name "小赵"; //条件判断 if (name "小赵") { Console.WriteLine("我是小赵"); } else { Console.WriteLine("我不是小赵"); } // switch条件判断 switch (name) { case "小…

5.3 匿名函数:Python编程中的隐士大师

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 工&#x1f497;重&#x1f497;hao&#x1f497;&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题.…

嵌入式初学-C语言-十七

#接嵌入式初学-C语言-十六# 函数的递归调用 含义&#xff1a; 在一个函数中直接或者间接调用了函数本身&#xff0c;称之为函数的递归调用 // 直接调用a()->a(); // 间接调用a()->b()->a();a()->b()->..->a();递归调用的本质&#xff1a; 本是是一种循环…

【QT】Qt 音视频

Qt 音视频 Qt 音视频1. Qt 音频2. Qt 视频 Qt 音视频 在 Qt 中&#xff0c;音频主要是通过 QSound 类来实现。但是需要注意的是 QSound 类只支持播放 wav 格式的音频文件。也就是说如果想要添加音频效果&#xff0c;那么首先需要将非 wav 格式的音频文件转换为 wav 格式。 通…

JavaWeb之servlet关于Ajax实现前后端分离

一、什么是Ajax: AJAX Asynchronous JavaScript and XML&#xff08;异步的 JavaScript 和 XML&#xff09;。 AJAX 不是新的编程语言&#xff0c;而是一种使用现有标准的新方法。 AJAX 最大的优点是在不重新加载整个页面的情况下&#xff0c;可以与服务器交换数据并更新部…

Nuxt2:强制删除window.__NUXT__中的数据

一、问题描述 在以前的一篇文章《Nuxt3: 强制删除__NUXT_DATA__的一种方式》中曾介绍了在Nuxt3中如何删除存在于页面id为__NUXT_DATA__的script节点中的数据。 此次&#xff0c;Nuxt2与Nuxt3不同在于它的数据是存在于window.__NUXT__&#xff0c;那么该如何处理呢&#xff1f;…

2025深圳国际户外庭院营地用品博览会

2025深圳国际户外庭院营地用品博览会 2025 Shenzhen International Outdoor Courtyard Camping Supplies Expo 时间&#xff1a;2025年02月27-3月01日 地点&#xff1a;深圳会展中心&#xff08;福田馆&#xff09; 详询主办方陆先生 I38&#xff08;前三位&#xff09; …

如何用OceanBase与DataWorks,打造一站式的数据集成、开发和数据服务

导语&#xff1a;在OceanBase 2024年开发者大会的技术生态论坛上&#xff0c;阿里云DataWorks团队的高级技术专家罗海伟&#xff0c;详细阐述了一站式大数据开发治理平台DataWorks的能力&#xff0c;并对于如何基于OceanBase和Dataworks构建一站式数据集成、开发以及数据服务进…

Linux驱动开发—Linux内核定时器概念和使用详解,实现基于定时器的字符驱动

文章目录 内核定时器概念在Linux驱动模块中使用定时器软定时器&#xff08;Soft Timers&#xff09;jiffies 含义高精度定时器&#xff08;High Resolution Timers&#xff09; 实现倒计时字符设备驱动 内核定时器概念 在 Linux 内核中&#xff0c;定时器是用来管理和调度延迟…

8.7-主从数据库的配置+mysql的增删改查

一、mysql环境的配置 1.环境准备 &#xff08;1&#xff09;主数据库 #关闭防火墙 [rootmaster ~]# systemctl stop firewalld#关闭selinux [rootmaster ~]# setenforce 0#下载lrzsz工具 [rootmaster ~]# yum -y install lrzsz#安装rsync [rootmaster ~]# yum -y install rs…