r - MLR:如何围绕学习器选择指定特征?

标签 r feature-selection mlr

我想比较简单的逻辑回归模型,其中每个模型仅考虑一组指定的特征。我想在数据重新采样时对这些回归模型进行比较。

R 包 mlr 允许我使用 dropFeatures 在任务级别选择列。代码类似于:

full_task = makeClassifTask(id = "full task", data = my_data, target = "target")
reduced_task = dropFeatures(full_task, setdiff( getTaskFeatureNames(full_task), list_feat_keep))

然后我可以在有任务列表的情况下进行基准实验。

lrn = makeLearner("classif.logreg", predict.type = "prob") 
rdesc = makeResampleDesc(method = "Bootstrap", iters = 50, stratify = TRUE)
bmr = benchmark(lrn, list(full_task, reduced_task), rdesc, measures = auc, show.info = FALSE)

如何生成仅考虑一组指定特征的学习器。 据我所知,过滤器或选择方法总是应用一些统计 程序,但不允许直接选择功能。谢谢!

最佳答案

第一个解决方案是懒惰的,也不是最优的,因为过滤器计算仍在进行:

library(mlr)
task = sonar.task
sel.feats = c("V1", "V10")
lrn = makeLearner("classif.logreg", predict.type = "prob")
lrn.reduced = makeFilterWrapper(learner = lrn, fw.method = "variance", fw.abs = 2, fw.mandatory.feat = sel.feats)
bmr = benchmark(list(lrn, lrn.reduced), task, cv3, measures = auc, show.info = FALSE)

第二个使用预处理包装器来过滤数据,应该是最快的解决方案,也更灵活:

lrn.reduced.2 = makePreprocWrapper(
  learner = lrn, 
  train = function(data, target, args) list(data = data[, c(sel.feats, target)], control = list()),
  predict = function(data, target, args, control) data[, sel.feats]
)
bmr = benchmark(list(lrn, lrn.reduced.2), task, cv3, measures = auc, show.info = FALSE)

关于r - MLR:如何围绕学习器选择指定特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49535443/

相关文章:

r - 在 mlr 中调整整数向量

r - 如何使用 R 包 'hash' 访问 R 中的整数键

r - 标记绘图区域外的线尾

与 r 的秩双序列相关

r - 当在设定的时间段内记录零时,删除数据帧的部分内容

feature-selection - Python 中的 RReliefF 特征选择

random - 关于sklearn中的mutual_info_classif,在特征选择方面对random_state的使用感到困惑

ios - 如何在 iOS 上实现功能关闭开关

r - 没有默认值的错误 : argument "x" is missing,?

R 包 mlr 耗尽多核内存