将getOOBPred与嵌套的重采样和参数调整相结合

时间:2018-09-11 15:29:13

标签: r random-forest mlr

R::mlr包中,我从the tutorial that the getOOBPreds function that I can access the out-of-bag predictions from say a random forest model阅读,但是我无法弄清楚如何在用于调整超参数的嵌套重采样过程中使用它。

我知道内部循环应该以某种方式提供

感谢您分享见解/提示!

我尝试作为内循环:

makeTuneWrapper(lrnr,
  resampling = "oob",
  par.set = params,
  control = ctrl,
  show.info = TRUE,
  measures =  list(logloss, multiclass.brier,
timetrain))

...但是参数重采样的值"oob"无效。

暂定MRE:

library(mlr)

# Task
tsk = iris.task
# Learner
lrnr <- makeLearner("classif.randomForestSRC", predict.type = "prob")
# Hyperparameters
params <- makeParamSet(makeIntegerParam("mtry",lower = 2,upper = 10),
                   makeIntegerParam("nodesize",lower = 1,upper = 100),
                   makeIntegerParam("nsplit",lower = 1,upper = 20))
# Validation strategy
rdesc_inner_oob <- makeResampleDesc("oob")  # FAILS
ctrl <- makeTuneControlRandom(maxit = 10L)
tuning_lrnr = makeTuneWrapper(lrnr,
                   # resampling = oob,        # ALSO WRONG
                   resampling = rdesc_inner_oob,
                   par.set = params,
                   control = ctrl,
                   measures =  list(logloss, multiclass.brier, timetrain))

outer = makeResampleDesc("CV", iters = 3)
r = resample(learner  = tuning_lrnr,
           task       = tsk,
           resampling = outer,
           extract    = getOOBPreds,
           show.info  = TRUE,
           measures   = list(multiclass.brier))

0 个答案:

没有答案