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.hpo.CBO
or deephyper.hpo.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
Compute the absolute hypervolume of a pointset according to the reference point ref. |
|
Check if the new objective vector is pareto efficient with respect to previously computed values. |
|
Find the set of non-dominated points. |
|
Find the set of top- |
|
Extract the pareto front (actual objective values of the non-dominated set). |
Classes
This scalarizing function computes a sum of weighted infinity- and 1-norms of the individual objective values (after automatically scaling them in [0, 1]). |
|
This scalarizing function computes a weighted infinity-norm of the individual objective values (after automatically scaling them in [0, 1]). |
|
This scalarizing function linearly combines the individual objective values (after automatically scaling them in [0, 1]). |
|
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. |
|
This scalarizing function quadratically combines the individual objective values (after automatically scaling them in [0, 1]). |
|
Abstract class representing a scalarizing function. |