繁体   English   中英

使用 sci-kit 学习的高斯过程回归

[英]Gaussian process regression with sci-kit learn

背景:在高斯过程(GP)回归中,我们可以使用两种方法:

(I) 通过Maximum Likelihood(最大化数据似然)拟合内核参数,并使用这些参数定义的GP进行预测。

(II)贝叶斯方法:对核参数进行参数先验分布。 这种先验分布的参数称为超参数。 以数据为条件以获得内核参数的后验分布,现在要么

(IIa) 通过最大化后验核参数似然(MAP 参数)来拟合核参数,并使用 MAP 参数定义的 GP 进行预测,或

(IIb)(完整的贝叶斯方法):使用混合模型进行预测,该模型将允许的核参数定义的所有 GP 沿核参数的后验分布进行整合。

(IIb) 是包中引用的参考文献 [RW2006] 中提倡的主要方法。

关键是超参数仅存在于贝叶斯方法中,并且是内核参数的先验分布的参数。

因此,我对文档中“超参数”一词的使用感到困惑,例如, 此处声明“内核由超参数向量参数化”。

这必须被解释为一种通过调节数据的间接参数化,因为超参数不直接确定内核参数。 然后给出了一个指数核及其长度尺度参数的例子。 这绝对不是一个超参数,因为这个术语通常被使用。

内核参数和超参数之间似乎没有区别。 这令人困惑,现在还不清楚包是否使用贝叶斯方法。 例如,我们在哪里指定内核参数的先验分布的参数族?

问题: scikit-learn 使用方法(I)还是(II)?

这是我自己的试探性答案:混淆来自这样一个事实,即高斯过程通常被称为“函数先验”,表明某种贝叶斯主义。 更糟糕的是,这个过程是无限维的,因此限制在有限的数据维度是某种“边缘化”。 这也令人困惑,因为通常您仅在贝叶斯方法中进行边缘化,在该方法中数据和参数的联合分布,因此您通常会边缘化其中一个。

然而,这里的正确观点如下:高斯过程是模型,内核参数是模型参数,在 sci-kit learn 中没有超参数,因为内核参数没有先验分布,即所谓的 LML(对数边际可能性)是给定模型参数的普通数据似然,参数拟合是普通最大数据似然。 简而言之,方法是(I)而不是(II)。

如果您阅读有关 GP 回归的 scikit-learn 文档,您会清楚地看到内核(超)参数已优化 以参数n_restarts_optimizer的描述为例:“优化器的重新启动次数,用于查找最大化对数边际可能性的内核参数。” 在您的问题中,方法(i)。

不过,我还要注意两点:

  1. 在我看来,它们被称为“超参数”这一事实自动意味着它们是确定性的并且可以直接估计。 否则,它们是随机变量,这就是它们可以有分布的原因。 另一种思考方式是:您是否为它定义了先验? 如果不是,那么它是一个参数! 如果你这样做了,那么可能需要确定先验的超参数。
  2. 请注意, GaussianProcessRegressor类“公开了一个方法 log_marginal_likelihood(theta),该方法可以在外部用于其他选择超参数的方法,例如通过马尔可夫链蒙特卡罗。” 因此,从技术上讲,可以使其“完全贝叶斯”(您的方法(ii)),但您必须提供推理方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM