- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 tutorial on multiclass classification on the GPflow website ,稀疏变分高斯过程 (SVGP) 用于一维玩具示例。就像 all other GPflow models 的情况一样,SVGP 模型有一个方法 predict_y(self, Xnew)
,它返回 Xnew
点处保留数据的均值和方差。
从教程中可以清楚地看出,从 predict_y
中解包的第一个参数是三个类中每一个的后验预测概率(单元格 [7]
和 [8]
),如下图第二个面板中的彩色线所示。然而,作者没有详细说明可以从 predict_y
中解包的第二个参数,即预测的方差。在回归设置中,它的解释对我来说很清楚,因为在这种情况下后验预测分布将是高斯分布。
但是我不明白这里的解释是什么。特别是,我想知道如何使用此度量来构建误差线,表示任何新数据点的类预测的不确定性。
我稍微修改了教程的代码,在下图中添加了一个附加面板:第三个面板以黑色显示最大标准差(从 predict_y
获得的方差的平方根)。显然,它是衡量不确定性的一个很好的指标,而且最高可能值为 0.5 也可能并非巧合,但我找不到它的计算方式及其代表的含义。
包含所有代码的完整笔记本 here .
def plot(m):
f = plt.figure(figsize=(12,8))
a1 = f.add_axes([0.05, 0.05, 0.9, 0.5])
av = f.add_axes([0.05, 0.6, 0.9, 0.1])
a2 = f.add_axes([0.05, 0.75, 0.9, 0.1])
a3 = f.add_axes([0.05, 0.9, 0.9, 0.1])
xx = np.linspace(m.X.read_value().min()-0.3, m.X.read_value().max()+0.3, 200).reshape(-1,1)
mu, var = m.predict_f(xx)
mu, var = mu.copy(), var.copy()
p, v = m.predict_y(xx)
a3.set_xticks([])
a3.set_yticks([])
av.set_xticks([])
lty = ['-', '--', ':']
for i in range(m.likelihood.num_classes):
x = m.X.read_value()[m.Y.read_value().flatten()==i]
points, = a3.plot(x, x*0, '.')
color=points.get_color()
a1.fill_between(xx[:,0], mu[:,i] + 2*np.sqrt(var[:,i]), mu[:,i] - 2*np.sqrt(var[:,i]), alpha = 0.2)
a1.plot(xx, mu[:,i], color=color, lw=2)
a2.plot(xx, p[:,i], '-', color=color, lw=2)
av.plot(xx, np.sqrt(np.max(v[:,:], axis = 1)), c = "black", lw=2)
for ax in [a1, av, a2, a3]:
ax.set_xlim(xx.min(), xx.max())
a2.set_ylim(-0.1, 1.1)
a2.set_yticks([0, 1])
a2.set_xticks([])
plot(m)
最佳答案
Model.predict_y()
来电 Likelihood.predict_mean_and_var()
。如果您查看后一个函数 [1] 的文档,您会发现它所做的只是计算预测分布的均值和方差。即,我们首先计算边际预测分布 q(y) = \int p(y|f) q(f) df
,然后我们计算 q(y)
的均值和方差.
对于高斯,均值和方差可以彼此独立地指定,并且它们具有点预测和不确定性的解释。对于伯努利似然,均值和方差完全由单个参数 p
确定。 。分布的均值就是事件发生的概率,它已经告诉了我们不确定性!方差并没有给出更多。
但是,您说得对,方差是衡量不确定性的一个很好的指标,方差越高意味着不确定性越大。熵作为 p
的函数看起来非常相似(尽管两者在边缘附近的行为不同):
p = np.linspace(0.001, 1 - 0.001, 1000)[:, None]
q = 1 - p
plt.plot(p, -p * np.log(p) - q * np.log(q), label='entropy')
plt.plot(p, p * q, label='variance')
plt.legend()
plt.xlabel('probability')
关于python - GPflow分类: interpretation of posterior variance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57673607/
我想使用高斯过程回归执行一些多元回归,如使用版本 2 在 GPflow 中实现的那样。使用 pip install gpflow==2.0.0rc1 安装 下面是一些示例代码,它生成一些 2D 数据,
我们已经训练了一个模型,并希望在几种不同的方法中使用它,每种方法都会改变它。但是,第一个方法调用会污染后续调用的模型。 理想情况下,我们只想深度复制模型,然后将副本传递到变异方法中。 这可能吗?或者有
我正在尝试使用 GPflow 来拟合 GP。我想使用自动相关性确定和长度尺度的先验。 我知道如何分别做这两件事: kernel = gpflow.kernels.SquaredExponential(
GPflow 在预测步骤中是否支持不确定的输入?训练步骤中不确定的输入怎么办?我查了一下,好像没有这方面的信息。 谢谢。 最佳答案 来自https://github.com/GPflow/GPflow
我正在尝试使用多维输入数据在 GPFlow 中实现多输出 GP。 我从this issue看到了在 GPflow 中,通过“定义多维基础内核,然后在其上应用核心区域”,可以实现多维输入。 我已经编写了
有人知道贝叶斯优化算法随着搜索空间维度的变化速度有多快吗?对可以合理使用的最大尺寸的一个好的估计是多少?我特别想到 GPyOpt 和 GPFlowOpt。 最佳答案 作为一般经验法则,当搜索空间的维度
我的用例是这样的:我有一个函数,它接受用户选择的内核,然后我将迭代数据集中的每个日期,并使用高斯过程回归来估计使用指定内核的模型。但是,由于我指向内核对象,因此我需要在运行下一次迭代之前将其重置为默认
我想计算 GPFlow 中 GP 回归的协方差矩阵的行列式。我猜我可以用这个函数得到协方差矩阵: GPModel.predict_f_full_cov 这里建议使用这个函数: https://gpfl
我正在尝试保存 GPflow 模型(在 GPflow 2.0 版中)。 model = gpflow.models.VGP((X, Y_data), kernel=kernel, likelihood
我正在尝试使用 GPflow 进行多维回归。但我对均值和方差的形状感到困惑。例如:应该预测形状为 (20,20) 的二维输入空间 X。我的训练样本的形状为 (8,2),这意味着两个维度总共有 8 个训
我正在尝试保存 GPflow 模型(在 GPflow 2.0 版中)。 model = gpflow.models.VGP((X, Y_data), kernel=kernel, likelihood
在 GPflow 1.0 中,如果我想在像 lengthscale 这样的参数上设置硬边界(即限制参数的优化范围), transforms.Logistic(a=4., b=6.) 将参数限制在 4
我想将 AdamOptimizer 与 GPFlow 一起使用,但是我无法按照此 link 中源代码的建议导入它(第 26 行)指定。我不确定我错过了什么。我尝试过不同的 gpflow 版本(1.1.
在当前笔记本教程 (gpflow 2.0) 中,所有 @tf.function 标签都包含选项 签名=假,例如( https://gpflow.readthedocs.io/en/2.0.0-rc1/
我对探地雷达还很陌生。如果您就以下问题向我提供一些建议,我将不胜感激: 我们可以在稀疏高斯过程中使用Matern52内核吗? 选择伪输入 (Z) 的最佳方法是什么?随机抽样合理吗? 我想提一下,当我使
我正在使用 Sklearn 执行 PCA 分析和 GPflow .我注意到两个库返回的输出不匹配。 请看下面的示例代码片段- import numpy as np from gpflow.models
我尝试下载该包和python setup.pydevelopment。然而这直接在anaconda下安装GPflow。另外,这并不是真正起作用的 anaconda 并给出错误 /Users/Chu/a
在 GPflow 2.0 中进行 GP 回归时,我想在长度尺度上设置硬边界(即限制长度尺度优化范围)。在这个线程 ( Setting hyperparameter optimization bound
在 GPflow 2.0 中进行 GP 回归时,我想在长度尺度上设置硬边界(即限制长度尺度优化范围)。在这个线程 ( Setting hyperparameter optimization bound
我是一名优秀的程序员,十分优秀!