几何分布的期望和方差公式推导_GPR(高斯过程回归)详细推导

article/2025/8/27 15:26:17

GPR(高斯过程回归)详细推导

一、综述

GPR来源于线性模型,有两种方式可以推导出GPR,一种是weight space view,另外一种是function space view。两者考察方式假设不同,关注的对象不同,但是最后导出的结果是相同的。其中,function view的推导方式更加简单,GPR最终的为了实现回归,即已知X,y,x*,求y*。最终的推导出的公式如下:

71df57f722aeb3c20aa7bf888bda09ad.png

X,y是已知的数据,我们要求未知数据x*处的函数值,K是核函数。我们接下来会从weight space view和function space view两种方式推导出GPR。最后一部分是GPR的算法流程图。

参考资料:

1.《Gaussian Processes for Machine Learning》

2. https://www.bilibili.com/video/BV1aE411o7qd?p=114

3. https://zhuanlan.zhihu.com/p/75589452 (python的代码演示,包含可视化)

4. python的GPy库和MATLAB中的ooDACE里面集成有GPR

二、weight space view(将w看作变量)

我们考虑下面一个问题:

1fc32f364117431fe30ea69ce1d5d4d2.png

这是一个线性模型,GPR的想法就是把w看做正态分布的随机变量,求出了w的分布,就知道了y的分布。这里的ε是噪声,在推导中是必须的。如果把

ε=0就是一个无噪的预测,考虑到ε的影响就是一个有噪声的预测。

整个推导分成三部分:

1.已知w的先验分布,通过更多的数据(X,y)求得w的后验分布

2.已知w的后验分布,就能求得f*的概率分布(可以简单地理解为用

来代替)

3.将f*概率分布中均值和方差写成核函数的形式,这个形式与function space view推导出的结果一致,完成!

注:本文的所有推导前面是推导的主干部分,细致的证明在后面。

2.1 w的后验分布

如果我们已经知道了w的确定值,要预测xi处的函数值yi可以表达如下:

2b6b95245301e409878b2c08888ce853.png

上述公式写出了某一点的预测值yi,如果有多个点的值需要预测,将每个点的值看作是独立的,可以得到

75c30399d81cb5219234f8faf1bbc002.png

由于我们不知道w的分布是怎样的,我们可以假设w的先验为,p是代表先验prior的意思。

9ab306d67100beb3bf5cf75020c2cedf.png

这里的p(y|X)是marginal likelihood, GPR中的超参数调节就是使得marginal likelihood最大!


http://chatgpt.dhexx.cn/article/UaPhem7e.shtml

相关文章

C/C++ :Sizeof 的用法

Sizeof有以下特点: Sizeof是C/C中的一个运算符,不是一个函数,返回值为size_tsizeof不能被编译成机器码,编译过程中就会计算sizeof的具体值,然后用值替换掉sizeof ()。所以可以用sizeof() 来定义数组的维数。sizeof ()…

C语言中sizeof用法

sizeof()简单介绍 (一)基本概念 sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 (二)使用方法 1、用于数据类型 sizeof使用形式&#x…

【C语言】如何正确使用sizeof

sizeof用过吧?你肯定用过,至少你刚开始学C或者C的时候,学到类型这一节,你一定会写如下代码测试每个类型的长度。 printf("%d", sizeof(int));printf("%d", sizeof(char));printf("%d", sizeof(shor…

Sizeof的用法;他是一个函数吗?

1.一直以来以为sizeof是一个函数&#xff0c;看过c语言深度剖析才知道&#xff0c;sizeof是一个骗子&#xff0c;它伪装的很好~~~ 以下我们用实际代码来告诉你它其实是 关键字 #include<stdio.h> int main() { int i 0; printf("%d %d %d\n",sizeof(int)…

c语言—常见字符串函数与sizeof详解

1.sizeof使用 a.代码1 int main() {int a 0;int arr[] { 1,2,3,4 };printf("%d\n", sizeof(a));printf("%d\n", sizeof a);printf("%d\n", sizeof(&a));//表示地址的大小printf("%d\n", sizeof(int));printf("%d\n"…

sizeof函数的用法

sizeof函数的用法&#xff1a; 1、sizeof()函数是用来计算变量所占内存空间的大小&#xff0c;单位是字节&#xff08;byte&#xff09; 举例如下&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include <stdio.h>//sizeof函数的用法 //sizeof()函数是用来计算变量所占…

C/C++ | sizeof()函数

C语言中 判断数据类型长度符的关键字 用法 sizeof (类型说明符) sizeof 表达式 定义 sizeof是C/C中的一个操作符&#xff08;operator&#xff09;&#xff0c;简单的说其作用就是返回一个对象或者类型所占的内存字节数。 MSDN上的解释为&#xff1a; The sizeof keyword…

开发人员必知!什么是Scrum敏捷开发?

什么是Scrum敏捷开发 Scrum是敏捷开发的一种,是一种以人为本,迭代式增量软件开发的过程,以英式橄榄球争球队形(Scrum)为名,因此可以想象,整个团队是高效而富有激情的。以人为本,即Scrum开发特别强调沟通,要求团队所有人员都坐着一起工作,通过高效的沟通解决问题。 S…

Scrum敏捷开发框架

Scrum 是一个用于开发和维持复杂产品的框架 &#xff0c;是一个增量的、迭代的开发过程。在这个框架中&#xff0c;整个开发过程由若干个短的迭代周期组成&#xff0c;一个短的迭代周期称为一个Sprint&#xff0c;每个Sprint的建议长度是2到4周(互联网产品研发可以使用1周的Spr…

Scrum敏捷开发实战分享(上篇):方法介绍、敏捷团队和敏捷流程

一、方法介绍 先从一则故事说起&#xff1a; 一天&#xff0c;一头猪和一只鸡在路上散步 鸡对猪说&#xff1a;“嘿&#xff0c;伙计&#xff0c;我们合伙开一家餐馆怎么样&#xff1f;” 猪看了一下鸡说&#xff1a;“好主意&#xff0c;那我们给它取什么名字呢&#xff…

什么是Scrum敏捷开发?

什么是敏捷开发&#xff1f; 敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。 怎么理解呢&#xff1f;首先&#xff0c;我们要理解它不是一门技术&#xff0c;它是一种开发方法&#xff0c;也就是一种软件开发的流程&#xff0c;它会指导我们用规定…

Scrum敏捷开发基础知识篇

Scrum 的定义 Scrum ( 名词): Scrum 是一个框架&#xff0c;在此框架中人们可以解决复杂的自适应难题&#xff0c;同 时也能高效并创造性地交付可能最高价值的产品。 Scrum 是: • 轻量的 • 易于理解的 • 难以精通的 Scrum 是一个框架&#xff0c;自上世纪 90 年代初以来&…

小团队SCRUM敏捷开发项目管理

概述 单团队敏捷开发主要是针对10人以下、只有一个Scrum团队的小型产品或项目的敏捷开发。 对于小型团队来说&#xff0c;在Leangoo中创建一个单团队敏捷开发项目就可以很好地支持团队产品或项目的开发。 适用场景 适用于单个团队进行Scrum敏捷开发协作&#xff0c;Leangoo项目…

实施Scrum敏捷开发的关键要素

一、敏捷开发由来 2001年2月11日至13日&#xff0c;美国犹他州瓦萨奇山雪鸟滑雪胜地&#xff0c;17个人聚到一起&#xff0c;试图找到软件开发的共识&#xff0c;最终的成果就是《敏捷软件开发宣言》。参会者们包括来自于极限编程、Scrum、DSDM、自适应软件开发、水晶系列、特征…

SCRUM敏捷开发教程

大家好&#xff0c;我是煎饼哥&#xff0c;本期向大家介绍一个关于敏捷开发的方法&#xff0c;叫做scrum&#xff0c;相信资深的产品经理都接触过类似的项目管理方法。 scrum敏捷开发&#xff0c;是一个美国统计学教授记录了多年工作经验&#xff0c;总结出来的一套简单易懂的开…

Scrum敏捷开发模式

前言 我的个人博客 最近报名参加了微信小程序应用开发赛&#xff0c;也是作为走向职场前的一次锻炼&#xff0c;为了模拟企业开发的流程&#xff0c;我们团队决定使用敏捷开发模式来管理项目。这篇文章&#xff0c;是对在近些天来网上学习到的Scrum敏捷开发模式的总结。 软件…

无向图的邻接表

如何根据无向图画出邻接表呢&#xff1f; 比如&#xff1a; 第一排的v1&#xff0c;与v2和v4相连&#xff0c;因此两个黄色方框内的数字分别代表v2和v4的下标&#xff1b; 第二排的v2&#xff0c;与v1、v3和v5相连&#xff0c;因此三个绿色方框内的数字分别代表v1和v3和v5的…

C++实现的邻接表

1. 在学习图的存储方式中&#xff0c;邻接矩阵和邻接表是两种比较常用的存储图的方式&#xff0c;下面使用的是C语言实现的邻接表 2. 具体的实现过程如下&#xff1a; ① 首先使用结构体声明图的结构体&#xff0c;图中顶点的结构体&#xff0c;以及指向下一条边的结构体&…

图的存储--邻接表

邻接表既适用于存储无向图&#xff0c;也适用于存储有向图。邻接表常用于稀疏图的存储。 邻接表存储图主要在于将图的各顶点建立一个链表&#xff0c;链表记录该顶点的邻接点的在数组的位置。 #define MAX_VERTEX_NUM 10 // 最大顶点数 #define INF 32767 // 不邻接 typedef…

有向图的邻接矩阵、邻接表和逆邻接表

1、如何根据有向图画出邻接矩阵&#xff1f; 如图&#xff1a; v1指向v2和v3&#xff0c;在矩阵中v1指向v2、v3的表示标1。 注意&#xff1a; v1指向v2在矩阵中是用竖列的v1对应横行的v2 2、如何根据有向图画出邻接表呢&#xff1f; 注意&#xff1a; 画有向图的邻接表时…