我一直在 R 中使用 ranger 和 randomForest 函数。我特别感兴趣的是获得我试图预测的每个类的特征(预测器)的重要性,而不是所有类的整体重要性。我知道如何使用 randomForest 中的 important() 函数来做到这一点,它似乎是默认行为:
library(randomForest)
set.seed(100)
rfmodel <- randomForest(Species ~ ., data = iris, ntree = 1000, importance = TRUE)
importance(rfmodel)
这会产生一个矩阵,其中包含三个类别中每个类别的每个特征的重要性
或者对于我正在运行的游侠:
library(ranger)
rangermodel<-ranger(Species ~ ., data = iris, num.trees = 1000, write.forest=TRUE, importance="permutation", local.importance=TRUE)
importance(rangermodel)
rangermodel$variable.importance
rangermodel$variable.importance.local
rangermodel$variable.importance 提供了特征对整个分类问题的重要性,但不是按类别。虽然 rangermodel$variable.importance.local 提供了每种情况的重要性,但也不是按类别。
游侠文档似乎没有提供这方面的信息。我能找到的关于这个主题的唯一问题是:如何在使用随机森林时分离整体变量重要性值?但是他们没有就如何使用 Ranger 实现这一点得出结论。如下更改游侠代码并没有提供我正在寻找的输出:
rangermodel<-ranger(Species ~ ., data = iris, num.trees = 1000, write.forest=TRUE, importance="impurity")