Acquisition Function Expected Improvement on Log Scale
Source:R/AcqFunctionEILog.R
mlr_acqfunctions_ei_log.Rd
Expected Improvement assuming that the target variable has been modeled on log scale.
In general only sensible if the SurrogateLearner uses an OutputTrafoLog without inverting the posterior predictive distribution (invert_posterior = FALSE
).
See also the example below.
Dictionary
This AcqFunction can be instantiated via the dictionary
mlr_acqfunctions or with the associated sugar function acqf()
:
Parameters
"epsilon"
(numeric(1)
)
\(\epsilon\) value used to determine the amount of exploration. Higher values result in the importance of improvements predicted by the posterior mean decreasing relative to the importance of potential improvements in regions of high predictive uncertainty. Defaults to0
(standard Expected Improvement).
See also
Other Acquisition Function:
AcqFunction
,
mlr_acqfunctions
,
mlr_acqfunctions_aei
,
mlr_acqfunctions_cb
,
mlr_acqfunctions_ehvi
,
mlr_acqfunctions_ehvigh
,
mlr_acqfunctions_ei
,
mlr_acqfunctions_eips
,
mlr_acqfunctions_mean
,
mlr_acqfunctions_multi
,
mlr_acqfunctions_pi
,
mlr_acqfunctions_sd
,
mlr_acqfunctions_smsego
,
mlr_acqfunctions_stochastic_cb
,
mlr_acqfunctions_stochastic_ei
Super classes
bbotk::Objective
-> mlr3mbo::AcqFunction
-> AcqFunctionEILog
Public fields
y_best
(
numeric(1)
)
Best objective function value observed so far. In the case of maximization, this already includes the necessary change of sign.
Methods
Method new()
Creates a new instance of this R6 class.
Usage
AcqFunctionEILog$new(surrogate = NULL, epsilon = 0)
Arguments
surrogate
(
NULL
| SurrogateLearner).epsilon
(
numeric(1)
).
Examples
if (requireNamespace("mlr3learners") &
requireNamespace("DiceKriging") &
requireNamespace("rgenoud")) {
library(bbotk)
library(paradox)
library(mlr3learners)
library(data.table)
fun = function(xs) {
list(y = xs$x ^ 2)
}
domain = ps(x = p_dbl(lower = -10, upper = 10))
codomain = ps(y = p_dbl(tags = "minimize"))
objective = ObjectiveRFun$new(fun = fun, domain = domain, codomain = codomain)
instance = OptimInstanceBatchSingleCrit$new(
objective = objective,
terminator = trm("evals", n_evals = 5))
instance$eval_batch(data.table(x = c(-6, -5, 3, 9)))
learner = default_gp()
output_trafo = ot("log", invert_posterior = FALSE)
surrogate = srlrn(learner, output_trafo = output_trafo, archive = instance$archive)
acq_function = acqf("ei_log", surrogate = surrogate)
acq_function$surrogate$update()
acq_function$update()
acq_function$eval_dt(data.table(x = c(-1, 0, 1)))
}
#> acq_ei_log
#> <num>
#> 1: 0.004804737
#> 2: 0.008287288
#> 3: 0.012162093