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

机器算法验证 r 机器学习 分类 随机森林
2022-01-16 10:07:04

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

这是关于整个特性的陈述还是关于特性中的特定值的陈述?在任何一种情况下,准确性的平均下降是通过从模型中删除相关特征(或特征中的值)而被错误分类的观察值的数量或比例?

假设我们有以下模型:

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 的平均下降精度是该度量中的最高值,因此其他变量在该度量中的值甚至更低,怎么会如此之低?

3个回答

这是对整个特征的陈述还是对特征中的特定值的陈述?

  • “全局”变量重要性是指当给定变量在训练之后但在预测之前置换时,所有袋外交叉验证预测的准确性平均下降。“全球”是隐含的。局部变量重要性是每个单独的袋外交叉验证预测的准确性平均下降。全局变量重要性是最受欢迎的,因为它是每个变量的单个数字,更容易理解,并且更稳健,因为它是所有预测的平均值。

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

  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 重要性通过对给定变量的拆分来衡量纯度的平均增益。如果变量有用,它倾向于将混合标记节点拆分为纯单类节点。通过置换变量进行拆分既不会增加也不会减少节点纯度。置换一个有用的变量,往往会导致平均基尼增益相对较大的下降。GINI 重要性与局部决策函数密切相关,随机森林用于选择最佳可用分割。因此,计算不需要太多额外的时间。另一方面,与整体模型性能的变化相反,局部分裂中的平均基尼增益不一定是最有用的测量方法。基尼重要性总体上不如(基于排列的)变量重要性,因为它相对更偏向、更不稳定并且倾向于回答更间接的问题。

以下是 randomForest 帮助手册中对平均精度下降 (MDA) 的描述:

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

根据描述,MDA中的“准确率”其实是指单棵树模型的准确率,而不管我们更关心的是森林的错误率​​。所以,

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

  • 首先,上面定义的 MDA(默认缩放)更像是一个测试统计量:

    Mean(Decreases in Accuracy of Trees)StandardDeviation(Decreases in Accuracy of Trees)
    比例既不是观察的百分比也不是计数。

  • 其次,即使是未缩放的MDA,即Mean(Decreases in Accuracy of Trees),并没有说明森林模型的准确性(通过投票将树木作为一个整体)。

总之,randomForest 包的 MDA 输出既不是错误率也不是错误计数,而是更好地解释为假设检验的检验统计量:

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

As a remark, the MDA procedure described by Soren is different from the implementation of randomForest package. It is closer to what we desire from an MDA: the accuracy decrease of the whole forest model. However, the model will probably be fitted differently without Petal.Length and rely more on other predictors. Thus Soren's MDA would be too pessimistic.

A recent blog post from a team at the University of San Francisco shows that default importance strategies in both R (randomForest) and Python (scikit) are unreliable in many data scenarios. Particularly, mean decrease in impurity importance metrics are biased when potential predictor variables vary in their scale of measurement or their number of categories.

The papers and blog post demonstrate how continuous and high cardinality variables are preferred in mean decrease in impurity importance rankings, even if they are equally uninformative compared to variables with less categories. The authors suggest using permutation importance instead of the default in these cases. If the predictor variables in your model are highly correlated, conditional permutation importance is suggested.

The impurity is biased since at each time a breakpoint is selected in a variable, every level of the variable is tested to find the best break point. Continuous or high cardinality variables will have many more split points, which results in the “multiple testing” problem. That is, there is a higher probability that by chance that variable happens to predict the outcome well, since variables, where more splits are tried, will appear more often in the tree.