如何理解 RandomForestExplainer 输出(R 包)

机器算法验证 r 机器学习 随机森林
2022-04-05 00:02:52

我有以下代码,它基本上尝试使用randomForestSpecies预测数据我真正感兴趣的是找到解释物种分类的最佳特征(变量)。我发现包randomForestExplainer是最好的。iris

library(randomForest)
library(randomForestExplainer)
forest <- randomForest::randomForest(Species ~ ., data = iris, localImp = TRUE)
importance_frame <- randomForestExplainer::measure_importance(forest)
randomForestExplainer::plot_multi_way_importance(importance_frame, size_measure = "no_of_nodes")

代码的结果产生了这个图:

在此处输入图像描述

根据该图,解释为什么 Petal.Length 和 Petal.Width 是最佳因素的关键因素是这些(解释基于小插图):

  1. mean_min_depth– 以参数 mean_sample 指定的三种方式之一计算的平均最小深度,
  2. times_a_root– Xj 用于分割根节点的树的总数(即,根据 Xj 的值将整个样本分成两部分),
  3. no_of_nodes – 使用 Xj 进行分裂的节点总数(如果树很浅,它通常等于 no_of_trees),

我不完全清楚为什么高times_a_rootno_of_nodes更好?而且mean_min_depth越低越好?

对此有何直观解释?

插图信息没有帮助。

1个回答

在每个节点,评估整套预测变量的一个子集,以确定它们与因变量的关联强度。关联的强度可以使用相关系数或其他一些度量来衡量(如果同时存在分类或连续预测变量,则这是必要的)。然后使用最强关联的预测器来拆分数据。

这意味着更接近根的变量更重要,因为它们与每个引导数据子集中的因变量最密切相关。times_a_root从这个意义上说,衡量重要性的mean_min_depth直接方法是:离根更近的变量,或者平均而言离根更近的变量,是与因变量密切相关的变量。

no_of_nodes与其他两个不同。想象因变量是一个预测变量的强正弦函数。由于在双变量图中缺乏明确的趋势/方向/非零线性斜率,因此预测变量不一定在前两个指标上显得很重要。然而,最终树会在这个预测器上开始分裂,然后会继续在它上面分裂很多次以逼近正弦函数。no_of_nodes将比早期的指标更好地捕捉到这个和(我怀疑)其他非线性预测变量(没有明确的趋势/方向/非零线性斜率)的重要性。

也就是说,我认为accuracy_decrease(对于分类)和mse_increase(对于回归)是比其他指标更好的重要性指标。如果某个特定的预测变量被置换,它们会测量森林预测性能的下降。相关预测变量会影响这一点,但它们也会影响其他重要性指标。这是否重要取决于您的分析目标是什么。