我正在尝试使用 mlr 和 univariate.model.score 过滤器在 R 中执行特征选择。在文档中,它说surv.rpart是此过滤器的默认学习器。我的数据集包含经过审查的生存数据,我想使用不同的学习器,例如surv.coxph,但我对如何做到这一点感到困惑。换句话说,我希望univariate.model.score过滤器使用cindex和Cox模型创建其分数。
我会使用 makeFilterWrapper 来实现吗?
例如combo.task <- makeSurvTask(data = combo_baseline, target = c("timeToEvent", "status"))
cox.lrn <- makeLearner(cl="surv.coxph", predict.type="response")
inner = makeResampleDesc("CV", iters=5)
lrn = makeFilterWrapper(learner = cox.lrn, fw.method="univariate.model.score", fw.abs=10)
res = resample(learner = lrn, task = combo.task, resampling=inner, models=TRUE)
res$aggr
我无法共享数据,所以我没有提供任何数据,但我希望有人可以告诉我如何正确使用代码。谢谢。
我通过阅读 mlr 代码找到了答案。过滤器"univariate.model.score"采用参数perf.learner,该参数允许您指定用于评估过滤器性能的学习器。例如:
combo.task <- makeSurvTask(data = combo_baseline, target = c("timeToEvent", "status"))
cox.lrn <- makeLearner(cl="surv.coxph", predict.type="response")
inner = makeResampleDesc("CV", iters=5)
lrn = makeFilterWrapper(learner = cox.lrn, fw.method="univariate.model.score", fw.abs=10, perf.learner=cox.lrn)
res = resample(learner = lrn, task = combo.task, resampling=inner, models=TRUE)
它还采用参数 perf.measure(性能度量)和 perf.resampleling(重采样策略)。