gpt4 book ai didi

r - 如何理解 RandomForestExplainer 输出(R 包)

转载 作者:行者123 更新时间:2023-11-30 08:22:51 25 4
gpt4 key购买 nike

我有以下代码,基本上尝试使用randomForestiris数据预测物种 。我真正感兴趣的是找到解释物种分类的最佳特征(变量)。我找到了包裹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 进行根节点 split 的树总数(即根据 Xj 的值将整个样本分为两部分),
  3. no_of_nodes – 使用 Xj 进行 split 的节点总数(如果树很浅,通常等于 no_of_trees),

我不太清楚为什么 times_a_rootno_of_nodes 越高越好? mean_min_depth 越低越好?

对此的直观解释是什么?

vignette信息没有帮助。

最佳答案

您希望统计模型或度量能够在“功效”和“简约”之间取得平衡。 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(...这是一个对数刻度。)就虹膜数据集而言,子样本将忽略每个子样本中的至少一个变量,因此 times_a_root 的最大可能值将小于 500。在这种情况下,200 的分数相当不错,我们可以看到这两个变量都具有相当的解释能力。

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

关于r - 如何理解 RandomForestExplainer 输出(R 包),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49912530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com