如何解决在 scikit-learn 中,如果 ConstantKernel 的值对于高斯过程回归是固定的,它是否有影响?
在 scikit-learn 中,GaussianProcessRegressor
model 在其参数中包含一个内核和用于其超参数的优化器。
我了解,如果优化器设置为 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")
内核之间有什么实际区别吗?
解决方法
ConstantKernel(1.0,constant_value_bounds="fixed") * RBF(1.0,length_scale_bounds="fixed")
不是 scikit-learn 或任何其他库中的默认内核,但它被广泛使用,因此我们可以将其视为默认内核。在 GP 中,我们不将任何内核视为默认内核(来源:kernel cookbook)。
谈到你的问题,RBF核的方程如下,
part1 = sigma^2
part2 = exp(((x1-x2)^2)/l^2)
RBF(x1,x2) = part1 * part2
这里,l
是长度尺度,sigma^2
是方差超参数。其他实现如 GPy,直接将 sigma
和 l
视为内核的参数。但是,scikit-learn 选择了不同的方式。
在 sklearn 中,ConstantKernel()
正在建模 part1
,RBF()
正在建模 part2
。
因此,如果我们在两个部分都使用“固定”参数,则没有实际区别,但是如果它们是可变的,那么它们就不同了,正如我上面试图描述的那样。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。