【发布时间】:2021-12-29 17:51:25
【问题描述】:
mlr3 生态系统中是否有使用贝叶斯优化的超参数调谐器?
特别是作为包装函数中的参数
tuner = tnr("grid_search", resolution = 10)
?
否则,mlr3 支持的推荐调整方法是什么?
更新: 我尝试关注@Sebastian 的mlr3mbo link——尤其是“使用默认值的简单调优示例”部分。
但是,当我尝试在 tune_nested 中使用它时
rr = tune_nested(
method = "mbo",
task,
learner=lrn("surv.cv_glmnet", nfolds=3, type.measure = "C", alpha = to_tune(0.01, 1)) ,
inner_resampling = rsmp("cv", folds = 10),
outer_resampling = rsmp("cv", folds = 10),
measure = msr("surv.cindex"),
term_evals = 20
)
我得到错误:
Error in auto_tuner(method, learner, inner_resampling, measure, term_evals, :
Assertion on 'method' failed: Must be element of set {'cmaes','design_points','gensa','grid_search','irace','nloptr','random_search'}, but is 'mbo'.
Calls: tune_nested ... auto_tuner -> assert_choice -> makeAssertion -> mstop
UPDATE2:按照@Sebastian 的有益建议使用devtools::install_github("mlr-org/mlr3mbo@add_tuner") 后,我收到以下错误消息:
Error in .__ParamSet__search_space(self = self, private = private, super = super, :
Assertion on 'names(values)' failed: Must have names.
lrn() 中的alpha = to_tune(0.01, 1) 是否没有充分指定 HP alpha 所需的名称和值范围?
有没有办法解决这个问题?谢谢!
解决方案: 感谢@Sebastian 解决了这个问题——在他的评论中:
像
search_space = ps(alpha = p_dbl(0.01, 1))一样手动定义search_space,然后将其作为search_space参数传递给tune_nested
超级棒!
【问题讨论】:
-
我想你正在寻找的描述在their book。
-
贝叶斯优化也可以使用mlr3mbo
-
我很快就做到了,它似乎工作正常,但不能保证。只需运行 devtools::install_github("mlr-org/mlr3mbo@add_tuner") 即可安装分支
-
如果像
search_space = ps(alpha = p_dbl(0.01, 1))一样手动定义search_space,然后将其作为search_space参数传递给tune_nested,是否还会出现错误? -
+1 !!!谢谢@塞巴斯蒂安!!这行得通!我还将您的评论添加到主要帖子中,以防它帮助其他人。再次感谢!
标签: r bayesian hyperparameters mlr3