如何理解RandomForestExplainer输出(R包)

nev*_*int 12 r machine-learning random-forest

我有以下代码,它基本上尝试使用randomForest预测Species来自iris数据.我真正想要的是找到解释物种分类的最佳特征(变量).我发现包randomForestExplainer是最好的服务目的.

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")
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

根据情节,解释为什么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_root而且no_of_nodes更好?低价mean_min_depth更好?

有什么直观的解释?

小品信息不能帮助.

42-*_*42- 4

您希望统计模型或度量能够在“功效”和“简约”之间取得平衡。randomForest 的内部设计是为了将惩罚作为实现简约性的统计策略。此外,在任何给定样本中选择的变量数量将少于预测变量的总数。当预测变量的数量超过数据集中的案例(行)数量时,这允许模型构建。早期的分割或分类规则可以相对容易地应用,但随后的分割变得越来越难以满足有效性标准。“能力”是指对不在子样本中的项目进行正确分类的能力,为此使用代理,即所谓的 OOB 或“袋外”项目。randomForest 策略是多次执行此操作,以建立一组代表性规则,在假设袋外样本将公平表示整个数据集所源自的“宇宙”的情况下对项目进行分类。

times_a_root将属于衡量变量与其“竞争对手”相比的“相对力量”的类别。该times_a_root统计量测量变量位于决策树“顶部”的次数,即在选择分割标准的过程中首先选择该变量的可能性有多大。衡量no_of_node变量被选择作为所有子采样的分割标准的次数。从:

?randomForest # to find the names of the object leaves
forest$ntree
[1] 500
Run Code Online (Sandbox Code Playgroud)

...我们可以看到得到一个分母,用于评估200绘图 y 轴上的粗略值的含义。大约 2/5 的样本回归具有Petal.Length顶部分割标准,而另外 2/5 的样本Petal.Width回归则被选为最重要的变量。500 个中大约有 75 个有Sepal.Length,而只有大约 8 或 9 个有Sepal.Width(...这是一个对数刻度。)在 iris 数据集的情况下,子样本将忽略每个子样本中的至少一个变量,因此最大可能值的值times_a_root会小于 500。在这种情况下,200 分就相当不错了,我们可以看到这两个变量都具有相当的解释能力。

no_of_nodes统计数据汇总了在任何节点中具有该变量的树的总数,请记住节点的数量将受到惩罚规则的限制。