我想在 GPy 中执行 coregionalized 回归,但是我使用的是伯努利似然,然后作为高斯估计,我使用拉普拉斯推理。PjkRbf
下面的代码显示了我通常如何使用此设置(使用我的自定义内核)运行单输出 GP :
likelihood = GPy.likelihoods.Bernoulli()
laplace_inf = GPy.inference.latent_function_inference.Laplace()
kernel = GPy.kern.PjkRbf(X.shape[1])
m = GPy.core.GP(X, Y, kernel=kernel, likelihood=likelihood, inference_method=laplace_inf)
现在我正在尝试运行相同的设置,但作为多输出。这是我一直无法做到的。
我已经尝试使用GPCoregionalizedRegression
带有 ICM 内核的类,如下面的代码所示:
likelihood1 = GPy.likelihoods.Bernoulli()
likelihood2 = GPy.likelihoods.Bernoulli()
laplace_inf = GPy.inference.latent_function_inference.Laplace()
K = GPy.kern.PjkRbf(X.shape[1])
icm = GPy.util.multioutput.ICM(input_dim=2,num_outputs=2,kernel=K)
m = GPy.models.GPCoregionalizedRegression([X,X],[Y1,Y2],
kernel=icm,
likelihoods_list=[likelihood1, likelihood2])
运行此代码会引发 AssertionError,并带有很长的堆栈跟踪,但最后一部分显示以下内容。可能性不能断言为高斯。
~\Anaconda3\lib\site-packages\GPy\likelihoods\mixed_noise.py in gaussian_variance(self, Y_metadata)
22
23 def gaussian_variance(self, Y_metadata):
---> 24 assert all([isinstance(l, Gaussian) for l in self.likelihoods_list])
25 ind = Y_metadata['output_index'].flatten()
26 variance = np.zeros(ind.size)
AssertionError:
这是因为我无法将拉普拉斯推理传递给GPCoregionalizedRegression
模型。
任何人都可以就如何解决这个问题提供建议,或者如果有不同的模型我可以使用伯努利似然法和拉普拉斯推理方法来执行多输出回归?