hyperband: Hyperband

Description Usage Arguments Value Examples

Description

Runs hyperband

Usage

1
2
hyperband(problem, max.resources = 81, prop.discard = 3, max.perf = TRUE,
  id, par.set, sample.fun, init.fun, train.fun, performance.fun, ...)

Arguments

problem

[list()]
List containing data and other information required for train

max.resources

[integer()]
The maximum amount of resource that canbe allocated to a single configuration

prop.discard

[integer()]
An input that controls the proportion of configurations discarded in each round of successive halving

max.perf

[logical()]
TRUE if to maximize the performance (e.g. accuracy of a neural net), FALSE if to minimize the performance (e.g. find the minimum of the branin function).
Default: TRUE

id

[string]
An id for each Algorithm object in the bracket object

par.set


The parameter set to sample from

sample.fun


The function to sample from par.set

init.fun


The function to initial a model

train.fun


The function to carry out training

performance.fun

The function to measure the performance

...

Further arguments

Value

List of brackets

Examples

 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
# 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]]))
}

hyperhyper = hyperband(
 problem = braninProb,
 max.resources = 81,
 prop.discard = 3,
 max.perf = FALSE,
 id = "branin",
 par.set = configSpace,
 sample.fun =  sample.fun,
 init.fun = init.fun,
 train.fun = train.fun,
 performance.fun = performance.fun)

# get the best performance of each bracket
lapply(hyperhyper, function(x) x$getPerformances())

ja-thomas/hyperbandr documentation built on May 6, 2019, 8:33 p.m.