如何解释通过randomForestSRC::vimp产生的变量重要性图?

问题描述 投票:1回答:1

这是一个与这里提供的答案直接相关的问题。MLR随机森林多标签获取特征重要性

总结一下,这个问题是关于制作多标签分类问题的变重要性图。我是照搬别人提供的代码来制作vimp图的。

library(mlr)
yeast = getTaskData(yeast.task)
labels = colnames(yeast)[1:14]
yeast.task = makeMultilabelTask(id = "multi", data = yeast, target = labels)
lrn.rfsrc = makeLearner("multilabel.randomForestSRC")
mod2 = train(lrn.rfsrc, yeast.task)

vi =randomForestSRC::vimp(mod2$learner.model)
plot(vi,m.target ="label2")

我不知道randomForestSRC::vimp plot中的TRUE、FALSE和All是什么意思。我看了包里的文档,还是搞不清楚。

请问这种区分(TRUE、FALSE、All)是怎么用的?

r machine-learning random-forest multilabel-classification mlr
1个回答
3
投票

在这个例子中,你有14个可能的标签。如果你看一下数据。

head(yeast)
  label1 label2 label3 label4 label5 label6 label7 label8 label9 label10
1  FALSE  FALSE   TRUE   TRUE  FALSE  FALSE  FALSE  FALSE  FALSE   FALSE
2  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE   TRUE   TRUE  FALSE   FALSE
3  FALSE   TRUE   TRUE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE   FALSE
4  FALSE  FALSE   TRUE   TRUE  FALSE  FALSE  FALSE  FALSE  FALSE   FALSE
5   TRUE   TRUE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE   FALSE
6  FALSE  FALSE   TRUE   TRUE  FALSE  FALSE  FALSE  FALSE  FALSE   FALSE

对于每个标签,例如标签2, 有两个类,TRUE FALSE。所以在这个图中,在这个图中,所有的都是整体的错误率,或者是你所有样本的预测错误的比例。TRUE FALSE是分别针对TRUE FALSE的标签。所以从这个图中,你可以看到true的误差比较大,意味着模型正确预测true有问题。

enter image description here

我们可以通过观察oob预测的标签来检查。

oob_labels = c(TRUE,FALSE)[max.col(vi$classOutput$label2$predicted.oob)]
table(yeast$label2, oob_labels)

       oob_labels
        FALSE TRUE
  FALSE  1175  204
  TRUE    614  424

你可以看到对于TRUE标签(第二行),你得到614(614+424)=0.5915222的错误。这大概就是你在图中看到的,TRUE标签的错误率是~0.6。

至于第2个变量重要性图,也是同样的思路,整体的变量重要性,或者TRUEFALSE类的变量重要性,你可以看成这样。

par(mfrow=c(1,3))
for(i in colnames(mat)){barplot(mat[,i],horiz=TRUE,las=2)}

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.