OptimizerRandomSearch class that implements a simple Random Search.

In order to support general termination criteria and parallelization, we evaluate points in a batch-fashion of size batch_size. Larger batches mean we can parallelize more, smaller batches imply a more fine-grained checking of termination criteria.

Source

Bergstra J, Bengio Y (2012). “Random Search for Hyper-Parameter Optimization.” Journal of Machine Learning Research, 13(10), 281--305. https://jmlr.csail.mit.edu/papers/v13/bergstra12a.html.

Dictionary

This Optimizer can be instantiated via the dictionary mlr_optimizers or with the associated sugar function opt():

mlr_optimizers$get("random_search")
opt("random_search")

Parameters

batch_size

integer(1)
Maximum number of points to try in a batch.

Super class

bbotk::Optimizer -> OptimizerRandomSearch

Methods

Public methods

Inherited methods

Method new()

Creates a new instance of this R6 class.

Usage

OptimizerRandomSearch$new()


Method clone()

The objects of this class are cloneable with this method.

Usage

OptimizerRandomSearch$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples

library(paradox) domain = ParamSet$new(list(ParamDbl$new("x", lower = -1, upper = 1))) search_space = ParamSet$new(list(ParamDbl$new("x", lower = -1, upper = 1))) codomain = ParamSet$new(list(ParamDbl$new("y", tags = "minimize"))) objective_function = function(xs) { list(y = as.numeric(xs)^2) } objective = ObjectiveRFun$new(fun = objective_function, domain = domain, codomain = codomain) terminator = trm("evals", n_evals = 10) instance = OptimInstanceSingleCrit$new(objective = objective, search_space = search_space, terminator = terminator) optimizer = opt("random_search") # Modifies the instance by reference optimizer$optimize(instance)
#> x x_domain y #> 1: 0.06042493 <list[1]> 0.003651172
# Returns best scoring evaluation instance$result
#> x x_domain y #> 1: 0.06042493 <list[1]> 0.003651172
# Allows access of data.table of full path of all evaluations instance$archive$data()
#> x y x_domain timestamp batch_nr #> 1: 0.47063920 0.221501254 <list[1]> 2020-10-25 04:09:53 1 #> 2: -0.60808653 0.369769233 <list[1]> 2020-10-25 04:09:53 2 #> 3: 0.96107935 0.923673516 <list[1]> 2020-10-25 04:09:53 3 #> 4: 0.48304306 0.233330596 <list[1]> 2020-10-25 04:09:53 4 #> 5: -0.89710745 0.804801772 <list[1]> 2020-10-25 04:09:53 5 #> 6: 0.06042493 0.003651172 <list[1]> 2020-10-25 04:09:53 6 #> 7: 0.39164776 0.153387966 <list[1]> 2020-10-25 04:09:53 7 #> 8: 0.37711201 0.142213466 <list[1]> 2020-10-25 04:09:53 8 #> 9: -0.93753935 0.878980032 <list[1]> 2020-10-25 04:09:53 9 #> 10: -0.54887493 0.301263690 <list[1]> 2020-10-25 04:09:53 10