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

标签 r machine-learning random-forest multilabel-classification mlr

这是与此处提供的答案直接相关的问题:MLR random forest multi label get feature importance

总而言之,问题是为多标签分类问题生成变量重要性图。我正在处理另一个人提供的代码来生成 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 时存在问题。

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。

至于第二个变量重要性图,它是沿着相同的路线,整体的变量重要性,或TRUE/FALSE类,你可以看起来像:

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

enter image description here

关于r - 如何解释通过 randomForestSRC::vimp 生成的变量重要性图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61843010/

相关文章:

r - 带有计算和打印的数据帧之间的循环

R:如何识别未知数的组合?

image-processing - 检测拍摄图像的相机

machine-learning - XGBoost/CatBoost 中具有大量类别的分类变量

machine-learning - 在什么情况下可以使用 bagging 来代替 boosting?

r - 在 for 循环中构建绘图图不显示所有系列

python - 通过 rpy2 将符号值的 Python 列表传递给 R Legend 调用

numpy - scipy 中的稀疏矩阵是什么意思?

r - 如何在 R 中导出 GBM 模型?

r - 有没有办法跟踪并行随机森林构建过程中的进度?