mlr - 参数名称与使用方法参数的 randomForestSRC_var.select 过滤器冲突

mlr - parameter name clash with randomForestSRC_var.select filter using method argument

当我使用 randomForestSRC_var.select 过滤器并将方法参数传递给它时(例如 method="vh" 用于变量搜索)我得到一个名称冲突,因为内部函数也使用一个名为 method 的参数.这是在 Github 上作为问题提出的,但据说已解决:https://github.com/mlr-org/mlr/issues/1066. I have also opened an issue on Github: https://github.com/mlr-org/mlr/issues/2639 但我认为这可能是一个更合适的论坛,以防它不是错误而是我的错误。

这是我的代码:

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)
tuning = makeResampleDesc("CV", iters=2, stratify=TRUE) 
outer = makeResampleDesc("CV", iters=2, stratify=TRUE)

filt = makeFilterWrapper(
    makeLearner(cl="surv.coxph", id = "cox.filt.rfsrc", predict.type="response"), 
    fw.method="randomForestSRC_var.select",
    fw.abs=4,
    cache=TRUE,
    ntree=500,
    method="vh"
)
bmr = benchmark(filt, vet.task, outer, list(cindex), show.info = TRUE, models=TRUE, keep.extract=FALSE)
#> Task: VET, Learner: cox.filt.rfsrc.filtered
#> Resampling: cross-validation
#> Measures:             cindex
#> Error in (function (task, method = "randomForestSRC_importance", fval = NULL, : formal argument "method" matched by multiple actual arguments

reprex package (v0.3.0)

于 2019-09-25 创建

如果我将参数方法更改为 "metho" 以尝试避免冲突,我会得到一个不同的错误:

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)
tuning = makeResampleDesc("CV", iters=2, stratify=TRUE) 
outer = makeResampleDesc("CV", iters=2, stratify=TRUE)

filt = makeFilterWrapper(
    makeLearner(cl="surv.coxph", id = "cox.filt.rfsrc", predict.type="response"), 
    fw.method="randomForestSRC_var.select",
    fw.abs=4,
    cache=TRUE,
    ntree=500,
    metho="vh"
)
bmr = benchmark(filt, vet.task, outer, list(cindex), show.info = TRUE, models=TRUE, keep.extract=FALSE)
#> Task: VET, Learner: cox.filt.rfsrc.filtered
#> Resampling: cross-validation
#> Measures:             cindex
#> Error in -im[, 1L]: invalid argument to unary operator

reprex package (v0.3.0)

于 2019-09-25 创建

这个错误似乎来自以下行:

setNames(-im[, 1L], rownames(im))

在 RF 最小深度过滤器中,我假设暗示变量 im,即过滤器的结果,为 NULL(尽管我不确定为什么)。 有什么办法可以解决这个问题吗?抱歉在这里和 GH 上发帖。

已修复此 Pull Request 中的上游。