mlr3 优化的整体平均数

mlr3 optimized average of ensemble

我尝试使用超级学习器优化分类任务中两个逻辑回归的平均预测。

我感兴趣的指标是classif.auc

mlr3 帮助文件告诉我 (?mlr_learners_avg)

Predictions are averaged using weights (in order of appearance in the data) which are optimized using nonlinear optimization from the package "nloptr" for a measure provided in measure (defaults to classif.acc for LearnerClassifAvg and regr.mse for LearnerRegrAvg). Learned weights can be obtained from $model. Using non-linear optimization is implemented in the SuperLearner R package. For a more detailed analysis the reader is referred to LeDell (2015).

关于此信息我有两个问题:

  1. 当我查看 source code 时,我认为 LearnerClassifAvg$new() 默认为 "classif.ce",是这样吗? 我想我可以将它设置为 classif.aucparam_set$values <- list(measure="classif.auc",optimizer="nloptr",log_level="warn")

  2. 帮助文件参考了SuperLearner包和LeDell 2015. As I understand it correctly, the proposed "AUC-Maximizing Ensembles through Metalearning" solution from the paper above is, however, not impelemented in mlr3? Or do I miss something? Could this solution be applied in mlr3? In the mlr3 book I found a paragraph regarding calling an external optimization functionSuperLearner可以吗?

据我了解,LeDell2015提出并评估了一种通过学习最优权重将AUC优化为黑盒函数的通用策略。他们并没有真正提出 best 策略或任何具体的默认设置,所以我研究了 SuperLearner 包的 AUC 优化策略的默认设置。

假设我正确理解了论文:

LearnerClassifAvg 基本上实现了 LeDell2015 中提出的建议,即它使用非-优化 any 指标的权重线性优化。 LeDell2015关注优化AUC的特例。正如您正确指出的那样,通过将度量设置为 "classif.auc",您将获得一个优化 AUC 的元学习器。关于使用哪个优化例程的默认值在 mlr3pipelinesSuperLearner 包之间存在偏差,我们在其中使用 NLOPT_LN_COBYLASuperLearner ... 通过 optim 函数使用 Nelder-Mead 方法来最小化等级损失 (from the documentation).

因此,为了获得完全相同的行为,您需要实施 Nelder-Mead bbotk::Optimizer similar to here that simply wraps stats::optim with method Nelder-Mead and carefully compare settings and stopping criteria. I am fairly confident that NLOPT_LN_COBYLA delivers somewhat comparable results, LeDell2015 对不同的优化器进行比较以供进一步参考。

感谢您发现文档中的错误。我同意,描述有点不清楚,我会努力改进!