高斯过程可以增量拟合吗?

数据挖掘 机器学习 scikit-学习
2022-02-21 13:05:13

我正在使用高斯过程回归器来拟合贝叶斯优化器的数据。这是我的 Python 代码的相关部分。

from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import (RBF, Matern, RationalQuadratic,
                                          ExpSineSquared, DotProduct,
                                          ConstantKernel)
kernel = Matern(length_scale=lenSc,nu=2.5)
gp = GaussianProcessRegressor(kernel=kernel)
l2=10
Xi=np.concatenate((nprand.uniform(10.0,30.0,[l2,6]),nprand.uniform(-0.3,0.3,[l2,42]),nprand.uniform(0.0,30.0,[l2,1]),nprand.uniform(-30.0,30.0,[l2,1]),nprand.uniform(0.0,0.3,[l2,6]),nprand.uniform(5.0,20.0,[l2,6])),axis=1)
yi=map(lambda x: f1(x), Xi)
gp.fit(Xi, yi)
while(1):
   #Some code to get the new values- cc and nv
   Xi=numpy.row_stack((Xi,cc))
   yi=np.concatenate((yi,[nv]))
   gp.fit(Xi, yi)

贝叶斯优化器的每次迭代,我都会添加一个新元素Xiyi并且适合gp,高斯过程,再次。作为大小Xiyi达到 200 多个,拟合数据所需的时间变得明显,这降低了我的贝叶斯优化器的整体效率。

贝叶斯优化器必须进行大约 1000 次迭代,每次迭代都需要重新拟合数据。所以,我想知道是否有办法增量拟合数据?如果sklearn 的 GaussianProcessRegressor还没有做到这一点

谢谢!

1个回答

我认为使用 GPR,计算成本会增加 N^3 的数量级,因此处理更多数据的时间会急剧增加。

我不认为 sklearn 的 GPR 的当前版本实现了您期望的那种增量拟合。有了更大的数据和迭代,我建议在 GPU 或其他东西上实现你自己的版本,因为 GPR 的实现并不难。