Benchmark Multiple Learners on Multiple Tasks
Runs a benchmark on arbitrary combinations of tasks (Task), learners (Learner), and resampling strategies (Resampling), possibly in parallel.
benchmark(design, store_models = FALSE, store_backends = TRUE)
design |
( |
store_models |
( |
store_backends |
( |
This function can be parallelized with the future package.
One job is one resampling iteration, and all jobs are send to an apply function
from future.apply in a single batch.
To select a parallel backend, use future::plan()
.
This function supports progress bars via the package progressr.
Simply wrap the function in progressr::with_progress()
to enable them.
We recommend to use package progress as backend; enable with
progressr::handlers("progress")
.
To suppress output and reduce verbosity, you can lower the log from the
default level "info"
to "warn"
:
lgr::get_logger("mlr3")$set_threshold("warn")
To get additional log output for debugging, increase the log level to "debug"
or "trace"
:
lgr::get_logger("mlr3")$set_threshold("debug")
To log to a file or a data base, see the documentation of lgr::lgr-package.
The fitted models are discarded after the predictions have been scored in order to reduce memory consumption.
If you need access to the models for later analysis, set store_models
to TRUE
.
# benchmarking with benchmark_grid() tasks = lapply(c("penguins", "sonar"), tsk) learners = lapply(c("classif.featureless", "classif.rpart"), lrn) resamplings = rsmp("cv", folds = 3) design = benchmark_grid(tasks, learners, resamplings) print(design) set.seed(123) bmr = benchmark(design) ## Data of all resamplings head(as.data.table(bmr)) ## Aggregated performance values aggr = bmr$aggregate() print(aggr) ## Extract predictions of first resampling result rr = aggr$resample_result[[1]] as.data.table(rr$prediction()) # Benchmarking with a custom design: # - fit classif.featureless on penguins with a 3-fold CV # - fit classif.rpart on sonar using a holdout tasks = list(tsk("penguins"), tsk("sonar")) learners = list(lrn("classif.featureless"), lrn("classif.rpart")) resamplings = list(rsmp("cv", folds = 3), rsmp("holdout")) design = data.table::data.table( task = tasks, learner = learners, resampling = resamplings ) ## Instantiate resamplings design$resampling = Map( function(task, resampling) resampling$clone()$instantiate(task), task = design$task, resampling = design$resampling ) ## Run benchmark bmr = benchmark(design) print(bmr) ## Get the training set of the 2nd iteration of the featureless learner on penguins rr = bmr$aggregate()[learner_id == "classif.featureless"]$resample_result[[1]] rr$resampling$train_set(2)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.