深入解析高斯过程:数学理论、重要概念和直观可视化全解

与其他算法相比,高斯过程不那么流行,但是如果你只有少量的数据,那么可以首先高斯过程。在这篇文章中,我将详细介绍高斯过程。并可视化和Python实现来解释高斯过程的数学理论。

多元高斯分布

多元高斯分布是理解高斯过程所必须的概念之一。让我们快速回顾一下。如果你已经熟悉多元高斯分布,可以跳过这一部分。

多元高斯分布是具有两个以上维度的高斯分布的联合概率。多元高斯分布具有以下的概率密度函数。

x 是具有 D × 1 维度的输入数据,μ 是具有与 x 相同维度的均值向量,Σ 是具有 D × D 维度的协方差矩阵。

多元高斯分布具有以下重要特性:

  1. 多元高斯分布的边缘分布仍然遵循高斯分布。
  2. 多元高斯分布的条件分布仍然遵循高斯分布。

让我们通过可视化来检验这些概念。假设 D 维数据遵循高斯分布。对于特性1,当我们将输入数据维度 D 分为前 L 维和其余的 D-L=M 维时,我们可以如下描述高斯分布。

那么,当我们对x₁的分布进行边缘化时,x₁的概率分布可以写成:

根据公式(1),在进行边缘化时,我们可以取消其他变量。上图表展示了二维高斯分布的情况。边缘化分布映射到每个轴上;其形式是高斯分布。当我们根据一个轴切割多元高斯分布时,截面的分布仍然遵循高斯分布。

对于特征 2,我们使用相同的 D 维多元高斯分布和两部分划分的输入数据 x₁ 和 x₂。多元高斯分布的条件概率可以写为:

上图显示了二维高斯分布(等高线)和条件高斯分布(虚线)。在每种条件下,高斯分布的形状是不同的。

线性回归与维度诅咒

在深入研究高斯过程之前,首先需要说明线性回归模型的一个主要缺点。高斯过程与这一概念密切相关,并能克服这个缺点。

让我们回顾一下线性回归模型。线性回归模型可以使用基函数 𝝓(x) 灵活表达数据。

对于基函数,我们可以使用非线性函数,例如多项式项或余弦函数。因此通过将非线性基函数应用于 x,线性回归模型可以把握非线性关系。例如下入显示了使用径向基函数时的一个示例情况。

它能够把握复杂的数据结构。但我们仍然称之为线性回归模型,因为从参数 w 的角度看,这个方程仍然满足线性关系。我们也可以像多元线性回归一样推导参数。以下方程式是线性回归模型的矩阵和线性代数形式。我们假设有 N 个数据点和 p+1 个参数。

简化后

在将基函数应用于每个输入数据后,矩阵 𝚽 的值变成常数。这不是很像多元线性回归吗?实际上,参数的解析推导是相同的。

这里有一个陷阱,即线性回归模型在公式(4)中假设一个独立变量。因此当输入数据维度的数量增加时,参数的数量会呈指数级增长。如果我们增加基函数的数量,可以获得模型的灵活性,但计算量会不切实际地增加。这个问题被称为维度诅咒。有没有方法可以在不增加计算量的情况下提高模型的灵活性呢?可以应用高斯过程定理。下一节将介绍什么是高斯过程。

高斯过程的数学理论

上面已经看到,当参数数量增加时,线性回归模型存在维度诅咒问题。解决这个问题的方法是对参数进行期望处理,并创建一个不需要计算参数的情况。这是什么意思呢?继续上面的线性回归模型,公式如下。

现在我们假设参数 w 遵循高斯分布,输出 y 也将遵循高斯分布,因为矩阵 𝚽 只是一个常数值矩阵。我们假设参数遵循以下高斯分布:

可以计算出输出分布的参数如下:

y的分布如下:

可以通过取其期望来取消参数的计算。因此即使有无限多的参数,它们也不会影响计算。x 和 y 之间的这种关系遵循高斯过程。高斯过程的定义是:

高斯过程是具有无限多参数的多元高斯分布。公式(7)指的是根据给定数据从高斯过程中得到的边缘高斯分布。它源于边缘元高斯分布仍然遵循高斯分布的特性。通过充分利用高斯过程,在考虑无限维度参数的同时构建模型。

这里还有一个问题,如何选择矩阵 𝚽?当关注上述公式中的协方差矩阵部分并将其设置为 K 时,每个元素可以写成:

根据公式(9),协方差矩阵的每个元素都是 𝟇(xᵢ) 和 𝟇(xⱼ) 的内积的常数倍。由于内积类似于余弦相似性,当 xᵢ 和 xⱼ 相似时,公式(9)的值会变大。

为了满足协方差矩阵对称、正定且具有逆矩阵的特性,需要适当选择 𝟇(x)。为了实现这些特性,可以使用核函数来表示 𝟇(x)。

使用核函数的一个好处是,可以通过核函数获取 𝟇(x) 的内积,而无需显式计算 𝟇(x)。这种技术被称为核技巧。下面我们总结一些最常用的核函数:

高斯核

线性核

周期核(又称exp - sin平方核)

上面的可视化展示了使用每个核函数对一维高斯过程的采样。可以看到相应的核函数的特征。

最后让我们回顾一下高斯过程。使用核函数,可以重新写定义为:

高斯过程回归

最后我们将高斯过程应用于回归。

1、如何对高斯过程模型进行拟合和推理

假设有N个输入数据x和对应的输出数据y。

为简单起见我们对输入数据x应用归一化进行预处理,这意味着x的平均值为0。如果x和y的关系如下,f服从高斯过程。

所以输出y遵循以下多元高斯分布。

在拟合过程中,只需要通过核函数计算协方差矩阵,输出 y 分布的参数被确定为恰好为1。除了核函数的超参数外,高斯过程没有训练阶段。

在推理过程中,由于高斯过程没有像线性回归模型那样的权重参数,所以需要重新拟合(包括新数据)。但是可以利用多元高斯分布的特性来节省计算量。

设m个新数据点。

新数据点的分布也遵循高斯分布,因此我们可以将其描述为:

还记得最前面的公式(2),条件多元高斯分布的参数。

将此公式代入式(11),得到的参数为:

这是高斯过程回归模型的更新公式。当我们想要从中采样时,我们使用由Cholesky分解导出的下三角矩阵。

以上就是所有高斯过程的数学推导。但是在实际使用时不需要从头开始实现高斯过程回归,因为Python中已经有很好的库。

在将介绍如何使用Gpy库实现高斯过程。

2、高斯过程模型用于一维数据

我们将使用一个由带有高斯噪声的正弦函数生成的示例数据:

 # Generate the randomized sample
 
 X = np.linspace(start=0, stop=10, num=100).reshape(-1, 1)
 y = np.squeeze(X * np.sin(X)) + np.random.randn(X.shape[0])
 y = y.reshape(-1, 1)

我们使用 RBF 核,因为它非常灵活且易于使用。我们使用GPy,只需几行代码就可以声明 RBF 核和高斯过程回归模型。

 # RBF kernel
 kernel = GPy.kern.RBF(input_dim=1, variance=1., lengthscale=1.)
 
 # Gaussian process regression using RBF kernel
 m = GPy.models.GPRegression(X, y, kernel)

上面的x点是输入数据,蓝色曲线表示该点的高斯过程回归模型的预期值,浅蓝色阴影区域表示 95% 的置信区间。

数据点较多的区域具有较窄的置信区间,而数据点较少的区域则具有较宽的区间。

3、多维数据的高斯过程模型

我们将使用scikit-learn中的糖尿病数据集。

 # Load the diabetes dataset and create a dataframe
 diabetes = datasets.load_diabetes()
 df = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)

这个数据集已经经过了预处理(归一化),所以可以直接实现高斯过程回归模型。

 # dataset
 X = df[['age', 'sex', 'bmi', 'bp']].values
 y = df[['target']].values
 
 # set kernel
 kernel = GPy.kern.RBF(input_dim=4, variance=1.0, lengthscale=1.0, ARD = True)
 
 # create GPR model
 m = GPy.models.GPRegression(X, y, kernel = kernel)

正如你所看到的,还有很大的改进空间。比如说更改内核的选择或超参数优化,或者收集更多的数据。

总结

本文讨论了高斯过程的数学理论和实际实现。当拥有少量数据时,这种技术是非常有帮助的。但是由于计算量取决于数据的数量,它不适合大数据。

https://avoid.overfit.cn/post/db2546da62d249fa9265f26e9f25bb87

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

图书管理系统(附源码)

前言:前面一起和小伙伴们学习了较为完整的Java语法体系,那么本篇将运用这些知识连串在一起实现图书管理系统。 目录 一、总体设计 二、书籍与书架 书籍(Book) 书架(Booklist) 三、对图书的相关操作 I…

java将html转成图片

java 将html转成图片 1.导入jar2.代码3.展示结果4.注意事项 最近有一个需求需要根据指定的样式生成图片&#xff0c;使用java原生技术有些麻烦&#xff0c;所以上网搜了下案例&#xff0c;最后发现最好用的还是html2image&#xff0c;这里进行简单总结下。 1.导入jar <!-- 用…

metasfresh开源ERP系统Windows开发环境配置参考

目录 概述 开发环境 配置过程 后端启动 前端启动 登陆系统 其他 概述 Compiere闭源之后衍生出了Admpiere等若干开源的产品&#xff0c;metasfresh就是其中之一&#xff0c;metasfresh截至发稿时在GitHub上已有64000多次的修改提交&#xff0c;而且仍在维护中&#xff0…

Python应用开发——30天学习Streamlit Python包进行APP的构建(12)

st.checkbox 显示复选框部件。 Function signature[source] st.checkbox(label, valueFalse, keyNone, helpNone, on_changeNone, argsNone, kwargsNone, *, disabledFalse, label_visibility"visible") Returns (bool) Whether or not the checkbox is checked. …

Sentinel解决雪崩问题

我们或多或少都对雪崩问题有点了解&#xff0c;在微服务系统中&#xff0c;各个微服务互相调用&#xff0c;关系错综复杂&#xff0c;如果其中一个微服务挂了或者处理消息的速度大幅下降&#xff0c;需要被处理的消息越积越多&#xff0c;那么影响的不仅仅是本微服务的功能&…

算法入门(上)

什么是算法&#xff1f; 算法&#xff08;Algorithm&#xff09;是解决特定问题求解步骤的描述&#xff0c;在计算机中表现为指令的有限序列&#xff0c;并且每条指令表示一个或多个操作。 给定一个问题&#xff0c;能够解决这个问题的算法是有很多种的。算式中的问题是千奇百怪…

C语言单链表的算法之插入节点

一&#xff1a;访问各个节点中的数据 &#xff08;1&#xff09;访问链表中的各个节点的有效数据&#xff0c;这个访问必须注意不能使用p、p1、p2&#xff0c;而只能使用phead &#xff08;2&#xff09;只能用头指针不能用各个节点自己的指针。因为在实际当中我们保存链表的时…

后端之路第三站(Mybatis)——XML文件操作sql

一、XML映射文件是啥 前面我们学过了在Mapper接口用注解的方式来操作sql语句 那么XML映射文件就另一种操作sql语句的方法 为什么还要有这么个玩意&#xff1f; 我简单说就是&#xff1a;如果有的sql特别复杂的话&#xff0c;比如需要【动态sql】的话&#xff0c;就得用到XM…

数据可视化期末总结

期末考试重点&#xff08;世界上最没意义的事情&#xff09; 选择 p8 数据可视化的标准&#xff1a; 实用、完整、真实、艺术、交互&#xff08;性&#xff09; p21 色彩三属性 色相、饱和度、亮度 p23 视觉通道的类型&#xff1a; 记得色调是定性 p39 散点图&#xff08;二维…

GIT-LFS使用

0.前言 目前git仓库有很多很大的文件需要管理&#xff0c;但是直接上传&#xff0c;每次clone的文件太大&#xff0c;所有准备使用git-lfs解决。 1、下载和安装 Git LFS 1.1、直接下载二进制包&#xff1a; Releases git-lfs/git-lfs GitHub 安装 Git LFS sudo rpm -ivh…

Leica Cyclone 3DR2024 一款功能强大的点云建模软件下载License获取

Leica Cyclone 3DR 2024 是一款功能强大的点云建模软件&#xff0c;使用旨在为用户提供全面的点云管理、自动化的点云分析&#xff0c;结合强大的建模&#xff0c;在一个直观友好的环境中&#xff0c;专注的完成挑战&#xff0c;提高生产力&#xff0c;轻松创建并交付专业的成果…

杨幂跨界学术圈:内容营销专家刘鑫炜带你了解核心期刊的学术奥秘

近日&#xff0c;知名艺人杨幂在权威期刊《中国广播电视学刊》上发表了一篇名为《浅谈影视剧中演员创作习惯——以电视剧<哈尔滨一九四四>为例》的学术论文&#xff0c;此举在学术界和娱乐圈均引起了广泛关注。该期刊不仅享有极高的声誉&#xff0c;还同时被北大中文核心…

Data-Driven Reinforcement Learning for Robotic Manipulation

意思是 不同的任务以及机器人都有单独的数据和模型 未来需要整合 一个大的数据集包含所有的 然后训练一个大模型 以后具体的任务只需要针对这个模型进行微调 challenge bootstrapping with large data 2 3 4 高清图补充

【C++】using namespace std 到底什么意思

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文作为 JohnKi 的学习笔记&#xff0c;引用了部分大佬的案例 &#x1f4e2;未来很长&a…

【SGX系列教程】(二)第一个 SGX 程序: HelloWorld,linux下运行

文章目录 0. SGX基础原理分析一.准备工作1.1 前提条件1.2 SGX IDE1.3 基本原理 二.程序设计2.1 目录结构2.2 源码设计2.2.1 Encalve/Enclave.edl:Enclave Description Language2.2.2 Enclave/Enclave.lds: Enclave linker script2.2.3 Enclave/Enclave.config.xml: Enclave 配置…

ctfshow-web入门-命令执行(web59-web65)

目录 1、web59 2、web60 3、web61 4、web62 5、web63 6、web64 7、web65 都是使用 highlight_file 或者 show_source 1、web59 直接用上一题的 payload&#xff1a; cshow_source(flag.php); 拿到 flag&#xff1a;ctfshow{9e058a62-f37d-425e-9696-43387b0b3629} 2、w…

MathType7.6专业数学公式编辑器!与Word、PPT等常用软件无缝对接。

MathType&#xff0c;一款专业的数学公式编辑器&#xff0c;以其强大的功能和友好的用户界面&#xff0c;在科研、教学等领域广受欢迎。它支持丰富的数学符号和公式模板&#xff0c;满足不同用户的需求。同时&#xff0c;MathType还提供了多种输出格式&#xff0c;方便与其他文…

3ds Max导出fbx贴图问题简单记录

1.前言 工作中发现3ds Max导出的fbx在其它软件&#xff08;Autodesk viewer&#xff0c;blender&#xff0c;navisworks&#xff0c;FBXReview等&#xff09;中丢失了部分贴图&#xff0c;但导出的fbx用3ds Max打开却正常显示。 fbx格式使用范围较广&#xff0c;很多常见的三…

如何用Go语言,实现基于宏系统的解释器?

目录 一、Go语言介绍二、什么是宏系统三、什么是解释器四、如何用Go语言实现一个基于宏系统的解释器&#xff1f; 一、Go语言介绍 Go语言&#xff0c;又称为Golang&#xff0c;是一种由谷歌公司开发并开源的编程语言。Go语言的设计目标是提高程序员的生产力&#xff0c;同时具…

树莓派开发之文件传输

文章目录 一、简介使用U盘传输文件使用SD卡传输文件使用Xftp 7传输文件 二、 总结 一、简介 在树莓派开发中经常会用到文件传输&#xff0c;下面介绍几种树莓派文件传输的几种方法。 使用U盘传输文件 &#xff08;1&#xff09;复制所需传输文件到U盘 &#xff08;2&#…