Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解释通过randomForestSRC::vimp生成的变量重要性图?_R_Machine Learning_Random Forest_Multilabel Classification_Mlr - Fatal编程技术网

如何解释通过randomForestSRC::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

这是一个与此处提供的答案直接相关的问题:

总之,问题是关于为多标签分类问题生成可变重要性图。我正在处理另一个人提供的代码以生成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绘图中的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定义为该树的扰动和未扰动错误率之间的差异。”因此平均错误率大于置换。。但这并不意味着包含它会导致更大的预测误差。所以这并不是针对这类问题的。你可以交叉询问他们,因为编辑总是相对于数据,无论大小。。。嗯,我通常说一个功能比另一个更重要或有用