【问题标题】:R caret / rfe variable selection for factors() AND NAs因子()和NA的R插入符号/ rfe变量选择
【发布时间】:2015-01-11 14:20:57
【问题描述】:

我有一个包含NAs 的数据集。

此外,它还有需要为factors() 的列。

我正在使用caret 包中的rfe() 函数来选择变量。

似乎rfe() 中使用lmFuncsfunctions= 参数适用于具有NA 但不适用于因子变量的数据,而rfFuncs 适用于因子变量但不适用于NA。

对处理这个有什么建议吗?

我尝试了model.matrix(),但它似乎只会导致更多问题。

【问题讨论】:

  • 我怀疑lmFuncs 会因某些变量而失败。不过,我可以用一个可重复的例子来说服我。随机森林(默认情况下)不接受带有 NA 的案例这一事实只是该算法(或至少是它的 R 版本)的一个有据可查的“特征”。如果您想要无缝处理 NA 的基于树的模型,treebagFuncs 可能是更安全的选择(但我还没有测试过)。

标签: r r-caret


【解决方案1】:

由于包之间这些点的行为不一致,更不用说在使用更多“元”包(如caret)时的额外技巧,我总是发现在我做之前处理 NA 和因子变量更容易任何机器学习。

  • 对于 NA,忽略或估算(中位数、knn 等)。
  • 对于因子特征,model.matrix() 是正确的。它将让您为因子的不同级别生成一系列“虚拟”特征。典型的用法是这样的:
> dat = data.frame(x=factor(rep(1:3, each=5)))
> dat$x
 [1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
Levels: 1 2 3
> model.matrix(~ x - 1, data=dat)
   x1 x2 x3
1   1  0  0
2   1  0  0
3   1  0  0
4   1  0  0
5   1  0  0
6   0  1  0
7   0  1  0
8   0  1  0
9   0  1  0
10  0  1  0
11  0  0  1
12  0  0  1
13  0  0  1
14  0  0  1
15  0  0  1
attr(,"assign")
[1] 1 1 1
attr(,"contrasts")
attr(,"contrasts")$x
[1] "contr.treatment"

另外,以防万一你没有(虽然听起来你有),CRAN 上的caret 小插曲非常好,并且触及了其中一些要点。 http://cran.r-project.org/web/packages/caret/index.html

【讨论】:

    猜你喜欢
    • 2016-04-26
    • 2014-02-01
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    相关资源
    最近更新 更多