Я ищу оптимальные настройки гиперпараметров и понимаю, что в MLR могу сделать это обоими способами. эталонная функция и функция повторной выборки. Какая разница между двумя?
Если бы я делал это с помощью бенчмарка, я мог бы сравнить несколько моделей и извлечь настроенные параметры, что является преимуществом перед повторной выборкой. Вместо этого, если бы я использовал повторную выборку, я мог бы настраивать только одну модель за раз, и я также заметил, что мой процессор взлетел до небес.
как и когда я должен использовать одну над другой?
data(BostonHousing, package = "mlbench")
BostonHousing$chas <- as.integer(levels(BostonHousing$chas))[BostonHousing$chas]
library('mlr')
library('parallel')
library("parallelMap")
# ---- define learning tasks -------
regr.task = makeRegrTask(id = "bh", data = BostonHousing, target = "medv")
# ---- tune Hyperparameters --------
set.seed(1234)
# Define a search space for each learner'S parameter
ps_xgb = makeParamSet(
makeIntegerParam("nrounds",lower=5,upper=50),
makeIntegerParam("max_depth",lower=3,upper=15),
# makeNumericParam("lambda",lower=0.55,upper=0.60),
# makeNumericParam("gamma",lower=0,upper=5),
makeNumericParam("eta", lower = 0.01, upper = 1),
makeNumericParam("subsample", lower = 0, upper = 1),
makeNumericParam("min_child_weight",lower=1,upper=10),
makeNumericParam("colsample_bytree",lower = 0.1,upper = 1)
)
# Choose a resampling strategy
rdesc = makeResampleDesc("CV", iters = 5L)
# Choose a performance measure
meas = rmse
# Choose a tuning method
ctrl = makeTuneControlRandom(maxit = 30L)
# Make tuning wrappers
tuned.lm = makeLearner("regr.lm")
tuned.xgb = makeTuneWrapper(learner = "regr.xgboost", resampling = rdesc, measures = meas,
par.set = ps_xgb, control = ctrl, show.info = FALSE)
# -------- Benchmark experiements -----------
# Four learners to be compared
lrns = list(tuned.lm, tuned.xgb)
#setup Parallelization
parallelStart(mode = "socket", #multicore #socket
cpus = detectCores(),
# level = "mlr.tuneParams",
mc.set.seed = TRUE)
# Conduct the benchmark experiment
bmr = benchmark(learners = lrns,
tasks = regr.task,
resamplings = rdesc,
measures = rmse,
keep.extract = T,
models = F,
show.info = F)
parallelStop()
# ------ Extract HyperParameters -----
bmr_hp <- getBMRTuneResults(bmr)
bmr_hp$bh$regr.xgboost.tuned[[1]]
res <-
resample(
tuned.xgb,
regr.task,
resampling = rdesc,
extract = getTuneResult, #getFeatSelResult, getTuneResult
show.info = TRUE,
measures = meas
)
res$extract