This is a helper function that generates a default surrogate, based on properties of the objective function and the selected infill criterion.

For numeric-only (including integers) parameter spaces without any dependencies:

  • A Kriging model “” with kernel “matern3_2” is created.

  • If the objective function is deterministic we add a small nugget effect (10^-8*Var(y), y is vector of observed outcomes in current design) to increase numerical stability to hopefully prevent crashes of DiceKriging.

  • If the objective function is noisy the nugget effect will be estimated with nugget.estim = TRUE (but you can override this in .... Also jitter is set to TRUE to circumvent a problem with DiceKriging where already trained input values produce the exact trained output. For further information check the $note slot of the created learner.

  • Instead of the default "BFGS" optimization method we use rgenoud ("gen"), which is a hybrid algorithm, to combine global search based on genetic algorithms and local search based on gradients. This may improve the model fit and will less frequently produce a constant surrogate model. You can also override this setting in ....

For mixed numeric-categorical parameter spaces, or spaces with conditional parameters:

  • A random regression forest “regr.randomForest” with 500 trees is created.

  • The standard error of a prediction (if required by the infill criterion) is estimated by computing the jackknife-after-bootstrap. This is the se.method = "jackknife" option of the “regr.randomForest” Learner.

If additionally dependencies are in present in the parameter space, inactive conditional parameters are represented by missing NA values in the training design data.frame. We simply handle those with an imputation method, added to the random forest:

  • If a numeric value is inactive, i.e., missing, it will be imputed by 2 times the maximum of observed values

  • If a categorical value is inactive, i.e., missing, it will be imputed by the special class label "__miss__"

Both of these techniques make sense for tree-based methods and are usually hard to beat, see Ding (2010).

makeMBOLearner(control, fun, config = list(), ...)



Control object for mbo.


The same objective function which is also passed to mbo.


[named list]
Named list of config option to overwrite global settings set via configureMlr for this specific learner.


Further parameters passed to the constructed learner. Will overwrite mlrMBO's defaults.




Ding, Yufeng, and Jeffrey S. Simonoff. An investigation of missing data methods for classification trees applied to binary response data. Journal of Machine Learning Research 11.Jan (2010): 131-170.