mlr3 优化的合奏平均值

问题描述

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

我的兴趣度量是 classif.auc

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

使用权重对预测进行平均(按出现在 数据),这些数据使用非线性优化从 用于度量中提供的度量的包“nloptr”(认为 classif.acc 用于 LearnerClassifAvg,regr.mse 用于 LearnerRegrAvg)。 可以从 $model 中获得学习的权重。使用非线性 优化在 SuperLearner R 包中实现。为了更 详细分析请读者参考 LeDell (2015)。

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

  1. 当我查看 source code 时,我认为 LearnerClassifAvg$new() 认为 "classif.ce",这是真的吗? 我想我可以用 classif.auc

    将它设置为 param_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 可能吗?

解决方法

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

假设我正确理解了这篇论文:

LearnerClassifAvg 基本上实现了 LeDell2015 中提出的内容,即它使用非线性优化来优化任何 指标的权重。 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 对不同的优化器进行了比较以供进一步参考。

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...