【问题标题】:randomForest() machine learning in RR 中的 randomForest() 机器学习
【发布时间】:2014-04-11 19:27:12
【问题描述】:

我正在使用 R 中的函数 randomforest() 进行探索,我发现几篇文章都建议使用如下类似的逻辑,其中响应变量是第 30 列,自变量包括除第 30 列之外的所有其他内容:

dat.rf <- randomForest(dat[,-30], 
                      dat[,30], 
                      proximity=TRUE, 
                      mtry=3,
                      importance=TRUE,
                      do.trace=100,
                      na.action = na.omit)

当我尝试这个时,我收到以下错误消息:

randomForest.default(dat[, -30], dat[, 30],proximity = TRUE, : 预测变量中不允许使用 NA 另外:警告信息: 在 randomForest.default(dat[, -30], dat[, 30],proximity = TRUE, : 响应具有五个或更少的唯一值。确定要进行回归吗?

但是,当我一一列出自变量同时保持所有其他参数相同时,我能够让它工作。

dat.rf <- randomForest(as.factor(Y) ~X1+ X2+ X3+ X4+ X5+ X6+ X7+ X8+ X9+ X10+......,                          
                      data=dat
                      proximity=TRUE,
                      mtry=3,
                      importance=TRUE,
                      do.trace=100,
                      na.action = na.omit)

有人可以帮我调试更简单的命令,我不必一一列出每个预测变量吗?

【问题讨论】:

    标签: r machine-learning random-forest


    【解决方案1】:

    错误信息为你提供了两个问题的线索:

    1. 首先,您需要删除任何具有NA 的行。删除 NA 应该很容易,我将把它留给你作为练习。
    2. 看起来您需要进行分类(预测只有几个离散水平之一的响应),而不是回归(预测连续响应)。如果响应是连续的,randomForest() 将自动应用回归。

    那么,您如何强制randomForest() 使用分类?正如您在第一次尝试中注意到的那样,randomForest 允许您提供数据作为预测变量和响应数据,而不仅仅是使用公式样式。要强制randomForest() 应用分类,请确保您尝试预测的值(响应或dat[,30])是一个因素。请记住明确标识 $x$ 和 $y$ 参数。这很容易做到:

     randomForest(x = dat[,-30],
                  y = factor(dat[,30]),
                  ...)
    

    这样您的输出只能采用 y 中给定的级别之一。

    这都隐藏在参数 $x$ 和 $y$ 的描述中:参见?help

    【讨论】:

    • 谢谢!!我确实注意到有关 NA 的错误消息,当我删除 NA 观察时它就消失了。不过我很好奇,当我在第二个命令中一一调用 X 变量时,它并没有抱怨 NA 观测值(我确实回到了仍然包含 NA 观测值的原始数据集)。我一定会尝试你的建议,非常感谢!
    猜你喜欢
    • 2020-06-24
    • 1970-01-01
    • 2011-05-16
    • 2017-12-09
    • 2018-10-02
    • 1970-01-01
    • 2015-11-05
    • 2015-10-23
    • 1970-01-01
    相关资源
    最近更新 更多