【Scikit-Learn 中文文档】高斯过程 - 监督学习 - 用户指南 | ApacheCN
中文文档: http://sklearn.apachecn.org/cn/0.19.0/modules/gaussian_process.html
英文文档: http://sklearn.apachecn.org/en/0.19.0/modules/gaussian_process.html
官方文档: http://scikit-learn.org/stable/
GitHub: https://github.com/apachecn/scikit-learn-doc-zh(觉得不错麻烦给个 Star,我们一直在努力)
贡献者: https://github.com/apachecn/scikit-learn-doc-zh#贡献者
关于我们: http://www.apachecn.org/organization/209.html
1.7. 高斯过程
高斯过程 (GP) 是一种常用的监督学习方法,旨在解决*回归问题*和*概率分类问题*。
预测内插了观察结果(至少对于正则核)。
- 预测结果是概率形式的(高斯形式的)。这样的话,
人们可以计算得到经验置信区间并且据此来判断是否需要修改(在线拟合,自适应)
在一些区域的预测值。
- 通用性: 可以指定不同的:ref:内核(kernels)<gp_kernels>。
虽然该函数提供了常用的内核,但是也可以指定自定义内核。
高斯过程模型的缺点包括:
- 它们不稀疏,例如,模型通常使用整个样本/特征信息来进行预测。
- 高维空间模型会失效,高维也就是指特征的数量超过几十个。
1.7.1. 高斯过程回归(GPR)
算法实现是基于 [RW2006] 中的算法 2.1 。除了标准 scikit learn 估计器的 API 之外, GaussianProcessRegressor 的作用还包括:
1.7.2. GPR 示例
1.7.2.1. 具有噪声级的 GPR 估计
该示例说明具有包含 WhiteKernel 的和核(sum-kernel)的 GPR 可以估计数据的噪声水平。 对数边缘似然(LML)景观的图示表明存在 LML 的两个局部最大值。
第一个对应于具有高噪声电平和大长度尺度的模型,其解释数据中噪声的所有变化。
1.7.2.2. GPR 和内核岭回归(Kernel Ridge Regression)的比较
1.7.2.3. Mauna Loa CO2 数据中的 GRR
- 一个长期的,顺利的上升趋势是由一个 RBF 内核来解释的。 具有较大长度尺寸的RBF内核将使该分量平滑; 没有强制这种趋势正在上升,这给 GP 带来了这个选择。 具体的长度尺度和振幅是自由的超参数。
- 季节性因素,由定期的 ExpSineSquared 内核解释,固定周期为1年。 该周期分量的长度尺度控制其平滑度是一个自由参数。 为了使准确周期性的衰减,采用带有RBF内核的产品。 该RBF组件的长度尺寸控制衰减时间,并且是另一个自由参数。
- 较小的中期不规则性将由 RationalQuadratic 内核组件来解释, RationalQuadratic 内核组件的长度尺度和 alpha 参数决定长度尺度的扩散性。 根据 [RW2006] ,这些不规则性可以更好地由 RationalQuadratic 来解释, 而不是 RBF 内核组件,这可能是因为它可以容纳几个长度尺度。
- “noise(噪声)” 一词,由一个 RBF 内核贡献组成,它将解释相关的噪声分量,
在减去目标平均值后最大化对数边际似然率产生下列内核,其中LML为-83.214:
34.4**2 * RBF(length_scale=41.8) + 3.27**2 * RBF(length_scale=180) * ExpSineSquared(length_scale=1.44,periodicity=1) + 0.446**2 * RationalQuadratic(alpha=17.7, length_scale=0.957) + 0.197**2 * RBF(length_scale=0.138) + WhiteKernel(noise_level=0.0336)
因此,大多数目标信号(34.4ppm)由长期上升趋势(长度为41.8年)解释。 周期分量的振幅为3.27ppm,衰减时间为180年,长度为1.44。 长时间的衰变时间表明我们在当地非常接近周期性的季节性成分。 相关噪声的幅度为0.197ppm,长度为0.138年,白噪声贡献为0.197ppm。 因此,整体噪声水平非常小,表明该模型可以很好地解释数据。 该图还显示,该模型直到2015年左右才能做出置信度比较高的预测
1.7.3. 高斯过程分类(GPC)
1.7.4. GPC 示例
1.7.4.1. GPC 概率预测
该示例说明了对于具有不同选项的超参数的RBF内核的GPC预测概率。 第一幅图显示GPC具有任意选择的超参数的预测概率,以及对应于最大LML(对数边缘似然)对应的超参数。
第二幅图显示了内核超参数的不同选择的LML(对数边缘似然),突出了在第一幅图中使用的通过黑点(训练集)选择的两个超参数。
1.7.4.2. GPC 在 XOR 数据集上的举例说明
1.7.4.3. iris 数据集上的高斯过程分类(GPC)
1.7.5. 高斯过程内核
1.7.5.1. 高斯过程内核 API
>>> from sklearn.gaussian_process.kernels import ConstantKernel, RBF >>> kernel = ConstantKernel(constant_value=1.0, constant_value_bounds=(0.0, 10.0)) * RBF(length_scale=0.5, length_scale_bounds=(0.0, 10.0)) + RBF(length_scale=2.0, length_scale_bounds=(0.0, 10.0)) >>> for hyperparameter in kernel.hyperparameters: print(hyperparameter) Hyperparameter(name='k1__k1__constant_value', value_type='numeric', bounds=array([[ 0., 10.]]), n_elements=1, fixed=False) Hyperparameter(name='k1__k2__length_scale', value_type='numeric', bounds=array([[ 0., 10.]]), n_elements=1, fixed=False) Hyperparameter(name='k2__length_scale', value_type='numeric', bounds=array([[ 0., 10.]]), n_elements=1, fixed=False) >>> params = kernel.get_params() >>> for key in sorted(params): print("%s : %s" % (key, params[key])) k1 : 1**2 * RBF(length_scale=0.5) k1__k1 : 1**2 k1__k1__constant_value : 1.0 k1__k1__constant_value_bounds : (0.0, 10.0) k1__k2 : RBF(length_scale=0.5) k1__k2__length_scale : 0.5 k1__k2__length_scale_bounds : (0.0, 10.0) k2 : RBF(length_scale=2) k2__length_scale : 2.0 k2__length_scale_bounds : (0.0, 10.0) >>> print(kernel.theta) # Note: log-transformed [ 0. -0.69314718 0.69314718] >>> print(kernel.bounds) # Note: log-transformed [[ -inf 2.30258509] [ -inf 2.30258509] [ -inf 2.30258509]]
所有的高斯过程内核操作都可以通过 sklearn.metrics.pairwise
来进行互操作,反之亦然。 Kernel
的子类实例可以通过 metric
参数传给 sklearn.metrics.pairwise
中的
pairwise_kernels
。更重要的是,超参数的梯度不是分析的,而是数字,所有这些内核只支持
各向同性距离。该参数 gamma
被认为是一个超参数,可以进行优化。其他内核参数在初始化时直接设置, 并保持固定。
1.7.5.2. 基础内核
ConstantKernel
内核类可以被用作 Product
内核类的一部分, 在它可以对其他因子(内核)进行度量的场景下或者作为更改高斯过程均值的
WhiteKernel
内核类的主要应用实例在于当解释信号的噪声部分时 可以作为内核集合的一部分。通过调节参数 , 该类可以用来估计噪声级别。具体如下所示:
1.7.5.3. 内核操作
1.7.5.4. 径向基函数内核
这个内核是无限可微的,这意味着这个内核作为协方差函数的 GP 具有所有阶数的均方差导数, 因此非常平滑。由RBF内核产生的GP的先验和后验示意图如下所示:
1.7.5.5. Matérn 内核
因为 ,Matérn 内核收敛到 RBF 内核。 当 时,Matérn 内核变得与绝对指数内核相同时,即
特别的,当 时:
和 :
是学习函数的常用选择,并且不是无限可微的(由 RBF 内核假定) 但是至少具有一阶( )或者二阶( )可微性。
通过 灵活控制学习函数的平滑性可以更加适应真正的底层函数关联属性。 通过 Matérn 内核产生的高斯过程的先验和后验如下图所示:
想要更进一步地了解不同类型的Matérn内核请参阅 [RW2006] , pp84。
1.7.5.6. 有理二次内核
从 RBF 内核中产生的高斯过程的先验和后验如下图所示:
1.7.5.7. 正弦平方内核
ExpSineSquared
内核可以对周期性函数进行建模。它由定长参数 以及周期参数 来实现参数化。此时仅支持 标量的各向同性变量。内核公式如下:
从ExpSineSquared内核中产生的高斯过程的先验和后验如下图所示:
1.7.5.8. 点乘内核
DotProduct
内核通常和指数分布相结合。实例如下图所示:
1.7.5.9. 参考文献
[RW2006] | (1, 2, 3) Carl Eduard Rasmussen and Christopher K.I. Williams, “Gaussian Processes for Machine Learning”, MIT Press 2006, Link to an official complete PDF version of the book here . |
1.7.6. 传统高斯过程
在本节中,描述了版本 0.16.1 及之前 scikit 中高斯过程的实现, 请注意,此实现已被弃用,将在版本 0.18 中删除。
1.7.6.1. 回归实例介绍
>>> 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.6.2. 噪声数据拟合
使用 nugget
以及 corr
正确设置,高斯过程可以更好地用于从噪声数据恢复给定的向量函数。
1.7.6.3. 数学形式
1.7.6.3.1. 初始假设
同时假设这个函数是 一个 有关于 一个 高斯过程 的条件采用方法, 那么从这个假设出发,GPML 通常可以表示为如下形式:
其中, 是一个线性回归模型,并且 是一个 以零为均值,协方差函数完全平稳的高斯过程:
表示其方差, 表示仅仅基于样本之间的绝对相关距离的相关函数,可能是特征(这是平稳性假设)
从这些基本的公式中可以注意到GPML仅仅是基本的线性二乘回归问题的扩展。
除此之外,我们另外假定由相关函数指定的样本之间的一些空间相干性(相关性)。 事实上,普通最小二乘法假设当 时,相关性模型 是 1;否则为 0 ,相关性模型为 狄拉克 相关模型–有时在克里金文献中被称为 熔核 相关模型
1.7.6.3.2. 最佳线性无偏预测(BLUP)
它可以由 给定的属性 加以派生:
- 它是线性的(观测结果的线性组合)
- 它是无偏的
- 它是最好的(在均方误差的意义上)
因此最优的带权向量 是以下等式约束优化问题的解
以拉格朗日形式重写这个受约束的优化问题,并进一步寻求要满足的一阶最优条件, 从而得到一个以闭合形式表达式为终止形式的预测器 - 参见参考文献中完整的证明。
最后,BLUP 为高斯随机变量,其中均值为:
方差为:
其中:
- 根据自相关函数以及内置参数 所定义的相关性矩阵为:
- 在进行预测的点与 DOE 中的点之间的互相关的向量:
- 回归矩阵 (例如范德蒙矩阵 如果 以多项式为基):
- 广义最小二乘回归权重:
- 和向量:
需要重点注意的是,高斯过程预测器的概率输出是完全可分析的并且依赖于基本的线性代数操作。 更准确地说,预测结果的均值是两个简单线性组合(点积)的和,方差需要两个矩阵反转操作,但关联 矩阵只能使用 Cholesky 分解算法分解一次。
1.7.6.3.3. 经验最佳线性无偏估计(EBLUP)
到现在为止,自相关和回归模型都已假定给出。然而,在实践中,它们从来都是未知的 因此需要为这些模型 关联模型 做出(积极的)经验选择。
1.7.6.4. 关联模型
由于几乎相等的假设,常用的关联模型和一些有名的SVM内核相匹配。它们必须要满足 Mercer 条件 并且需要保持固定形式。然而,请注意,相关模型的选择应该与观察到来的原始实验的已知特性一致。 例如:
1.7.6.5. 回归模型
1.7.6.6. 实现细节
参考文献:
- 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.
中文文档: http://sklearn.apachecn.org/cn/0.19.0/modules/gaussian_process.html
英文文档: http://sklearn.apachecn.org/en/0.19.0/modules/gaussian_process.html
官方文档: http://scikit-learn.org/stable/
GitHub: https://github.com/apachecn/scikit-learn-doc-zh(觉得不错麻烦给个 Star,我们一直在努力)
贡献者: https://github.com/apachecn/scikit-learn-doc-zh#贡献者
关于我们: http://www.apachecn.org/organization/209.html
有兴趣的们也可以和我们一起来维护,持续更新中 。。。
机器学习交流群: 629470233
【Scikit-Learn 中文文档】高斯过程 - 监督学习 - 用户指南 | ApacheCN相关推荐
- SpringBoot中文文档 SpringBoot中文参考指南 SpringBoot中文参考文档 springboot中文文档 springboot中文
SpringBoot中文文档 SpringBoot中文参考指南 SpringBoot中文参考文档 springboot中文文档 springboot中文 SpringBoot中文文档 SpringBo ...
- 【Scikit-Learn 中文文档】流形学习 - 监督学习 - 用户指南 | ApacheCN
中文文档: http://sklearn.apachecn.org/cn/stable/modules/manifold.html 英文文档: http://sklearn.apachecn.org/ ...
- 【Scikit-Learn 中文文档】支持向量机 - 监督学习 - 用户指南 | ApacheCN
中文文档: http://sklearn.apachecn.org/cn/0.19.0/modules/svm.html 英文文档: http://sklearn.apachecn.org/en/0. ...
- 【Scikit-Learn 中文文档】集成方法 - 监督学习 - 用户指南 | ApacheCN
中文文档: http://sklearn.apachecn.org/cn/stable/modules/ensemble.html 英文文档: http://sklearn.apachecn.org/ ...
- 【Scikit-Learn 中文文档】13 集成方法 - 监督学习 - 用户指南 | ApacheCN
中文文档: http://sklearn.apachecn.org/cn/stable/modules/ensemble.html 英文文档: http://sklearn.apachecn.org/ ...
- 【Scikit-Learn 中文文档】概率校准 - 监督学习 - 用户指南 | ApacheCN
中文文档: http://sklearn.apachecn.org/cn/0.19.0/modules/calibration.html 英文文档: http://sklearn.apachecn.o ...
- 【Scikit-Learn 中文文档】广义线性模型 - 监督学习 - 用户指南 | ApacheCN
中文文档: http://sklearn.apachecn.org/cn/0.19.0/tutorial/basic/tutorial.html 英文文档: http://sklearn.apache ...
- PyTorch 1.4 中文文档校对活动正式启动 | ApacheCN
一如既往,PyTorch 1.4 中文文档校对活动启动了! 认领须知 请您勇敢地去翻译和改进翻译.虽然我们追求卓越,但我们并不要求您做到十全十美,因此请不要担心因为翻译上犯错--在大部分情况下,我们的 ...
- Elastic Kibana 5.2 中文文档 | 那伊抹微笑 - ApacheCN(Apache中文网)
ApacheCN(Apache中文网)- 关于我们 : http://www.apache.wiki/pages/viewpage.action?pageId=9404701 ApacheCN(Apa ...
最新文章
- Mysql 事务锁表,解决方法
- MySQL实战课程---通过录像手把手带您学会当前互联网流行架构
- c++如何将int数组中的值取出*号运算符_如何用动态规划巧妙解决 “双十一” 购物时的凑单问题?羊毛薅起来!!!...
- 网络通信tcp与udp的区别
- arpspoof看看隔壁女同事上班时间都在浏览什么网页?
- plist java_帮助plist文件
- 通过JAVA获取优酷视频
- macOS平台安装metasploit
- 数据--第37课 - 线索化二叉树
- 精通Javascript+jQuery视频下载地址
- Aircrack-ng支持网卡列表(下)
- 24合1芯片RK628D替代龙讯LT6911C/东芝TC358749XBG/HDMI TO MIPI...
- 3分钟搭建一个网站?腾讯云Serverless开发体验
- java计算机毕业设计高铁在线购票系统MyBatis+系统+LW文档+源码+调试部署
- 产品经理是做什么的?
- 跨境电商平台哪个好?——扬帆际海
- 【C++】struct结构体/构造函数
- Hantek6022BE 虚拟示波器 使用心得
- oracle导出dmp文件
- 2015 计蒜之道 初赛 第一场 搜狗输入法的分词算法
热门文章
- 超详细教程windows系统还原教程 win10 win7 64bit、32bit优盘做系统教程
- 查找附近的“丰巢智能柜”的地址 - 异地查询丰巢快递柜 - 寄快递收快递 - 顺丰速运
- Tomoya【省选模拟赛】
- Java项目:停车位预定管理系统(java+JSP+JavaScript+HTML+Mysql)
- [Python] 字符串操作及方法总结
- php邮件服务器搭建,php发送邮件,不需要搭建邮件服务器方法
- Makefile 中 FORCE
- 电子配线架的应用和技术
- (1.5.1.1)编程之美:让CPU占用率曲线听你指挥
- win10语言栏不见了_ME 2020软件下载和安装教程|兼容WIN10