0

在 scikit-learn 中,GaussianProcessRegressor 模型在其参数中包含一个内核和用于其超参数的优化器。我知道如果优化器设置为None或内核的超参数设置为,'fixed'则它们无法更改。

scikit-learn 中 GPR 的默认内核是ConstantKernel(1.0, constant_value_bounds="fixed") * RBF(1.0, length_scale_bounds="fixed"). 我假设常量内核在这里有一个目的,但根据我的理解,它只能是 1,因此没有任何效果。

我的问题是:默认内核和简单内核之间有什么实际区别RBF(1.0, length_scale_bounds="fixed")吗?

4

1 回答 1

0

ConstantKernel(1.0, constant_value_bounds="fixed") * RBF(1.0, length_scale_bounds="fixed")不是 scikit-learn 或任何其他库中的默认内核,但它被广泛使用,因此我们可以将其视为默认内核。在 GP 中,我们不将任何内核视为默认值(来源:内核食谱)。

来到你的问题,RBF内核的方程如下,

    part1 = sigma^2
    part2 = exp(((x1-x2)^2)/l^2)
    RBF(x1, x2) =  part1 * part2

这里,l是长度尺度,sigma^2是方差超参数。GPy 等其他实现直接将sigmal视为内核的参数。但是,scikit-learn 选择了不同的方式。

在 sklearn 中,ConstantKernel()正在建模part1RBF()正在建模part2

因此,如果我们在两个部分中都使用“固定”参数,则没有实际区别,但如果它们是可变的,那么它们就像我在上面试图描述的那样是不同的。

于 2021-05-13T10:56:44.093 回答