Setting up multi-output GP with partial target-correlations #2396
Replies: 2 comments 6 replies
-
When you say correlated, do you mean correlation in the underlying function value |
Beta Was this translation helpful? Give feedback.
-
As an aside: Another option could be to use a full multi-task model, but to encode the correlation structure in the cross-task covariance matrix parameterization where we force the elements that we know are zero to zero. This would require some thinking about how to best do it, and it also likely would require using some iterative structure-exploiting solves as the overall covariance matrix could become huge. The main benefit of it would be simplicity - no handling of multiple models or anything like that. |
Beta Was this translation helpful? Give feedback.
-
Hello,
I have an issue regarding the creation of a Gaussian Process for a multi-output experiment.
In my case, I have a block-design setup for the descriptives. Futher, I have 10 noisy targets.
Due to the nature of my targets, I know that some of them are correlated to another, and some of them are not.
In fact, I am assuming that the targets can be grouped into correlation groups: [[Y1, Y2, Y3], [Y4, Y5, Y6, Y7], [Y8], [Y9], [Y10]], where the grouping means that they are correlated to each other (in accordance to a given correlation threshold). This means that, e.g., target 10 does not correlated to other targets.
In botorch's issues and discussions, I am always reading that taking a
SingleTaskGP
is the go-to way to model Multi-Output GPs that do not have correlating targets. Further, targets that do correlate with each other should be modeled using aMultiTaskGP
.My idea was to separate the creation of each correlation group and treat them based on having correlation to other targets (->
MultiTaskGP
) or not having correlation to other targets (->SingleTaskGP
).Afterwards, to create one unified model, I would append them in a
ModelListGP
.However, I am not sure about this procedure, since the documentation of
ModelListGP
mentions, that it is a useful tool for handing the grouping of non-block-design models and that block-design models should be handled in aSingleTaskGP
orMultiTaskGP
.Further, following my code, I run into problems with this procedure when performing a Multi-Step-Lookahead (qMultiStepLookahead). Here, the
fantasize
method of theModelListGP
assumes that the number of outputs (self.num_outputs) is equal to the number of models in the ModelList. In my case this assumption is not true.So, I am assuming that there is another, perhaps easier way to create the GP for my experiment.
I would be thankful for any recommendations!
Thanks in advance!
Beta Was this translation helpful? Give feedback.
All reactions