如何解释随机森林模型中准确度的均值下降和GINI的均值下降


34

我在理解如何解释“随机森林”软件包的可变重要性输出时遇到了一些困难。准确度的平均下降通常被描述为“由于置换每个特征中的值而导致的模型准确度的下降”。

这是关于整个功能还是关于功能中的特定值的声明?在这两种情况下,通过从模型中删除有问题的特征(或特征中的值)而将未正确分类的观测值的数量或比例平均准确率降低了吗?

假设我们有以下模型:

require(randomForest)
data(iris)
set.seed(1)
dat <- iris
dat$Species <- factor(ifelse(dat$Species=='virginica','virginica','other'))
model.rf <- randomForest(Species~., dat, ntree=25,
importance=TRUE, nodesize=5)
model.rf
varImpPlot(model.rf)

Call:
 randomForest(formula = Species ~ ., data = dat, ntree = 25,
 proximity = TRUE, importance = TRUE, nodesize = 5)

Type of random forest: classification
Number of trees: 25
No. of variables tried at each split: 2

        OOB estimate of  error rate: 3.33%
Confusion matrix:
          other virginica class.error
other        97         3        0.03
virginica     2        48        0.04

在此处输入图片说明

在此模型中,OOB率很低(大约5%)。但是,在此度量中具有最高值的预测变量的平均准确度下降幅度(Petal.Length)仅约为8。

这是否意味着从模型中删除Petal.Length只会导致平均8个左右观察值的额外错误分类?

假设Petal.Length的平均准确度降低幅度如此之低,以至于它在此度量中是最高的,那么其他变量在此度量中的值甚至更低?


尝试dat <
-iris

Answers:


26

这是关于整个功能的声明,还是关于功能中特定值的声明?

  • “全局”变量重要性是指在训练后但在预测之前对给定变量进行排列时,所有袋外交叉验证预测中准确性的平均下降。“全局”是隐式的。局部变量重要性是每个单独的袋外交叉验证预测的准确性平均下降。全局变量重要性是最流行的,因为它是每个变量的单个数字,更易于理解,并且由于在所有预测中取平均值而变得更加可靠。

在任何一种情况下,通过从模型中删除有问题的特征(或特征中的值),准确度的平均下降是被错误分类的观测值的数量或比例?

  1. 火车森林
  2. 测量袋装CV精度→OOB_acc_base
  3. 置换变量i
  4. 测量袋外CV精度→OOB_acc_perm_i
  5. VI_i =-(OOB_acc_perm_i-OOB_acc_base)

-“ 这是否意味着从模型中删除Petal.Length只会导致平均8个或更多观测值的额外错误分类?

  • 是的 仅Petal.length和Petal.width都具有几乎完美的线性间隔。因此,变量共享冗余信息,并且仅置换一个不会妨碍模型。

Petal.Length的平均准确度降低如何这么低,以至于在此度量中它是最高的,因此其他变量在该度量中的值甚至更低?

  • 当对冗余变量训练鲁棒/正则化模型时,它非常抵制单个变量的排列。

主要使用变量重要性,主要是对变量的有用性进行排名。对可变重要性绝对值的清晰解释很难做到。

基尼: 基尼重要性的衡量标准是通过分割给定变量来获得平均纯度。如果该变量有用,它将倾向于将混合的带标签的节点拆分为纯单类节点。通过排列变量进行拆分既不会增加也不会减少节点纯度。排列一个有用的变量,往往会导致平均基尼增益下降相对较大。GINI的重要性与本地决策功能密切相关,随机森林使用该决策功能来选择最佳可用拆分。因此,它不需要花费太多的时间进行计算。另一方面,与整体模型性能的变化相反,局部分裂的平均基尼增益不一定是最有用的度量。基尼重要性总体上不如(基于置换的)变量重要性,因为它相对而言更偏向,更不稳定并且倾向于回答更间接的问题。


有关简单排名之外的变量重要性的解释,请查看:“用于分类问题的变量选择” -Vivian W. Ng和Leo Breiman digitalassets.lib.berkeley.edu/sdtr/ucb/text/692.pdf
Soren Havelund Welling

非常感谢您的回复!我已经看到一些地方将准确度的平均下降描述为OOB错误率(以百分比表示)的增加。您发布的公式似乎也提示错误率:(OOB_acc_perm_i-OOB_acc_base)。但是您确定准确度的均值下降是指分类错误的观测值的数量吗?
FlacoT '16

1
记住前面的减号,因为可变的重要性在减少。我对单位不是太具体,可以用%或纯比例/比例表示,没关系。但是可以,因为准确性= 1-error_rate,VI_i = error_rate_perm_i-error_rate_base。对于回归,排列变量重要性的单位通常是解释方差的减少%,基尼重要性的单位是mean_square_error-gain的平均值减少。“但是您确定准确度的均值下降是指分类错误的观测值的数量吗? ”-不,准确度是分数,而不是计数。
Soren Havelund Welling

10

这是randomForest帮助手册中对准确性平均下降(MDA)的描述:

第一个度量是从排列的OOB数据计算得出的:对于每棵树,记录数据自包部分的预测误差(用于分类的错误率,用于回归的MSE)。然后,在置换每个预测变量后,将执行相同的操作。然后将两者之间的差异在所有树上取平均值,并通过差异的标准偏差将其标准化。如果变量的差的标准偏差等于0,则不进行除法运算(但在这种情况下,平均值几乎始终等于0)。

根据描述,MDA中的“准确性”实际上是指单树模型的准确性,而与我们更关注森林的错误率这一事实无关。所以,

“这是否意味着从模型中删除Petal.Length只会导致平均8个或更多观测值的额外错误分类?”

  • Mean(Decreases in Accuracy of Trees)StandardDeviation(Decreases in Accuracy of Trees)
  • Mean(Decreases in Accuracy of Trees)

H0:Nodes constructed by predictor i is useless in any single trees
H1:Nodes constructed by predictor i is useful

值得一提的是,Soren描述的MDA过程与randomForest软件包的实现不同。它更接近我们对MDA的期望:整个森林模型的准确性降低。但是,如果没有Petal.Length,则该模型的拟合可能会有所不同,并且将更多地依赖于其他预测变量。因此,索伦的MDA太悲观了。


两个后续问题:1.是否知道其他软件包是否使用@Soren描述的更直观的MDA?2.如果将RandomForest中的MDA解释为检验统计量,那么对于拒绝H0的足够大的检验统计量是否有类似的经验法则?MDA是否遵循某些已知分布?
FlacoT '16

1.对不起,我没有尝试任何其他包装。2.就像测试统计一样。既无法访问该发行版(据我所知很少有人对此进行调查),也没有测试本身有意义–我认为该测试不能得出有关FOREST的任何信息,这是我们的实际兴趣。
建宇

4

旧金山大学的一个团队最近发表的一篇博客文章[ https://explained.ai/rf-importance/index.html]显示,R(randomForest)和Python(scikit)中的默认重要性策略都不可靠。在许多数据场景中。特别是,当潜在的预测变量的测量规模或类别数量发生变化时,杂质重要性指标的平均下降会产生偏差。

论文和博客文章展示了如何在杂质重要性排名平均下降的情况下优先选择连续和高基数的变量,即使与类别较少的变量相比,它们同样无用。作者建议在这些情况下使用排列重要性代替默认值。如果模型中的预测变量高度相关,则建议条件排列重要性。

由于每次在变量中选择一个断点时,都会对杂质进行偏置,因此会测试变量的每个级别以找到最佳断点。连续或高基数变量将具有更多的分裂点,这导致“多重测试”问题。也就是说,由于尝试了更多拆分的变量在树中的出现频率较高,因此偶然发生变量以很好地预测结果的可能性更高。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.