syne_tune.optimizer.schedulers.multiobjective.random_scalarization module

class syne_tune.optimizer.schedulers.multiobjective.random_scalarization.MultiObjectiveLCBRandomLinearScalarization(predictor, active_metric=None, weights_sampler=None, kappa=0.5, normalize_acquisition=True, random_seed=None)[source]

Bases: ScoringFunction

Note: This is the multi objective random scalarization scoring function based on the work of Biswajit et al. [1]. This scoring function uses Lower Confidence Bound as the acquisition for the scalarized objective \(h(\mu, \sigma) = \mu - \kappa * \sigma\)

[1] Paria, Biswajit, Kirthevasan Kandasamy and Barnabás Póczos.
A Flexible Framework for Multi-Objective Bayesian Optimization using Random Scalarizations.
Conference on Uncertainty in Artificial Intelligence (2018).
Parameters:
  • predictor (Dict[str, Predictor]) – Surrogate predictor for statistics of predictive distribution

  • weights_sampler (Optional[Callable[[], Dict[str, float]]]) –

    Callable that can generate weights for each objective. Once called it will return a dictionary mapping metric name to scalarization weight as {

    <name of metric 1> : <weight for metric 1>, <name of metric 2> : <weight for metric 2>, …

    }

  • kappa (float) – Hyperparameter used for the LCM portion of the scoring

  • normalize_acquisition (bool) – If True, use rank-normalization on the acquisition function results before weighting.

  • random_seed (Optional[int]) – The random seed used for default weights_sampler if not provided.

score(candidates, predictor=None)[source]
Parameters:
  • candidates (Iterable[Dict[str, Union[int, float, str]]]) – Configurations for which scores are to be computed

  • predictor (Optional[Dict[str, Predictor]]) – Overrides default predictor

Return type:

List[float]

Returns:

List of score values, length of candidates