我无法理解randomForest里面的重要性函数中的by class列。
我的数据集有两个类,“Current”和“Departed”。要预测这些课程,
我首先创建一个随机森林模型:
fit <- randomForest(IsDeparted ~ ..., df_train),
然后我运行重要性函数:
importance(fit)
现在我得到一个这样的结果片段:
有人可以解释如何解释前两个类列吗?在置换该特定变量的值后,预测一个特定类的准确度是否平均下降? 如果是这样,这是否意味着如果我对某个特定类的模型性能更感兴趣,那么在进行特征选择时我应该关注那些列而不是MDA列?
答案 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