【问题标题】:How to interpret the variable importance plot produced via randomForestSRC::vimp?如何解释通过 randomForestSRC::vimp 生成的变量重要性图?
【发布时间】:2020-09-02 16:22:39
【问题描述】:

这是一个与此处提供的答案直接相关的问题: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 是什么意思。我阅读了包装文档,但仍然无法弄清楚。

这种区别(TRUE、FALSE、All)是如何起作用的?

【问题讨论】:

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


    【解决方案1】:

    在该示例中,您有 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
    

    您可以看到 TRUE 标签(第 2 行),您得到 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)}
    

    【讨论】:

    • 非常感谢!
    • 最后一个问题。在第二个图中,我们对变量的重要性有正值和负值。变量具有负 vimp 值意味着什么?这是否表明对该变量进行拆分会导致更大的预测误差?
    • 这取决于它是如何计算的。在 randomForestSRC 中,您可以检查重要性是如何计算的kogalur.github.io/randomForestSRC/theory.html。它写道“一棵树的 x 的 VIMP 被定义为该树的扰动和未扰动错误率之间的差异。”
    • 所以平均错误率不仅仅是排列的......但这并不意味着包含它会导致更大的预测错误。 SO 并不真正适用于此类问题。您可以在交叉验证中询问他们
    • 它总是与数据相关,或大或小......好吧,我通常说一个功能比另一个更重要或更有用
    猜你喜欢
    • 1970-01-01
    • 2016-03-24
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 2019-02-11
    • 1970-01-01
    相关资源
    最近更新 更多