如何在mlr3tuningspaces中为xgboost hyperband优化设置budget标签
mlr3中使用默认调优空间运行Hyperband的budget标签配置方法
lts()返回的默认搜索空间默认不会给控制训练轮次的nrounds参数打上Hyperband强制要求的budget标签,不用手动重写整套搜索空间,直接修改参数集的标签属性就能完成适配。
操作逻辑
- 用
lts()加载xgboost的官方默认搜索空间 - 给搜索空间内的
nrounds参数追加budget标签 - 按需调整
nrounds的取值范围,匹配你预期的最大训练轮次预算 - 直接把处理好的搜索空间传入
tune()函数,即可正常运行Hyperband调优
可运行复现代码
library(mlr3verse) library(mlr3hyperband) library(mlr3tuningspaces) # 加载官方默认调优搜索空间 search_space = lts("classif.xgboost.default") # 给nrounds添加Hyperband要求的budget标签 search_space$tags$nrounds = c(search_space$tags$nrounds, "budget") # 按需调整nrounds的取值范围,默认范围可能不符合Hyperband的多预算调度要求 search_space$params$nrounds$lower = 1 search_space$params$nrounds$upper = 128 # 执行Hyperband超参数调优 instance = tune( method = "hyperband", task = tsk("pima"), learner = lrn("classif.xgboost", eval_metric = "logloss"), resampling = rsmp("cv", folds = 3), measures = msr("classif.ce"), search_space = search_space, term_evals = 100 ) # 输出最优超参数配置 instance$result
避坑提示
- 你贴的手动定义搜索空间的示例里存在笔误:正确标签名是
budget,不是bugdget,拼写错误会导致Hyperband无法识别预算参数直接报错。 - 这套操作逻辑适配所有符合mlr3规范的学习器:如果使用LightGBM、Torch深度学习模型等其他学习器,只要找到对应控制训练迭代轮次的参数(比如LightGBM的
num_iterations、Torch模型的epochs),追加budget标签即可适配Hyperband流程。 - 不需要手动重写搜索空间里的其他参数,
lts()提供的默认搜索空间已经覆盖了xgboost常用调优超参数,直接修改标签和范围即可复用官方预设的参数范围经验值。
内容的提问来源于stack exchange,提问作者user2165907
相关产品推荐
相关产品推荐

