Description Usage Format Value Fields Methods Examples
An R6Class
to be optimized by hyperband
1 |
R6Class
object
Algorithm object
id
[string
]
An id for the Algorithm object
configuration
The configuration to use
initial.budget
The budget to use for the initialization of the model
init.fun
The function to initialize the model
train.fun
The function to carry out training
performance.fun
The function to measure the performance
$continue(budget)
continue training for budget
iterations
$getPerformance()
computes the performance of the model
$visPerformance()
visualizes the performance of the model
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | # we need some packages
library("ggplot2")
library("smoof")
library("data.table")
# we choose the 2 dimensional branin function
braninProb = makeBraninFunction()
# the branin function has 3 global minima
opt = data.table(x1 = getGlobalOptimum(braninProb)$param$x1,
x2 = getGlobalOptimum(braninProb)$param$x2)
param.set = getParamSet(braninProb)
#######################################
## define functions to use hyperband ##
#######################################
# config space
configSpace = makeParamSet(
makeNumericParam(id = "x1", lower = -5, upper = 10.1))
# sample fun
sample.fun = function(par.set, n.configs, ...) {
sampleValues(par = par.set, n = n.configs)
}
# init fun
init.fun = function(r, config, problem) {
x1 = unname(unlist(config))
x2 = runif(1, 0, 15)
mod = c(x1, x2)
return(mod)
}
# train fun
train.fun = function(mod, budget, problem) {
for(i in seq_len(budget)) {
mod.new = c(mod[[1]], mod[[2]] + rnorm(1, sd = 3))
if(performance.fun(mod.new) < performance.fun(mod))
mod = mod.new
}
return(mod)
}
# performance fun
performance.fun = function(model, problem) {
braninProb(c(model[[1]], model[[2]]))
}
#######################################
############# applications ############
#######################################
#### make branin algorithm object ####
obj = algorithm$new(
problem = braninProb,
id = "branin",
configuration = sample.fun(par.set = configSpace, n.configs = 1)[[1]],
initial.budget = 1,
init.fun = init.fun,
train.fun = train.fun,
performance.fun = performance.fun)
# we can inspect model of our algorithm object
obj$model
# the data matrix shows us the hyperparameters, the current budget and the performance
obj$algorithm.result$data.matrix
# if we are interested in the performance, we can also call the getPerformance method
obj$getPerformance()
# we can continue training our object for one iteration by calling
obj$continue(1)
# inspect of the data matrix has changed
obj$algorithm.result$data.matrix
# continue training for 18 iterations to obtain a total of 20 iterations
invisible(capture.output(replicate(18, obj$continue(1))))
# inspect model the model again
obj$model
# inspect the data matrix again
obj$algorithm.result$data.matrix
# we can immediately visualize the performance function
obj$visPerformance()
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.