理解'randomForest'R包中每类变量的重要性

时间:2017-07-18 18:42:22

标签: r machine-learning classification random-forest feature-selection

我无法理解randomForest里面的重要性函数中的by class列。

我的数据集有两个类,“Current”和“Departed”。要预测这些课程,

我首先创建一个随机森林模型:

fit <- randomForest(IsDeparted ~ ..., df_train),

然后我运行重要性函数:

importance(fit)   

现在我得到一个这样的结果片段:

Importance Measure in four columns: "Current" "Departed" "MDA" "GiniDecrease"

有人可以解释如何解释前两个类列吗?在置换该特定变量的值后,预测一个特定类的准确度是否平均下降? 如果是这样,这是否意味着如果我对某个特定类的模型性能更感兴趣,那么在进行特征选择时我应该关注那些列而不是MDA列?

1 个答案:

答案 0 :(得分:0)

是的,前两列是针对特定类的。这是根据他们自己的标准误差确定的准确性平均下降。如果您对一类的准确性感兴趣,可以看看。

让我们使用一个示例,其中默认的重要性()函数返回缩放的重要性:

library(randomForest)
set.seed(111)
fit = randomForest(Species ~ .,data=iris,importance=TRUE)
importance(fit)

                setosa versicolor virginica MeanDecreaseAccuracy
Sepal.Length  6.716993  7.4654657  7.697842            10.869088
Sepal.Width   4.581990 -0.5208697  4.224459             3.772957
Petal.Length 22.155981 33.0549839 27.892363            33.272150
Petal.Width  22.497643 31.4966353 31.589361            33.123064
             MeanDecreaseGini
Sepal.Length         9.333510
Sepal.Width          2.425592
Petal.Length        43.324744
Petal.Width         44.146107

如果您查看未缩放比例的图像,则可以看到MDA列大约是3类的平均值,在这种情况下,因为3类是平衡的。如果您的班级不平衡,那就不一样了:

                  setosa   versicolor   virginica MeanDecreaseAccuracy
Sepal.Length 0.034156211  0.021093423 0.036147901          0.030810465
Sepal.Width  0.006522917 -0.001117593 0.006937731          0.004273138
Petal.Length 0.329299111  0.301621639 0.296869242          0.305569113
Petal.Width  0.335363736  0.298729184 0.279526019          0.302855284
             MeanDecreaseGini
Sepal.Length         9.333510
Sepal.Width          2.425592
Petal.Length        43.324744
Petal.Width         44.146107