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

tre*_*bot 5 r classification machine-learning feature-selection random-forest

我想在创建具有更多树的最终随机森林之前使用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
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果我正确理解结果,似乎我们可以删除三个变量而没有负面的副作用.然而,

>     attributes(tst)
$names
[1] "n.var"     "error.cv"  "predicted"
Run Code Online (Sandbox Code Playgroud)

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

nog*_*pes 9

我认为目的rfcv是确定您的准确度与您使用的变量数量之间的关系.当你有10个变量时,这似乎没什么用处,但是当你有数千个变量时,理解那些变量"增加"到预测能力是非常方便的.

你可能已经发现了这个代码

rf<-randomForest(type ~ .,data=fgl)
importance(rf)
Run Code Online (Sandbox Code Playgroud)

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