experimental-design / bofire

Experimental design and (multi-objective) bayesian optimization.
https://experimental-design.github.io/bofire/
BSD 3-Clause "New" or "Revised" License
188 stars 22 forks source link

Adding log-transformed inputs #349

Open dlinzner-bcs opened 6 months ago

dlinzner-bcs commented 6 months ago

We frequently encounter variables that are better modeled in the logarithmic space. It would be a cool feature to have bofire to model this directly.

@niklaswulkow please add/correct ;)

jduerholt commented 6 months ago

Good point, I have it already for a longer time on my bucket list, from the botorch side, this is already prepared: https://github.com/pytorch/botorch/blob/68fbb68d4a78efd2b803071d883081b2c45a70ae/botorch/models/transforms/input.py#L878 The question is how to set it up in BoFire. I would vote for setting up the domain still in the original non-transformed space and just tell the surrogate which input to transform, as it is currently also done for the input scalers fors continuous inputs. This needs to be made more flexible.

What do you think?

cc: @bertiqwerty: maybe we can discuss this also tmr in our meeting

jduerholt commented 6 months ago

Furthermore, the question would be if the log transformed inputs should then also undergo normalization/standardization and how to set this up in a flexible way.

jduerholt commented 6 months ago

https://ax.dev/docs/models.html#transforms This describes how it is done in Ax, which differs a bit from our current approach.