如何解读randomForestSRC::vimp生成的变量重要性图?

这个问题直接与这里提供的答案相关: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图中的TRUE、FALSE和All是什么意思。我查阅了包文档,仍然无法理解。

这些区别(TRUE、FALSE、All)是如何工作的?


回答:

在那个例子中,你有14个可能的标签。如果你查看数据:

head(yeast)  label1 label2 label3 label4 label5 label6 label7 label8 label9 label101  FALSE  FALSE   TRUE   TRUE  FALSE  FALSE  FALSE  FALSE  FALSE   FALSE2  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE   TRUE   TRUE  FALSE   FALSE3  FALSE   TRUE   TRUE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE   FALSE4  FALSE  FALSE   TRUE   TRUE  FALSE  FALSE  FALSE  FALSE  FALSE   FALSE5   TRUE   TRUE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE   FALSE6  FALSE  FALSE   TRUE   TRUE  FALSE  FALSE  FALSE  FALSE  FALSE   FALSE

对于每个标签,例如label2,有两个类别,TRUE/FALSE。所以在这个图中,All是所有样本预测错误的总体错误率或比例。TRUE/FALSE是针对TRUE/FALSE标签分别计算的。所以从这个图中,你可以看到TRUE的错误率更高,意味着模型在正确预测TRUE时有问题。

enter image description here

我们可以通过查看袋外预测标签来验证这一点:

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。

至于第二个变量重要性图,它是沿着同样的思路,变量重要性针对整体,或者TRUE/FALSE类别,你可以这样查看:

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

enter image description here

Related Posts

神经网络反向传播代码不工作

我需要编写一个简单的由1个输出节点、1个包含3个节点的…

值错误:y 包含先前未见过的标签:

我使用了 决策树分类器,我想将我的 输入 作为 字符串…

使用不平衡数据集进行特征选择时遇到的问题

我正在使用不平衡数据集(54:38:7%)进行特征选择…

广义随机森林/因果森林在Python上的应用

我在寻找Python上的广义随机森林/因果森林算法,但…

如何用PyTorch仅用标量损失来训练神经网络?

假设我们有一个神经网络,我们希望它能根据输入预测三个值…

什么是RNN中间隐藏状态的良好用途?

我已经以三种不同的方式使用了RNN/LSTM: 多对多…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注