R randomForest 的 rfcv 方法实际上是不是说明了它选择了哪些功能?

Posted

技术标签:

【中文标题】R randomForest 的 rfcv 方法实际上是不是说明了它选择了哪些功能?【英文标题】:Does R randomForest's rfcv method actually say which features it selected, or not?R randomForest 的 rfcv 方法实际上是否说明了它选择了哪些功能? 【发布时间】:2012-08-08 03:56:16 【问题描述】:

我想在创建具有更多树的最终随机森林之前使用 rfcv 从数据集中剔除不重要的变量(如果这不是使用此函数的方法,请更正并通知我)。例如,

>     data(fgl, package="MASS")
>     tst <- rfcv(trainx = fgl[,-10], trainy = fgl[,10], scale = "log", step=0.7)
>     tst$error.cv
        9         6         4         3         2         1 
0.2289720 0.2149533 0.2523364 0.2570093 0.3411215 0.5093458

在这种情况下,如果我对结果的理解正确,似乎我们可以删除三个变量而不会产生负面影响。然而,

>     attributes(tst)
$names
[1] "n.var"     "error.cv"  "predicted"

这些插槽都不能告诉我可以从数据集中无害地删除的前三个变量实际上是什么。

【问题讨论】:

数据?代码 ?你应该先看看***.com/questions/5963269/… 我添加了代码,对此感到抱歉。我发现 randomForest 有一个值“重要性”,我可以稍微改变一下 rfcv 让它也输出它。不过,我仍然很困惑,如果 rfcv 不输出可能被忽略的变量,它的真正用途是什么。 【参考方案1】:

我认为rfcv 的目的是确定您的准确性与您使用的变量数量之间的关系。当您有 10 个变量时,这可能看起来没有用,但是当您有数千个变量时,了解这些变量“增加”了多少预测能力非常方便。

您可能已经发现,这段代码

rf<-randomForest(type ~ .,data=fgl)
importance(rf)

为您提供每个变量的相对重要性。

【讨论】:

嗨@nograpes。在本示例的上下文中,如果我理解正确,您建议删除或不考虑 importance(rf) 调用中列出的三个最不重要的变量。但是 RF 中的变量重要性,尤其是相关变量,会受到随机性的影响,因此最不重要的变量可能会从一个运行变为另一个。此外,rfcv 调用不允许设置您可能已经为randomForest 调用设置的mtryrfcv 中的重要性排名可能与 importance(rf) 中的重要性排名不同

以上是关于R randomForest 的 rfcv 方法实际上是不是说明了它选择了哪些功能?的主要内容,如果未能解决你的问题,请参考以下文章

更改 randomForest R 代码中节点特征子集选择的采样方法

使用 R 对 randomForest 执行交叉验证

如何替换包 randomForest r 中的引导步骤

R中RandomForest包中的RandomForest函数中的参数'classwt'代表啥?

R:从 h2o.randomForest() 和 h2o.gbm() 绘制树

R语言randomForest包做回归预测需要交叉验证么