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

基于mlr3 R库的Ranger模型网格搜索调参:指定max.depth取值

mlr3verse中Ranger模型网格搜索仅指定特定参数值

问题描述

我使用mlr3verse运行Ranger模型的网格搜索时,希望仅针对max.depth=5和max.depth=10进行搜索,但当前代码会遍历5到10的所有整数(共6个候选参数),代码如下:

task <- TaskClassif$new("df_cont_train.binary", df_cont_train, target = "label", positive = "1")

ss = ps(
  max.depth  = p_int(lower = 5, upper = 10)
)

instance = ti(
  task = task,
  learner = lrn("classif.ranger"),
  resampling = rsmp("cv", folds = 3),
  search_space = ss,
  terminator=trm("none")
)

tnr("grid_search")$optimize(instance)

解决方案

只需修改参数空间的定义,直接指定max.depth的候选值即可,有两种简洁的实现方式:

方式1:使用p_int的values参数

直接在p_int中通过values参数传入想要的整数列表,替代原来的lower和upper:

ss = ps(
  max.depth = p_int(values = c(5, 10))
)

方式2:使用p_fct定义离散参数

将max.depth定义为因子类型,指定候选的数值(内部会自动转换为整数适配模型):

ss = ps(
  max.depth = p_fct(levels = c("5", "10"), trafo = as.integer)
)

修改后运行原有的网格搜索代码,就只会针对max.depth=5和max.depth=10这两个参数值进行交叉验证搜索了。

内容的提问来源于stack exchange,提问作者Little L

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 22:43:16