使用 MLR 包进行超参数优化



我想使用 MLR 包调整随机森林的超参数。我有几个问题:

1( 如何决定应该调整哪些参数?我听说了一些关于保持 num.tree 在计算上尽可能高并调整 mtry 的事情?(不过我在网上找不到任何支持这一点的东西(

2( 我的调谐范围应该是多少?这里是参数的 0 到 1/3 之间的良好经验法则吗?如果是这样,如果我有不同的数据集(即,我会写什么而不是 lower=0 和 upper =10(?

3(最后,创建学习器两次是否有意义,一次使用makeLearner函数,我在par.vals中设置参数,然后使用makeTuneWrapper函数?那不是覆盖它吗?

learnerRF = makeLearner("regr.ranger", par.vals = list("num.trees" = 5000)) 
parsRF = makeParamSet(
makeIntegerParam("mtry", lower = 0 , upper = 10), 
)
tuneRF = makeTuneControlGrid() 
inner = makeResampleDesc("CV", iters = 10)
learnerRF = makeTuneWrapper(learnerRF, resampling = inner, par.set = parsRF,control = tuneRF, show.info = FALSE) 

你可以看看这两篇论文,它们试图回答你的问题:

http://jmlr.org/papers/v18/17-269.html

https://arxiv.org/abs/1804.03515

tuneRanger是一个专门用于调谐R中随机森林的软件包。

1 和 2 的答案是相同的——尽可能多地计算,即使参数的数量及其范围尽可能大。这将通过考虑最大数量的配置选项来提供最大可能的增益。

关于 3,在调用makeTuneWrapper()之前,您不必创建单独的学习器(并且在那里设置稍后调整的参数没有任何意义(。您可以像这样一步完成这两项操作:

learnerRF = makeTuneWrapper("regr.ranger", resampling = inner, par.set = parsRF, 
control = tuneRF, show.info = FALSE)

相关内容

  • 没有找到相关文章

最新更新