Giter VIP home page Giter VIP logo

Comments (4)

Balandat avatar Balandat commented on May 20, 2024 1

I think we should be able to easily expose a transform_observation_data() method to make this less hacky - not sure why we haven't done this until now. @bletham is there a reason for this or just not something that was needed so far ?

from ax.

bletham avatar bletham commented on May 20, 2024 1

Some transforms for ObservationData require knowing ObservationFeatures. Particularly StratifiedStandardizeY, which standardizes Y but stratified on some conditions on X (https://github.com/facebook/Ax/blob/main/ax/modelbridge/transforms/stratified_standardize_y.py#L34). It is used for multi-task modeling, where data from different tasks may have very different scales and so need to be standardized separately.

This is why transform_observation_data is not a required method for a Transform to implement, and in fact StratifiedStandardizeY does not implement that and implements only transform_observations.

We could implement a transform_observation_data on the modelbridge, and it would just need to throw an error if the modelbridge has any transforms that do not implement transform_observation_data.

from ax.

Balandat avatar Balandat commented on May 20, 2024

HI @IanDelbridge, yes, that's correct, and your solution is as well. It's actually not that hacky at all, all things considered. Ideally, we'd have an automated way of transforming the inputs to the acquisition functions, but since with the modular setup you could have any number and kinds of those with different inputs it's not obvious how to tell what to transform.

Maybe a convenience feature could be something like adding a acq_options_to_transform argument to evaluate_acquisition_function and then apply what you're doing manually here under the hood and then pass the union of the transformed and the acq_options dict to the acquisition function? Do you think that would be a convenient API? Though that would also require distinguishing between python native and Tensor type inputs...

from ax.

IanDelbridge avatar IanDelbridge commented on May 20, 2024

Hi Max, thanks, I appreciate your response!

I think the part that sets off alarms telling me my solution is a hack is the way I am doing the transform. Is there a better way to apply the transform and inverse transforms without making fake observation features? Something like gp_pi.transform_observation_data(ObservationData(...))?

acq_options_to_transform would work from my perspective as an API but I'm also thinking about un-transforming the acquisition function value, specifically thinking about the UCB return value.

from ax.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.