如何解决mlr3 优化的合奏平均值
我尝试使用超级学习器优化分类任务中两个逻辑回归的平均预测。
我的兴趣度量是 classif.auc
mlr3
帮助文件告诉我 (?mlr_learners_avg
)
使用权重对预测进行平均(按出现在 数据),这些数据使用非线性优化从 用于度量中提供的度量的包“nloptr”(默认为 classif.acc 用于 LearnerClassifAvg,regr.mse 用于 LearnerRegrAvg)。 可以从 $model 中获得学习的权重。使用非线性 优化在 SuperLearner R 包中实现。为了更 详细分析请读者参考 LeDell (2015)。
我有两个关于此信息的问题:
-
当我查看 source code 时,我认为
将它设置为LearnerClassifAvg$new()
默认为"classif.ce"
,这是真的吗? 我想我可以用classif.auc
param_set$values <- list(measure="classif.auc",optimizer="nloptr",log_level="warn")
-
帮助文件引用了
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 的元学习器。关于使用哪个优化例程的默认设置在 mlr3pipelines 和 SuperLearner 包之间有所不同,我们使用 NLOPT_LN_COBYLA
和 SuperLearner ... 通过 optim
函数使用 Nelder-Mead 方法来最小化秩损失 (from the documentation)。
因此,为了获得完全相同的行为,您需要实现一个 Nelder-Mead
bbotk::Optimizer
similar to here,它简单地将 stats::optim
与方法 Nelder-Mead
和仔细比较设置和停止标准。我相当有信心 NLOPT_LN_COBYLA
提供的结果有些类似,LeDell2015 对不同的优化器进行了比较以供进一步参考。
感谢您发现文档中的错误。我同意,描述有点不清楚,我会努力改进这一点!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。