deephyper.skopt.moo#

DeepHyper’s multiobjective features.

DeepHyper solves multiobjective problems via scalarization. A scalarization is a function that reduces several objectives to a single target, which can be attained using any of DeepHyper’s existing search strategies, such as deephyper.search.hps.CBO or deephyper.search.hps.MPIDistributedBO.

If the user knows the tradeoff point that they would like to attain a priori, then DeepHyper can use a fixed scalarization by using one of our 5 fixed-weighting scalarization methods. To do so, when initializing the deephyper.search.Search class, set moo_scalarization_strategy=["Linear", "Chebyshev", "AugChebyshev", "PBI", "Quadratic"]. Then, set the moo_scalarization_weight to a list of length equal to the number of objectives, which DeepHyper will use for scalarization.

To interrogate the entire Pareto front, and not just a single tradeoff point, one will need to solve multiple different scalarizations in parallel. This can be achieved by using one of the 5 scalarization strategies with randomized weights. When initializing the deephyper.search.Search class, set moo_scalarization_weight=None. DeepHyper will randomly generate new scalarization weights for each candidate point. This can be slightly more expensive than solving with a fixed scalarization since multiobjective problems are inherently more difficult than single-objective problems, but using different scalarizations presents additional opportunity for parallelism. When training an ensemble of models for prediction, setting 2 objectives that balance model complexity vs accuracy and using randomized scalarizations may produce a more diverse set of models.

Based on our experience, we recommend the "[r]AugChebyshev" option for most applications. For additional information, the corresponding strategies are documented in the 5 classes from this module. We also provide 5 common multiobjective utility functions for calculating the hypervolume performance metric and extracting Pareto efficient/non dominated point sets.

Functions

hypervolume

Compute the absolute hypervolume of a pointset according to the reference point ref.

is_pareto_efficient

Check if the new objective vector is pareto efficient with respect to previously computed values.

non_dominated_set

Find the set of non-dominated points.

non_dominated_set_ranked

Find the set of top-fraction x 100% of non-dominated points.

pareto_front

Extract the pareto front (actual objective values of the non-dominated set).

Classes

MoAugmentedChebyshevFunction

This scalarizing function computes a sum of weighted infinity- and 1-norms of the individual objective values (after automatically scaling them in [0, 1]).

MoChebyshevFunction

This scalarizing function computes a weighted infinity-norm of the individual objective values (after automatically scaling them in [0, 1]).

MoLinearFunction

This scalarizing function linearly combines the individual objective values (after automatically scaling them in [0, 1]).

MoPBIFunction

This scalarizing function computes the projection of the objective vector along a reference vector and adds a penalty term to minimize deviations from the projected point to the attainable objective set.

MoQuadraticFunction

This scalarizing function quadratically combines the individual objective values (after automatically scaling them in [0, 1]).

MoScalarFunction

Abstract class representing a scalarizing function.