mlr-无法在ranger_permutation过滤器中使用参数“重要性”

时间:2019-09-25 04:33:39

标签: r mlr

当我尝试使用过滤器“ ranger_permutation”并将一些参数传递给makeFilterWrapper中的过滤器时,我发现我无法使用参数“重要性”,因为该名称与另一个参数冲突,但是我不明白在哪里或为什么。当我运行下面的代码时,我收到以下错误消息:

Error in setHyperPars(learner = wl, ..., par.vals = par.vals): 
Assertion on 'parameter settings' failed: Must have unique names, but element 4 is duplicated

在使用其他基础学习者时也会出现此错误。如果删除参数“重要性”,则问题会消失,但如果删除其他参数,则问题不会消失。同样,我可以使用相同的参数自行运行护林员,而不是作为过滤器。

library(survival)
#> Warning: package 'survival' was built under R version 3.5.3
library(mlr)
#> Loading required package: ParamHelpers

data(veteran)
set.seed(24601)
task_id = "VET"
vet.task <- makeSurvTask(id = task_id, data = veteran, target = c("time", "status"))
vet.task <- createDummyFeatures(vet.task)
outer = makeResampleDesc("CV", iters=2, stratify=TRUE)


set.seed(24601, "L'Ecuyer") 
cox.lrn <- makeLearner(cl="surv.coxph", id = "Ranger_Cox", predict.type="response")
filt <- makeFilterWrapper(cox.lrn, fw.method="ranger_permutation", fw.abs=5, cache=TRUE, num.trees=1000, splitrule="maxstat", importance="permutation")
bmr = benchmark(filt, vet.task, outer, list(cindex), show.info = TRUE, models=TRUE, keep.extract=TRUE)      
#> Task: VET, Learner: Ranger_Cox.filtered
#> Resampling: cross-validation
#> Measures:             cindex
#> Error in setHyperPars(learner = wl, ..., par.vals = par.vals): Assertion on 'parameter settings' failed: Must have unique names, but element 4 is duplicated.

reprex package(v0.3.0)于2019-09-25创建

1 个答案:

答案 0 :(得分:1)

设置fw.method = "ranger_permutation"importance = "permutation"已在内部设置。因此,当您强制importance = "permutation"时,它定义了两次(重复),并且错误检查失败。

这可以从mlr实现中看到:https://github.com/mlr-org/mlr/blob/master/R/Filter.R makeFilter(name = "ranger_permutation"...已经定义了importance = "permutation"