OptimizerInterMBO: Tuner and Optimizer using mlrMBO

OptimizerInterMBOR Documentation

Tuner and Optimizer using mlrMBO

Description

mlrMBO tuning object.

mlrMBO must not be loaded directly into R when using mlr3, for various reasons. TunerInterMBO and OptimizerInterMBO take care that this does not happen.

Format

R6::R6Class object inheriting from Tuner (mlr3tuning package) or Optimizer (bbotk package).

Construction

To optimize an objective (using the bbotk package), use the OptimizerInterMBO object, ideally obtained through the bbotk::opt() function: opt("intermbo").

To tune a machine learning method represented by a mlr3::Learner object, use the TunerInterMBO obtained ideally through mlr3tuning::tnr(): tnr("intermbo").

Both have following optional arguments:

  • n.objectives :: integer(1)
    Number of objectives to optimize. Default is 1 for ordinary ("single objective") optimization, but can be breater than 1 for multi-objective optimization. See mlrMBO::setMBOControlMultiObj() for details on multi-objective optimization in mlrMBO.

  • on.surrogate.error :: character(1)
    What to do when fitting or predicting the surrogate model fails. One of "stop" (throw error), "warn", and "quiet"(ignore and propose a random point).
    The surrogate model may fail sometimes, for example when the size of the initial design is too small or when the objective function returns constant values. In practice this is usually safe to ignore for single iterations (i.e. "warn" or "quiet"), but be aware that MBO effectively degrades to random search when the surrogate model fails for all iterations.

Configuration Parameters

The ParamSet of the optimizer / tuner reflects the possible configuration options of mlrMBO. The control parameters map directly to the arguments of mlrMBO::makeMBOControl(), mlrMBO::setMBOControlInfill(), mlrMBO::setMBOControlMultiObj(), mlrMBO::setMBOControlMultiPoint(), and mlrMBO::setMBOControlTermination().

Examples

library("paradox")
library("bbotk")

# silly example function: minimize x^2 for -1 < x < 1
domain <- ps(x = p_dbl(lower = -1, upper = 1))
codomain <- ps(y = p_dbl(tags = "minimize"))
objective <- ObjectiveRFun$new(function(xs) list(y = xs$x^2), domain, codomain)

# initialize instance
instance <- OptimInstanceSingleCrit$new(objective, domain, trm("evals", n_evals = 6))

# use intermbo optimizer
#
# Also warn on surrogate model errors
# (this is the default and can be omitted)
optser <- opt("intermbo", on.surrogate.error = "warn")

# optimizer has hyperparameters from mlrMBO
optser$param_set$values$final.method <- "best.predicted"

# optimization happens here.
optser$optimize(instance)

instance$result

mlrintermbo documentation built on June 22, 2024, 10:02 a.m.