【问题标题】:How to understand RandomForestExplainer output (R package)如何理解 RandomForestExplainer 输出(R 包)
【发布时间】:2018-09-29 10:51:51
【问题描述】:

我有以下代码,它基本上尝试使用randomForestiris 数据中预测Species。我真正感兴趣的是找到解释物种分类的最佳特征(变量)。我发现包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")

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

根据情节,解释为什么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),

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

对此有何直观解释?

vignette 信息没有帮助。

【问题讨论】:

  • 也许可以向开发人员打开github issue?他在上面写了他的主人。

标签: r machine-learning random-forest


【解决方案1】:

您希望统计模型或度量在“权力”和“简约”之间取得平衡。 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

...我们可以看到得到一个分母,用于评估绘图 y 轴中大致 200 值的含义。大约 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 统计数据汇总了在其任何节点中具有该变量的树的总数,记住节点的数量将受到惩罚规则的限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 2017-08-26
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多