我正在使用scikit-learn Python 库对一个需要七个输入的函数执行贝叶斯优化(在高斯过程回归之上)。其中四个输入代表物理角度,因此高斯核在其中应该是周期性的;一个自然的选择是sklearn.gaussian_process.kernels.ExpSineSquared
。但是,我不想武断地强制函数在其他三个中是周期性的。
根据The Kernel Cookbook,正确的方法是简单地将ExpSineSquared
周期性变量的内核与非周期性内核(比如 Matérn 内核)相乘,并获得类似
ExpSineSquared(x[:3])*Matern(x[3:])
(其中x
是参数的 7 向量)。有人会认为实现的内核Product
将sklearn.gaussian_process.kernels
是可行的方法,但据我所知,这不允许我选择哪些参数是周期性的,哪些不是;使用Product
内核将有效地给我ExpSineSquared(x)*Matern(x)
.
由于我对 sklearn 中的 GPR 不是很有经验,所以实现所需内核的最佳方法是什么?