使用 Scikit-learn 的 GaussianProcessRegressor 中的训练数据优化内核参数

数据挖掘 scikit-学习 回归 监督学习 超参数 超参数调整
2022-03-11 22:27:34

我想使用我在 Scikit-learn 的 GaussianProcessRegressor 中的训练数据优化内核参数或超参数。以下是我的查询:

我的训练数据集是

X:二维笛卡尔坐标作为输入数据

y:作为观察输出的二维坐标点处的无线电信号强度 (RSS)

到目前为止我所做的

我已经安装了 python 和 Scikit-learn 软件。我已经成功测试了示例代码。我能够使用训练数据在测试点预测 RSS。我使用平方指数内核。

我想做什么

我想用不同的优化算法(如梯度下降、群智能和信任区域反射算法)训练内核参数(超参数)。

我学到了什么以及我需要什么帮助

我了解到,在 scikit 的 GaussianProcessRegressor 类中,优化器是我可以使用自己的优化算法的参数。由于它是可调用的,我需要为它编写自己的函数/方法。我可以在 GaussianProcessRegressor 类中使用任何内置库(优化算法库)吗?是否有可用于 python 的此类库?任何人都可以提供在 GaussianProcessRegressor 中使用内核参数优化算法的任何示例代码吗?我了解到我们使用训练数据集来优化超参数。有人可以提供有关将训练数据集与优化算法相关联的任何见解吗?

谢谢!

1个回答

给定 scikit-learn 的 API,您可以为每个优化器创建一个单独的实例并比较结果以查看哪个优化器做出更好的预测。它看起来像:

from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import RBF

gp1 = GaussianProcessRegressor(kernel=RBF, optimizer=optimizer1)
gp1.fit(X, y)
y_pred1 = gp1.predict(x)

gp2 = GaussianProcessRegressor(kernel=RBF, optimizer=optimizer2)
gp2.fit(X, y)
y_pred2 = gp2.predict(x)

这篇博文给出了拟合高斯过程的一般概述,包括 scikit-learn 的 GaussianProcessRegressor。