我正在尝试构建一个多维 GP 回归,最初有两个输出 f1(x)、f2(x)。一个输出有点随意,因此我想在这里使用一个 Matern 内核:f1'(x)=K_Matern f1(x)。另一个输出 f2(x) 显示季节性,其中幅度与 f1(x) 的值相关:f2'(x)=K_season(x) f1(x)。我一直在尝试通过将两者与 Coreg 内核组合来组成一个合适的内核:K_Matern * Coreg * K_season。由于这似乎不起作用,我想知道我的想法错误在哪里。
k1 = gpflow.kernels.Matern32(1, active_dims=[0], lengthscales = 1)
k2 = gpflow.kernels.Periodic(1, active_dims=[1], lengthscales = 1)
coreg = gpflow.kernels.Coregion(1, output_dim=2, rank=1, active_dims=[1])
kern = k1 * coreg * k2
lik = gpflow.likelihoods.SwitchedLikelihood([gpflow.likelihoods.StudentT(), gpflow.likelihoods.StudentT()])
X_augmented = np.vstack((np.hstack((X1, np.zeros_like(X1))), np.hstack((X2, np.ones_like(X2)))))
Y_augmented = np.vstack((np.hstack((Y1, np.zeros_like(X1))), np.hstack((Y2, np.ones_like(X2)))))
m = gpflow.models.VGP(X_augmented, Y_augmented, kern=kern, likelihood=lik, num_latent=1)