1.7. 高斯过程(Gaussian Processes)
针对机器学习的高斯过程(Gaussian Processes for Machine Learning,即 GPML) 是一个通用的监督学习方法,主要被设计用来解决 回归 问题。 它也可以扩展为 概率分类(probabilistic classification),但是在当前的实现中,这只是 回归 练习的一个后续处理。
GPML的优势如下:
- 预测是对观察值的插值(至少在普通相关模型上是的).
- 预测是带有概率的(Gaussian)。所以可以用来计算经验置信区间和超越概率 以便对感兴趣的区域重新拟合(在线拟合,自适应拟合)预测。
- 多样性: 可以指定不同的线性回归模型 linear regression models 和相关模型 correlation models 。 它提供了普通模型,但也能指定其它静态的自定义模型
GPML的缺点如下:
- 不是稀疏的,它使用全部的样本/特征信息来做预测。
- 多维空间下会变得低效 – 即当特征的数量超过几十个,它可能确实会表现很差,而且计算效率下降。
- 分类只是一个后处理过程, 意味着要建模, 首先需要提供试验的完整浮点精度标量输出 来解决回归问题。
要感谢高斯的预测的属性,已经有了广泛应用,比如:最优化和概率分类
1.7.1. Examples
1.7.1.1. 用一个回归样例来开场
比如说,我们要代替函数:math:g(x) = x sin(x)。首先,要在一系列设计好的试验上 对这个函数求值。 然后,我们定义了一个GaussianProcess模型,它的回归模型和相关模型可能会通过附加的kwargs来指明,并调用模型来拟合数据。 根据实例提供的参数的数量,拟合程序可能依靠参数的最大似然估计或者是就使用给定的参数本身。
>>> import numpy as np >>> from sklearn import gaussian_process >>> def f(x): ... return x * np.sin(x) >>> X = np.atleast_2d([1., 3., 5., 6., 7., 8.]).T >>> y = f(X).ravel() >>> x = np.atleast_2d(np.linspace(0, 10, 1000)).T >>> gp = gaussian_process.GaussianProcess(theta0=1e-2, thetaL=1e-4, thetaU=1e-1) >>> gp.fit(X, y) GaussianProcess(beta0=None, corr=<function squared_exponential at 0x...>, normalize=True, nugget=array(2.22...-15), optimizer='fmin_cobyla', random_start=1, random_state=... regr=<function constant at 0x...>, storage_mode='full', theta0=array([[ 0.01]]), thetaL=array([[ 0.0001]]), thetaU=array([[ 0.1]]), verbose=False) >>> y_pred, sigma2_pred = gp.predict(x, eval_MSE=True)
1.7.1.2. 拟合噪声数据
当要拟合的数据有噪声时,高斯过程模型能够通过用指定每个点的噪声方差来使用。
GaussianProcess
接收一个 nugget
参数,这个参数会被加到训练数据相关矩阵的对角线上: 一般来说,这是Tikhonov正则化 的其中一种类型。 在平方指数(squared-exponential SE)相关函数的特殊情形下,这个正则相当于是指定了输入的误差方差。 即
在 nugget
和 corr
设置合适的情况下,高斯过程可以鲁棒地从噪声数据中恢复出一个基本函数:
其它样例
- Gaussian Processes classification example: exploiting the probabilistic output
1.7.2. 数学 公式
1.7.2.1. 初始假设
假设一个人要对一个计算机实验的输出建模,比如一个数学函数:
GPML 开始会假设这个函数是 高斯过程 的一个条件样本轨道,而 G 另外被假定为下面这样:
这里 是一个线性回归模型,而 是一个零均值高斯过程带一个全静态协方差函数
是它的方差,而 是相关函数,只取决于每个样本之间的相对距离的绝对值。可能有点 featurewise (这就是静态假设)。
根据这个基本的公式,请注意,GPML 不过是基本最小二乘线性回归的一种扩展:
除了额外假设的一些样本间由相关函数决定的空间相干性(相关性)之外,实际上,普通最小二乘会假设 相关模型 是这样一个模型: 当 时为 0 ,不等时为 dirac*(狄拉克)相关模型( 有时候在克里金插值方法里被称作 *nugget 相关模型 )。
1.7.2.2. 最佳线性无偏预测(BLUP,The best linear unbiased prediction)
现在来推导样本轨道:math:g 在在观测条件下的*最佳线性无偏预测*:
它是来源于它的*给定属性*:
- 它是线性的 (观察值的一个线性组合)
- 它是无偏的
- 是最佳地 (就均方误差来说)
所以最优权重向量 就是如下约束优化问题等式的解:
用拉格朗日方法重写这个约束优化问题,并进一步的看,要满足一阶最优条件,就会得到一个用来预测的解析形式的表达式--完整的证明见参考文献。
最后,BLUP(最佳线性无偏预测)表现为一个的高斯随机变量,均值是:
方差是:
这里我们引入:
- 相关矩阵,由自相关函数和内置的参数 定义:
- 待预测点和DOE(试验设计)的一系列点之间交叉相关向量:
- 回归矩阵(例如,当 是一个多项式,就是范得蒙矩阵(Vandermonde)):
- 最小二乘法回归权重 :
- 和这些向量:
切记,高斯过程预测器的概率结果是完全解析的,并主要依赖于基本的线性代数操作。
更准确来说,预测的均值是两个简单线性组合的和(点积),方差需要是两个矩阵的逆,但相关矩阵可以使用Cholesky分解算法来分解。
1.7.2.3. 经验最佳线性无偏预测(EBLUP,The empirical best linear unbiased predictor)
直到如今, 自相关模型和回归模型都是假设给定的。然而实际上,不能够提前知道是这些模型的,因此要为这些模型 相关性模型(Correlation Models) 做(有动机的)经验选择。
假设已经选了一些模型,接下来应该估计那些在 BLUP 中仍然未知的参数。
这么做,需要用一系列提供的观察值加上一些推理技巧。
目前的实现是基于 DACE 的 Matlab 工具箱,使用了 最大似然估计 技术-- 完整的方程参见参考文献中的 DACE 手册。在自相关参数上的最大似然估计问题变成了一个的全局最优化问题。
在目前的实现里,全局最优是通过 scipy.optimize 里的 fmin_cobyla 优化函数的均值得到解的(译者:COBYLA :约束优化的线性逼近)。
但是在各向异性的情况下,提供了基于Welch’s componentwise 优化算法的实现,参见参考文献。
更多更全面的关于机器学习的高斯过程理论方面的知识,请参考如下的参考文献:
References:
- DACE, A Matlab Kriging Toolbox S Lophaven, HB Nielsen, J Sondergaard 2002
- Screening, predicting, and computer experiments WJ Welch, RJ Buck, J Sacks, HP Wynn, TJ Mitchell, and MD Morris Technometrics 34(1) 15–25, 1992
- Gaussian Processes for Machine Learning CE Rasmussen, CKI Williams MIT Press, 2006 (Ed. T Diettrich)
- The design and analysis of computer experiments TJ Santner, BJ Williams, W Notz Springer, 2003
1.7.3. 相关性模型(Correlation Models)
常见的相关性模型符合一些著名的 SVM 的核,因为它们大多是建立在在等效假设上的。 它们必须满足Mercer条件(参考 mercer定理),并且要额外保持稳定性(译者:此处stationary不知如何翻译)。但是切记,选择相关模型,应该切合由观察得到的原始试验的已知属性。 例如:
- 如果原始实验已知是无穷可微的(光滑的),那么应该使用 平方指数相关模型*(*squared-exponential correlation model)
- 如果不是,那么应该使用 指数相关模型*(*exponential correlation model)
- 也要注意,有种相关模型将可导性的度作为输入:就是Matern 相关模型,但是这里还有实现出来(TODO)
更多关于选择相关模型的方法的讨论细节,参见参考中Rasmussen & Williams的书。
1.7.4. 回归模型
常见的线性回归模型涉及到 0阶(常数)、1阶、和二阶多项式函数。但是可以以 Python 函数的形式指定自己的多项式函数--接收特征 X 作为输入并返回一个包含着函数集的值的向量。
唯一的约束是函数的数量必须不能超过观察信号的数量,所以底层的回归问题不是 欠定 的
1.7.5. 实现细节
目前的实现基于DACE Matlab 工具箱的一个翻译。
References:
- DACE, A Matlab Kriging Toolbox S Lophaven, HB Nielsen, J Sondergaard 2002,
- W.J. Welch, R.J. Buck, J. Sacks, H.P. Wynn, T.J. Mitchell, and M.D. Morris (1992). Screening, predicting, and computer experiments. Technometrics, 34(1) 15–25.
1.7. 高斯过程(Gaussian Processes)相关推荐
- python 高斯过程_高斯过程 Gaussian Processes 原理、可视化及代码实现
本文搬运于个人博客,欢迎点击这里查看原博文. 高斯过程 Gaussian Processes 是概率论和数理统计中随机过程的一种,是多元高斯分布的扩展,被应用于机器学习.信号处理等领域.本文对高斯过程 ...
- 高斯过程(Gaussian Processes)原理
高斯过程(Gaussian Processes, GP)是概率论和数理统计中随机过程的一种,是多元高斯分布的扩展,被应用于机器学习.信号处理等领域.博主在阅读了数篇文章和博客后才算是基本搞懂了GP的原 ...
- 高斯过程 (Gaussian Process)
本博客转载自https://blog.csdn.net/u010016927/article/details/76856036 **针对机器学习的高斯过程(Gaussian Process for M ...
- 高斯过程是什么?从视觉上理解机器学习中的高斯过程——Gaussian Process
--如何将一组小型构建块转变为解决回归问题的灵活的工具. 目录 Introduction 简介 Multivariate Gaussian distributions 多元高斯分布 Marginali ...
- 跟着Leo机器学习:sklearn之 Gaussian Processes
1.7. Gaussian Processes sklearn 框架 函数导图 1.7.1. Gaussian Process Regression (GPR) from sklearn.datase ...
- sklearn Gaussian Processes(高斯过程)
高斯过程回归(GPR) GPR示例 具有噪声级估计的 GPR和内核岭回归的比较 高斯过程分类(GPC) GPC示例 GPC的概率预测 GPC在XOR数据集上的图示 虹膜数据集上的高斯过程分类(GPC) ...
- 论文笔记 Dependent Gaussian Processes 相关高斯过程
0.摘要 高斯过程通常根据它们的协方差函数进行参数化. 然而,这使得处理多个输出变得困难,因为确保协方差矩阵是正定的是有问题的. 另一种表述是将高斯过程视为与平滑内核卷积的白噪声源,并改为对内核进行参 ...
- 论文笔记 Inference in Deep Gaussian Processes using Stochastic Gradient Hamiltonia使用随机梯度哈密顿量蒙特卡罗推理深度高斯过程
使用随机梯度哈密顿量蒙特卡罗推理深度高斯过程 0.摘要 深度高斯过程 (DGP) 是高斯过程的层次概括,它将经过良好校准的不确定性估计与多层模型的高度灵活性相结合. 这些模型的最大挑战之一是精确推断是 ...
- 论文笔记 Deep Gaussian Processes for Calibration of Computer Models 用于校准计算机模型的深度高斯过程
0.摘要 黑盒计算机模型的贝叶斯校准为量化模型参数和预测的不确定性提供了一个既定的框架.传统的贝叶斯校准涉及计算机模型的仿真和使用高斯过程的加性模型差异项:然后使用马尔可夫链蒙特卡罗进行推理.这种校准 ...
最新文章
- Docker 镜像小结---操作指令介绍(七)
- 查找SQL SERVER 2005 IO过高的数据库
- 走马观花:Visual Studio Code Name Orcas Mar07CTP /体验DLINQ
- (模拟+floyd)Saving James Bond
- Android 系统性能优化(78)---如何优化您的 Android 应用 (Go 版)
- Linux系统C/C++通用错误码实现模板
- 华为暂没有推出鸿蒙手机计划;苹果否认 iPhone 辐射超标;Kotlin 1.3.50 发布 | 极客头条...
- rsync 安装 配置 实例
- Windows平台下的session0创建进程的问题与解决办法
- redis 数据类型详解 以及 redis适用场景场合
- 面向项目(五)—— #pragma
- React-引入图片的方法
- 天平游码读数例题_使用天平游码时的读数方法-word
- 目标检测+图像分割项目
- java--for循环执行的顺序
- 谷歌:昔日屠龙者正在成为“恶龙”?
- SAP OOALV 动态设置单元格可否编辑
- [绍棠] PhotoKit介绍
- 批量检测链接是否有效
- openssl sha1 16进制数据