Coder Social home page Coder Social logo

janweinreich / rules_of_acquisition Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 7.28 MB

Bayesian Optimization made simple. Name derived from Star Trek universe, the "Rules of Acquisition" are a collection of sacred business proverbs of the ultra-capitalist race known as the Ferengi.

Python 96.43% Jupyter Notebook 3.57%

rules_of_acquisition's Introduction

rules_of_acquisition's People

Contributors

aa-schoepfer avatar janweinreich avatar

Stargazers

 avatar  avatar

Watchers

 avatar

rules_of_acquisition's Issues

Enhancements

  • devise an automatic stopping criterion for the BO based on expected improvement (ask alex)
  • add the xgBoost regressor (with hyperparamteroptimization)
  • qEI (without noise averaging)
  • OHE versus random search comparison
  • full entropy search (no gibbon) (Multi-Objective Max-value Entropy Search Acquisition Function)
  • Curate old examples with 1 and 0 costs

Code cleanup

Need to finally clean the code. Main aspects:

  • remove unncesserary keywords from exp_configs.py for the AcqFctPrice script (for instance maximal price argument is not needed). This also means adding a surrogate argument to the surrogate="GP", in the BO.py

  • specify regressor and acquisition function combinations

  • clean the gibbon_search_modified_all function as it can now use different acquisition functions and so its name is not appropriate anymore

Budget planning

Given the current code for buying ligands and updating the prices accordingly,
implement a simple way that allows saving money first before buying new ligands, instead of a fixed budget (or even saving money from the last iteration).

The goal is to answer the question:
"Should I really first spend little or directly go for ligands with high promise according to the acquisition function?"

This question is hard to answer and it probably depends on many factors. Lets simply try to answer this question for the given dataset and not make general claims

New plans for experiments

basically I think that for the initialization and the budget based approach we need some more specific possible configs

"dataset": ["dolye2018", "dolye2022", "dolye2022_prices", "jensen2019"] # something like that
"init_strategy": ["strat1", "strat2", ...] # this is the most tricky one, probably need subconfigs, or at least a separate class for each, 'ntrain' should be in there too
"nruns": int
"niter": int # I'm thinking maybe we could add some other termination criterions but for now it should be fine
"batch_size": int
"strategy": ["random","normal_BO", "budget", "acq_score_per_price"] # there should also be subconfigs for 'budget' including 'max_batch_cost', 'fixed' price or 'increasing', w savings or wo, etc...  

missing experiment implementations

  • FixBatch buchwald!
    {
        "dataset": "buchwald",
        "init_strategy": "worst_ligand_and_more",
        "cost_aware": True,
        "n_runs": 5,
        "n_iter": 60,
        "batch_size": 5,
        "max_batch_cost": 20.0,
        "ntrain": 200,
        "prices": "update_all_when_bought",
        "surrogate": "GP",
        "acq_func": "GIBBON",
        "buget_schedule": "adaptive_2",
    },    

current costmin.py there only works for direct acryklation

Include budget in acquisition function

Include the costs of ligands in the acquisition function by dividing the acqftvalue by the cost of the ligand. In case the ligand was already bought dont devide by zero but find a sensible lower bound

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.