You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用mlr3tuning::ti调参遇报错及版本兼容问题,咨询函数可用性

关于mlr3中mlr3tuning::ti()函数的使用问题

报错复现示例

执行调参流程时出现报错,可复现代码及错误信息如下:

task <- tsk("sonar")
tuner <- mlr3tuning::tnr("mbo")
instance <- mlr3tuning::ti(task = task,
                           learner = mlr3tuningspaces::lts(mlr3::lrn("classif.rpart", predict_type = "prob")),
                           resampling = mlr3::rsmp("cv", folds = 5) ,
                           measures = mlr3::msrs(c("classif.auc", "classif.ce")),
                           terminator = mlr3tuning::trm("evals", n_evals = 20))

# 弃用提示
OptimInstanceMultiCrit is deprecated. Use OptimInstanceBatchMultiCrit instead.

tuner$optimize(instance)

# 报错信息
Error in private$.optimizer$optimize(inst) : 
  attempt to apply non-function

CRAN加载包时的版本冲突错误

仅从CRAN加载包时,出现版本依赖错误:

Loading required package: mlr3tuning
Loading required package: paradox
Error: package or namespace load failed for ‘mlr3tuning’ in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]):
 namespace ‘mlr3misc’ 0.15.0 is already loaded, but >= 0.15.0.9000 is required
Error: package ‘mlr3tuning’ could not be loaded

问题解答

1. ti()函数并未被移除

ti()是tune()的简写函数,当前仍可使用,报错源于版本依赖冲突和多目标调参实例的版本兼容问题。

2. 解决版本冲突问题

CRAN版的mlr3tuning依赖更高版本的mlr3misc(要求≥0.15.0.9000),但当前安装的是CRAN版mlr3misc 0.15.0,导致加载失败。解决步骤:

  • 卸载旧版mlr3misc并安装开发版:
remove.packages("mlr3misc")
remotes::install_github("mlr-org/mlr3misc")
  • 同步更新mlr3tuning到适配版本:
remotes::install_github("mlr-org/mlr3tuning")

3. 解决多目标调参的实例兼容问题

使用两个评价指标属于多目标调参场景,旧的OptimInstanceMultiCrit已被弃用,需改用新版的OptimInstanceBatchMultiCrit:

方式一:直接创建新版多目标实例

instance <- mlr3tuning::TuningInstanceBatchMultiCrit$new(
  task = task,
  learner = mlr3tuningspaces::lts(mlr3::lrn("classif.rpart", predict_type = "prob")),
  resampling = mlr3::rsmp("cv", folds = 5),
  measures = mlr3::msrs(c("classif.auc", "classif.ce")),
  terminator = mlr3tuning::trm("evals", n_evals = 20)
)
tuner$optimize(instance)

注意:部分调参器(如mbo)对多目标场景有额外配置要求,若仍报错,可先尝试单目标调参验证功能是否正常:

# 单目标调参示例
instance <- mlr3tuning::ti(task = task,
                           learner = mlr3tuningspaces::lts(mlr3::lrn("classif.rpart", predict_type = "prob")),
                           resampling = mlr3::rsmp("cv", folds = 5),
                           measures = mlr3::msr("classif.auc"),
                           terminator = mlr3tuning::trm("evals", n_evals = 20))
tuner$optimize(instance)

内容的提问来源于stack exchange,提问作者Pierre Levoisin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 17:15:17