【问题标题】:How to test our model in mlr3 with nested hyperparameter optimization如何使用嵌套超参数优化在 mlr3 中测试我们的模型
【发布时间】:2020-12-15 22:57:54
【问题描述】:

刚开始学习mlr3,看了mlr3的书(参数优化)。 在书中,他们提供了嵌套超参数的示例,但我不知道如何提供最终预测,即预测(模型、测试数据)。以下代码提供了学习器、任务、内部重采样(holdout)、外部重采样(3-fold CV)和网格搜索以进行调优。我的问题是:

(1) Dont we need to train the optimized model i.e. at in this case like train(at, task) ?

(2) After train, how to predict the data with test data as I am not seeing any splits of train and test data?

The code taken from mlr3 book (https://mlr3book.mlr-org.com/nested-resampling.html) is as follows:  

library("mlr3tuning")
task = tsk("iris")
learner = lrn("classif.rpart")
resampling = rsmp("holdout")
measure = msr("classif.ce")
param_set = paradox::ParamSet$new(
  params = list(paradox::ParamDbl$new("cp", lower = 0.001, upper = 0.1)))
terminator = trm("evals", n_evals = 5)
tuner = tnr("grid_search", resolution = 10)

at = AutoTuner$new(learner, resampling, measure = measure,
  param_set, terminator, tuner = tuner)

rr = resample(task = task, learner = at, resampling = resampling_outer)

【问题讨论】:

  • 这是常见的“CV vs train/predict”误解。我可能会很快写一篇关于此的博客文章,以避免在此类问题中一遍又一遍地重复自己:)
  • @pat-s,我会等你的帖子,但你能在这里简短地回答我的问题吗?我现在很困惑,无法继续。
  • 对交叉验证的含义和返回的内容进行一些研究(以及它与“正常”训练/预测有何不同。那里有很多材料:) 也搜索一下在stats.stackexchange.com。我现在只能说两句话。
  • @pat-s,谢谢你的建议。我用 R 语言(不是 mlr3)使用它们。首先我们将数据分为训练和测试,然后对训练数据进行 CV 并训练模型。然后用测试数据进行预测。我对mlr3感到困惑。在 mlr3 gallery German credit example 中,他们将数据划分为训练集和测试集,但是当他们在同一教程中使用超参数优化时,他们没有像我上面提供的代码那样将数据划分为训练集/测试集。跨度>
  • 您使用的代码多次将数据拆分为不同的训练集和测试集,每次都评估模型的性能并据此针对最佳超参数做出决策。在运行代码时,您应该会看到有关观察到的性能的信息。

标签: mlr3


【解决方案1】:

【讨论】:

  • 谢谢...为什么不应该使用您在文章中提到的基准和重采样功能。在我看来,在哪些情况下我们需要使用 resample 以及在哪些情况下我们需要 train() 和 predict() 方法时,我仍然感到困惑。
猜你喜欢
  • 1970-01-01
  • 2017-10-30
  • 1970-01-01
  • 2022-07-15
  • 2022-05-29
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
相关资源
最近更新 更多