如何理解RandomForestExplainer输出(R包)

时间:2018-04-19 04:04:29

标签: r machine-learning random-forest

我有以下代码,它基本上尝试使用randomForestSpecies数据预测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")

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

enter image description here

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

  1. mean_min_depth - 表示以参数mean_sample指定的三种方式之一计算的最小深度,
  2. times_a_root - Xj用于分割根节点的树的总数(即,整个样本根据Xj的值分为两个),
  3. no_of_nodes - 使用Xj进行拆分的节点总数(如果树浅,通常等于no_of_trees),
  4. 我并不完全清楚为什么高times_a_rootno_of_nodes更好?低mean_min_depth更好?

    有什么直观的解释?

    vignette信息无效。

1 个答案:

答案 0 :(得分:4)

您希望统计模型或衡量指标能够在&#34; power&#34;之间取得平衡。和&#34;简约&#34;。 randomForest在内部设计用于惩罚,作为实现简约的统计策略。此外,在任何给定样本中选择的变量数量将小于预测变量的总数。当hte预测变量数超过数据集中的个案(行)数时,这允许建模。早期拆分或分类规则可以相对容易地应用,但随后的拆分变得越来越难以满足有效性标准。 &#34;电源及#34;是能够正确分类不在子样本中的项目,代理,所谓的OOB或&#34; out-of-bag&#34;物品被使用。 randomForest策略是多次这样做,以建立一套有代表性的规则,根据假设,即袋外样本将是“宇宙”的公平表示,对项目进行分类。从中产生了整个数据集。

times_a_root属于衡量&#34;相对权力&#34;与其竞争对手相比变量#34; times_a_root统计量衡量变量的次数&#34;在顶部&#34;决策树的一部分,即在选择分割标准的过程中首先选择它的可能性。 no_of_node测量变量被选择的次数作为所有子采样中的分裂标准。 从:

?randomForest # to find the names of the object leaves
forest$ntree
[1] 500

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

no_of_nodes统计信息总计了在其任何节点中具有该变量的树的总数,记住节点的数量将受到惩罚规则的约束。