Open esantorella opened 5 months ago
@SebastianAment is the requirement that all inputs are contained in the unit cube critical for this kernel?
Thanks for raising this. I added this check to ensure that the search space bounds
are passed to Normalize
, otherwise the orthogonality condition can only be guaranteed on the training set. In the example above, passing Normalize(d=1, bounds=bounds)
would work. We can add this to the error message.
@SebastianAment is the requirement that all inputs are contained in the unit cube critical for this kernel?
In principle we could also open the kernel up to be evaluated outside of the orthogonality domain, but I think it's better to error out in this case, at least by default, as orthogonality is the defining property that users would expect from the kernel.
cc @hvarfner
🐛 Bug
OrthogonalAdditiveKernel
will error here if providedx
values outside the unit hypercube, [0, 1]^d. Unfortunately, when combining this kernel with basic BoTorch functionality, it is hard to avoid passing such values. For example, if the search space is [0, 1], a model is trained on points ranging from 0.25 to 0.75, and aNormalize
input transform is used, then 0 and 1 will transform to -1 and 2 and lie outside the hypercube.To reproduce
Code snippet to reproduce
Stack trace/error message
Expected Behavior
This should not error. Currently, the only way to use the OAK is to manually normalize the search space (rather than the training data) to [0, 1], which is not documented or well-supported.
System information
Please complete the following information: