【发布时间】:2020-08-20 15:42:13
【问题描述】:
我对@987654321@ 有一个后续问题。 与最初的问题一样,我正在使用 mlr3verse,拥有一个新数据集,并希望使用在自动调整期间表现良好的参数进行预测。该问题的答案是使用 at$train(task)。这似乎又开始了调优。它是否通过使用这些参数完全利用了嵌套重采样?
另外,查看$tuning_result 有两组参数,一组称为 tune_x 和一组称为 params。这些有什么区别?
谢谢。
编辑:下面添加的示例工作流
library(mlr3verse)
set.seed(56624)
task = tsk("mtcars")
learner = lrn("regr.xgboost")
tune_ps = ParamSet$new(list(
ParamDbl$new("eta", lower = .1, upper = .4),
ParamInt$new("max_depth", lower = 2, upper = 4)
))
at = AutoTuner$new(learner = learner,
resampling = rsmp("holdout"), # inner resampling
measures = msr("regr.mse"),
tune_ps = tune_ps,
terminator = term("evals", n_evals = 3),
tuner = tnr("random_search"))
rr = resample(task = task, learner = at, resampling = rsmp("cv", folds = 2),
store_models = TRUE)
rr$aggregate()
rr$score()
lapply(rr$learners, function(x) x$tuning_result)
at$train(task)
at$tuning_result
notreallynew.df = as.data.table(task)
at$predict_newdata(newdata = notreallynew.df)
【问题讨论】:
-
这看起来不像是编码问题;更像是一个理论 Q。
-
我的意思是它是一个编码/R6 对象问题,而不是一个理论问题。在运行嵌套重采样以调整模型(通过重采样或基准测试)之后,必须使用 at$train(task) 训练模型才能生成预测。该训练是否包含在嵌套重采样期间学到的任何内容?如果不是,可以使用什么代码从嵌套重采样中获取参数,使用这些参数训练模型,然后生成对新数据集的预测?
-
没有足够的数据或代码来支持答案。您需要发布足够多的内容来 a) 展示您尝试过的内容(使用代码和数据示例)和 b) 展示为寻找答案所做的努力。
-
所有这些都应该在mlr3book.mlr-org.com 或您使用的功能的帮助页面中进行解释。如果没有,请在相应的仓库中打开一个问题。
-
我添加了一个示例。我确实浏览了这本书,并且浏览了图库中的一些用例。如果有嵌套重采样后预测新数据的示例,请指出我,因为我错过了它。