如何解释通过randomForestSRC::vimp生成的变量重要性图?
这是一个与此处提供的答案直接相关的问题: 总之,问题是关于为多标签分类问题生成可变重要性图。我正在处理另一个人提供的代码以生成vimp图:如何解释通过randomForestSRC::vimp生成的变量重要性图?,r,machine-learning,random-forest,multilabel-classification,mlr,R,Machine Learning,Random Forest,Multilabel Classification,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("mu
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绘图中的TRUE、FALSE和All是什么意思。我阅读了软件包文档,但仍然无法理解它
这种区分(真、假、全)是如何工作的?在这个例子中,您有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
对于每个标签,例如label2,有两个类,TRUE/FALSE。所以在这个图中,在这个图中,所有的都是整体的错误率,或者说所有样本的预测都是错误的。TRUE/FALSE分别用于TRUE/FALSE标签。因此,从这个图中,您可以看到TRUE中的错误更高,这意味着模型无法正确预测TRUE
我们可以通过查看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
您可以看到,对于真正的标签(第二行),您得到的614/(614+424)=0.5915222错误。这大致是您在图中看到的,TRUE label的错误率约为0.6
对于第二个变量重要性图,它是沿着相同的线绘制的,整体变量重要性,或真/假类,您可以如下所示:
par(mfrow=c(1,3))
for(i in colnames(mat)){barplot(mat[,i],horiz=TRUE,las=2)}
非常感谢您!最后一个问题。在第二个图中,变量的重要性有正值和负值。变量的vimp值为负值意味着什么?这是否表明拆分该变量会导致更大的预测误差?这取决于它是如何计算的。在randomForestSRC中,可以检查重要性的计算方式。它写道“树的x的VIMP定义为该树的扰动和未扰动错误率之间的差异。”因此平均错误率大于置换。。但这并不意味着包含它会导致更大的预测误差。所以这并不是针对这类问题的。你可以交叉询问他们,因为编辑总是相对于数据,无论大小。。。嗯,我通常说一个功能比另一个更重要或有用