【问题标题】:mlr3 optimized average of ensemblemlr3 优化的集合平均
【发布时间】:2021-04-02 23:29:04
【问题描述】:

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

我的兴趣是classif.auc

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

使用权重对预测进行平均(按照出现在 数据)使用非线性优化从 包“nloptr”用于度量中提供的度量(默认为 对于 LearnerClassifAvg 的 classif.acc 和对于 LearnerRegrAvg 的 regr.mse)。 学习的权重可以从 $model 获得。使用非线性 优化在 SuperLearner R 包中实现。对于更多 详细分析请参考 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。据我正确理解,上述论文中提出的“AUC-Maximizing Ensembles through Metalearning”解决方案在mlr3 中没有受到影响?还是我错过了什么?这个解决方案可以在mlr3 中应用吗?在mlr3 书中我发现了一段关于calling an external optimization function 的段落,SuperLearner 可以吗?

【问题讨论】:

  • > "默认为 "classif.ce",是这样吗?是的,严格来说需要在此处修复文档,尽管优化 classif.accclassif.ce 在功能上是等效的(一个最大化准确性,另一个最小化错误分类错误)。
  • 感谢您的澄清。据我正确理解LearnerClassifAvg 从 Nloptr 调用 NLOPT_LN_COBYLA 算法。您是否计划实施 AUC 最大化金属学习器(如引用的参考建议)?
  • 嗨!尝试类似的东西。工作了吗?如果是这样,你介意分享一段你所做的代码吗?谢谢!

标签: r mlr3 superlearner


【解决方案1】:

据我了解,LeDell2015 提出并评估了一种通用策略,该策略通过学习最佳权重将 AUC 优化为黑盒函数。他们并没有真正提出 最佳 策略或任何具体的默认值,因此我研究了 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 ,它只是使用方法 stats::optim 包装 Nelder-Mead 并仔细比较设置和停止条件。我相当有信心NLOPT_LN_COBYLA 提供了一些可比较的结果,LeDell2015 对不同的优化器进行了比较以供进一步参考。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 2019-02-16
    • 2015-10-05
    • 2015-01-09
    • 1970-01-01
    相关资源
    最近更新 更多