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

一、综述

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

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看作变量)

我们考虑下面一个问题:

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

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

整个推导分成三部分:

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

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

来代替)

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

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

2.1 w的后验分布

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

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

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

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

由于p(y|X)与w无关,我们把w看作变量,p(y|X)是一个常量,因此

所以即为我们要求的后验概率。随着数据的增多,后验概率会逐渐地逼近w的真实概率。

证明部分:

(2-2)想要求yi的概率密度函数,可以通过概率分布的微分来求得。

所以对概率分布函数求导即可得到概率密度函数:

(2-5)这个公式为贝叶斯公式,用条件概率证明即可。

X为常量,先不看X,根据条件概率,则

(2-7)这个等式的证明不复杂,两边展开对应相等即可。上述等式成立,常数可以不用看,只要指数部分相等即可,因为常数可以通过概率密度积分为1这个条件来得到。上式等价于证明下式

所以等式左边=等式右边,得证!

2.2 f*的概率分布

我们已知了w的后验分布,结合线性关系,就能知道预测点x*的函数值

从可以看出,预测值实际上就是在w的基础上均值乘以x*,方差乘以x*Tx,这有专门的定理可以证明,一步得出,详细推导过程在本节最后。

由于原来是基底是x本身,拟合你能力有限,为了提高模型的描述能力,我们可以选择某种函数把输入的D维空间映射到N维空间,即:

注意到,我们把w看成变量的时候,phi(x)是常数,该模型对于w而言仍然是线性的,以上的结论仍然可以用。因此:

这是我们想要得到的内容:对f*的预测,但还不是最终的形式,因为此时它跟phi(x)还有关系。为了简便,我们还需做转换

证明部分:

(2-9)有一个定理可以直接证明:

2.3 核函数形式

(2-11)和(2-12)完全相同,只是换了一个形式而已,但是这样就能得到我们想要的核函数形式!

定义核函数:

所以上式可以改写为:

因为Σp为正定矩阵,所以

这样就定义了一个内积形式,这种方法被称作kernel trick。

证明部分:

三、function space view(将f看作多维随机变量)

1.对于高斯过程的基本认识

定义:高斯过程是一组随机变量的组合,任意有限个变量都服从联合高斯分布。

为了推导出GPR,我们仍然假设用贝叶斯线性回归模型和w的先验

这样就能求出均值和方差

协方差函数,即核函数,我们经常取squared exponential

2.高斯回归推导

重新整理一下,可得:

这就变成了一个已知联合高斯分布,求条件概率。这个问题有标准解法,直接套用公式即可,详细推导过程在后面(我们假设均值为0 ):

考虑到y是f(x)加上噪声,则分布为

如果噪声为0,即为noise-free的预测:

推导完成!

证明部分:

定理证明:

证明这个定理使用的是构造法,还需要用到上一章提到的一个定理,会用两次,在这里我重新写一遍:

可以根据上面上式来求得xb|a,,因为求的是条件概率,此时和a有关的量都可以看作已知量,所以:

得证!

四、GPR算法流程图

GPR的算法流程可以从上述公式中做出说明:

在GPR建模中核函数里面的参数称为超参数,调节这些超参数的标准就是最大化marginal likelihood p(y|X)。

五、数学基础

python 高斯烟羽模型_GPR(高斯过程回归)详细推导相关推荐

  1. python高斯噪声怎么去除_高斯过程和高斯过程回归

    本文未经允许禁止转载,谢谢合作. 本文我们介绍高斯过程及其在机器学习中应用的一个例子--高斯过程回归. 高斯过程在语音合成中有广泛的应用,我计划在之后的文章中介绍一些应用,但本节我们重点讨论相关的基础 ...

  2. 《统计学习方法》—— 逻辑斯谛回归 与 最大熵模型 的介绍以及详细推导

    前言 在<统计学习方法>第二版的第6章,作者将逻辑斯谛回归与最大熵这两个模型放在一起讲,初看令人困惑.但是看到后面才明白,这是作者为了介绍以似然函数为目标函数的最优化问题的解法. 当一个最 ...

  3. 【机器学习基础】数学推导+纯Python实现机器学习算法13:Lasso回归

    Python机器学习算法实现 Author:louwill 第13讲和第14讲我们来关注一下回归模型的两个变种模型.本节我们要介绍的是基于L1正则化的Lasso模型,下一节介绍基于L2正则化的Ridg ...

  4. 高斯过程回归python_基于python的高斯过程回归训练集数据扩充

    我正在用scikit学习研究高斯过程回归问题.为了进行预测,我有这样的数据集,它包含传感器在三维坐标系中的10个不同位置:例如Sensor1 coords: [[ 30.1678 -173.569 7 ...

  5. 烟囱排放污染物烟羽扩散模型

    功能:烟囱排放污染物烟羽扩散模型 邯郸纬度 = 36度 太阳高度角(中午12:00) = 90-abs(当地纬度-太阳直射点纬度) 日出.日落的太阳高度角=0,中午12:00的太阳高度角最大 < ...

  6. Python集成机器学习:用AdaBoost、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化

    最近我们被客户要求撰写关于集成机器的研究报告,包括一些图形和统计输出. Boosting 是一类集成机器学习算法,涉及结合许多弱学习器的预测. 视频:从决策树到随机森林:R语言信用卡违约分析信贷数据实 ...

  7. 基于Python的随机森林(RF)回归与多种模型超参数自动优化方法

      本文详细介绍基于Python的随机森林(Random Forest)回归算法代码与模型超参数(包括决策树个数与最大深度.最小分离样本数.最小叶子节点样本数.最大分离特征数等等)自动优化代码.    ...

  8. 高斯过程分类 matlab,matlab 高斯过程回归模型 matlab Gaussian process regression model

    [实例简介] 高斯过程回归及分类的代码,内容全,有实例,注释清晰.包括分类系列和预测回归系列,值得感兴趣的同学学习借鉴.里面有对应的数据和demo程序,程序可运行,MATLAB2014a下测试通过,其 ...

  9. Python实现Stacking回归模型(随机森林回归、极端随机树回归、AdaBoost回归、GBDT回归、决策树回归)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 Stacking通常考虑的是异质弱学习器(不同的学习算法被组合在 ...

最新文章

  1. Sentinel v1.4.2 发布,更好用的集群限流功能
  2. pycharm设置回退功能
  3. 微软云平台媒体服务实践系列 1- 使用静态封装为iOS, Android 设备实现点播(VoD)方案...
  4. POJ 3069 Saruman's Army(贪心)
  5. JSP 与 Servlet重要部分
  6. 如何零代码制作日报、周报管理系统?
  7. 思科CCNA考试流程-ielab
  8. Ant Design Upload 文件上传功能
  9. python批量修改word文档页眉页脚
  10. 视频贴片广告有哪些形式,视频贴片广告展示形式如何?
  11. B站“崩溃”始末 2021.07.13 我们是这样崩的
  12. 【问题解决】Ubuntu无法进入图形页面,全屏出现OK,而且屏幕不停闪烁
  13. mysql 主从 只读,mysql主从复制(从库只读)
  14. 【深度学习模型】讲讲横扫nlp任务的BERT模型
  15. 分享一个碧蓝航线立绘的提取与合成方案
  16. 判断两个单链表是否相交及找到第一个交点
  17. Facebook购买匿名操作系统漏洞,协助FBI抓捕犯罪者
  18. c++内存释放的几种方法
  19. python flask简单使用
  20. js 延时执行 比如 sleep(1000) 意味着等待1000毫秒

热门文章

  1. Boost Asio总结(4) io_service
  2. java结丹期(14)----javaweb(cookiesession)
  3. shell之$@和$*的区别
  4. [问答]-EL1t和EL1h中的后缀t和h分别是什么意思
  5. python常用指令速查
  6. 汇编语言快速入门学习笔记
  7. 认证篇——消息认证码
  8. Kali 渗透测试—Metasploit
  9. shellcode模板(使用hash获取API)
  10. 2020-12-6(从反汇编理解指针和引用的区别)