R/tuning.R

Defines functions .sense_space

# Bounds also apply to the smaller folds used by the stack itself. Keep a
# conservative neighbour count so candidate models remain trainable there.
.sense_space <- function(algos, n_features, min_train, resolution) {
  parameters <- list()
  add <- function(algo, values) {
    names(values) <- paste0("regr.", algo, ".", names(values))
    parameters <<- c(parameters, values)
  }
  for (algo in unique(algos)) {
    switch(algo,
      rpart = add(algo, list(cp = paradox::p_dbl(0, 1),
        minsplit = paradox::p_int(2, max(2L, n_features)), maxdepth = paradox::p_int(1, 10))),
      glmnet = add(algo, list(alpha = paradox::p_dbl(0, 1), s = paradox::p_dbl(1, 1000))),
      kknn = add(algo, list(k = paradox::p_int(1, max(1L, min(10L, min_train - 1L))),
        kernel = paradox::p_fct(c("rectangular", "triangular", "epanechnikov", "biweight", "triweight", "cos", "gaussian", "optimal", "inv")))),
      xgboost = add(algo, list(booster = paradox::p_fct(c("gbtree", "gblinear")),
        alpha = paradox::p_dbl(0, 1000, depends = quote(regr.xgboost.booster == "gblinear")),
        eta = paradox::p_dbl(0.01, 1, depends = quote(regr.xgboost.booster == "gbtree")),
        gamma = paradox::p_dbl(0, 1000, depends = quote(regr.xgboost.booster == "gbtree")),
        lambda = paradox::p_dbl(0, 1000, depends = quote(regr.xgboost.booster == "gblinear")))),
      ranger = add(algo, list(splitrule = paradox::p_fct(c("variance", "extratrees", "maxstat")),
        min.node.size = paradox::p_int(1, 30),
        mtry = paradox::p_int(1, max(1L, n_features)))),
      svm = add(algo, list(kernel = paradox::p_fct(c("linear", "polynomial", "radial", "sigmoid")),
        type = paradox::p_fct(c("eps-regression", "nu-regression")),
        nu = paradox::p_dbl(0.01, 1, depends = quote(regr.svm.type == "nu-regression")),
        gamma = paradox::p_dbl(0.001, 10, depends = quote(regr.svm.kernel %in% c("polynomial", "radial", "sigmoid"))),
        coef0 = paradox::p_dbl(-10, 10, depends = quote(regr.svm.kernel %in% c("polynomial", "sigmoid")))))
    )
  }
  do.call(paradox::ps, parameters)
}

Try the sense package in your browser

Any scripts or data that you put into this service are public.

sense documentation built on Sept. 8, 2026, 9:08 a.m.