【问题标题】:How to interpret the aggregated performance result of nested resampling in mlr3?如何解释 mlr3 中嵌套重采样的聚合性能结果?
【发布时间】:2021-05-23 08:31:58
【问题描述】:

最近我正在学习 mlr3 包中的嵌套重采样。根据 mlr3 的书,嵌套重采样的目标是为学习者获得无偏的性能估计。我运行如下测试:

# loading packages
library(mlr3)
library(paradox)
library(mlr3tuning)

# setting tune_grid
tune_grid <- ParamSet$new(
  list(
  ParamInt$new("mtry", lower = 1, upper = 15),
  ParamInt$new("num.trees", lower = 50, upper = 200))
  )

# setting AutoTuner
at <- AutoTuner$new(
  learner = lrn("classif.ranger", predict_type = "prob"),
  resampling = rsmp("cv", folds = 5),
  measure = msr("classif.auc"),
  search_space = tune_grid,
  tuner = tnr("grid_search", resolution = 3),
  terminator = trm("none"),
  store_tuning_instance = TRUE)

# nested resampling
set.seed(100)
resampling_outer <- rsmp("cv", folds = 3)   # outer resampling
rr <- resample(task_train, at, resampling_outer, store_models = TRUE)

> lapply(rr$learners, function(x) x$tuning_result)
[[1]]
   mtry num.trees learner_param_vals  x_domain classif.auc
1:    1       200          <list[2]> <list[2]>   0.7584991

[[2]]
   mtry num.trees learner_param_vals  x_domain classif.auc
1:    1       200          <list[2]> <list[2]>   0.7637077

[[3]]
   mtry num.trees learner_param_vals  x_domain classif.auc
1:    1       125          <list[2]> <list[2]>   0.7645588

> rr$aggregate(msr("classif.auc"))
classif.auc 
  0.7624477 

结果表明,从 3 个内部重采样中选择的 3 个超参数不能保证相同。它类似于这篇文章(它从内部重采样中得到 3 个不同的 cp):mlr3 resample autotuner - not showing tuned parameters?.

我的问题是:

  1. 我曾经认为聚合结果 rr$aggregate 是 3 个模型的平均值,但它不是,(0.7584991 + 0.7637077 + 0.7645588) / 3 = 0.7622552,不是 0.7624477,做我误解了汇总结果?
  2. 如何解释来自内部重采样过程的具有不同最佳超参数的 3 个模型的聚合性能结果?这是对什么的公正表现?

谢谢!

【问题讨论】:

    标签: r resampling hyperparameters mlr3


    【解决方案1】:

    结果表明,从 3 个内部重采样中选择的 3 个超参数不保证相同。

    听起来您想使用在内部重采样中选择的超参数来拟合最终模型。嵌套重采样不用于为最终模型选择超参数值。仅检查稳定超参数的内部调整结果。这意味着选择的超参数不应该变化太大。

    1. 是的,您将所有外部重采样测试集 (rr$aggregate()) 的汇总性能与 内部重采样 测试集 (lapply(rr$learners, function(x) x$tuning_result)) 的估计性能进行比较)。

    2. 所有外部重采样迭代的聚合性能是具有通过网格搜索找到的最佳超参数的游侠模型的无偏性能。您可以运行at$train(task) 来获得最终模型,并将嵌套重采样估计的性能报告为该模型的无偏性能。

    【讨论】:

    • 非常感谢!它从这一点解决了我的困惑:外部重采样的结果是具有通过网格搜索找到的最佳超参数的模型的无偏性能。现在我明白rr$aggregate() 的结果是外部重采样性能的平均值,而不是内部重采样。@be-marc
    猜你喜欢
    • 2010-12-24
    • 2019-08-22
    • 1970-01-01
    • 1970-01-01
    • 2022-03-07
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多