微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 mlrMBO 和 mlr 进行超参数优化和调整

如何解决如何使用 mlrMBO 和 mlr 进行超参数优化和调整

我正在尝试在 R 中在目标是多类分类的数据集上训练 ML 算法(rf、adaboost、xgboost)。对于超参数调整,我使用 MLR 包。

我下面代码的目标是调整参数 mtry 和 nodesize,但将 ntrees 保持在 128(使用 mlrMBO)。但是,我收到以下错误消息。我该如何以正确的方式定义它?

rdesc <- makeResampleDesc("CV",stratify = T,iters=10L) 

traintask <- makeClassifTask(data = df_train,target = "more_than_X_perc_damage")
testtask <- makeClassifTask(data = df_test,target = "more_than_X_perc_damage")

lrn <- makeLearner("classif.randomForest",predict.type = "prob")

# parameter space 
params_to_tune <- makeParamSet(makeIntegerParam("ntree",lower = 128,upper = 128),makeNumericParam("mtry",lower = 0,upper = 1,trafo = function(x) ceiling(x*ncol(train_x))),makeNumericParam("nodesize",trafo = function(x) ceiling(nrow(train_x)^x)))

ctrl = makeTuneControlMBO(mbo.control=mlrMBO::makeMBOControl())
tuned_params <- tuneParams(learner = lrn,task = traintask,control = ctrl,par.set = params_to_tune,resampling = rdesc,measure=acc)

rf_tuned_learner <- setHyperPars(learner = lrn,par.vals = tuned_params$x)

rf_tuned_model <- mlr::train(rf_tuned_learner,traintask)

# prediction performance
pred <- predict(rf_tuned_model,testtask)
performance(pred) 
calculateConfusionMatrix(pred)
stats <- confusionMatrix(pred$data$response,pred$data$truth)
acc_rf_tune <- stats$overall[1] # accuracy
print(acc_rf_tune)

错误函数(fn,nvars,max = FALSE,pop.size = 1000,max.generations = 100,: Domains[,1] 必须小于或等于 Domains[,2]

提前致谢!

解决方法

您可以通过不在 ParamSet 中包含您想要保持不变的超参数,而是将其设置为您在创建学习器时想要的值来实现。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。