Just like you can augment X
with a column that designates for each data point (row) which output it relates to (the column is specified by the active_dims
keyword argument to the Coregion
kernel; note that it is zero-based indexing), you can augment Y
with a column to specify different likelihoods (the SwitchedLikelihood
is hard-coded to require the index to be in the last column of Y
) - there is an example (Demo 2) in the varying noise notebook in the GPflow tutorials. You just have to combine the two, use a Coregion kernel and a SwitchedLikelihood, and augment both X and Y with the same column indicating outputs!
However, as plain GPR only works with a Gaussian likelihood, the GPR model has been hard-coded for a Gaussian likelihood. It would certainly be possible to write a version of it that can deal with different Gaussian likelihoods for the different outputs, but you would have to do it all manually in the _build_likelihood
method of a new model (incorporating the stitching code from the SwitchedLikelihood
).
It would be much easier to simply use a VGP
model that can handle any likelihood - for Gaussian likelihoods the optimisation problem is very simple and should be easy to optimise using ScipyOptimizer
.