绘制来自gbm.step的BRT模型的树状图(R语言)

4
(previously posted here, to the wrong sub, with not enough info, which was closed, I edited, the edits seem to have been deleted, & the post consigned to purgatory, so apologies for re-posting, I don't know whether the previous post can/should be resurrected)
在R中,我运行了一些提升回归树,也称为广义提升模型,使用了dismo和gbm。以下是一个可重现的示例,使人们能够到达我当前的位置:
library(dismo); data(Anguilla_train)
angaus.tc5.lr01 <- gbm.step(data=Anguilla_train, gbm.x = 3:13, gbm.y = 2, family = "bernoulli", tree.complexity = 5, learning.rate = 0.01, bag.fraction = 0.5)

(来自这里). 这将使您拥有 gbm 模型对象 "angaus.tc5.lr01"。 我想生成分裂(折叠)的树状图,即绘制树,如 De'ath 2007 所示(见图片,左窗格)。但是:De'ath 的绘图是单个回归树,而不是提升回归树,后者是可能运行数千个树的平均值,每个树都使用从数据集中随机抽取的不同数据集。

用户ckluss友好地建议使用rpart,但是需要由rpart生成模型,因此对于由gbm.step生成的BRTs / GBMs无法使用。 这也适用于来自rpart.plotprp

gbm中的pretty.gbm.tree提取了所选任意一棵树的信息矩阵(尝试使用pretty.gbm.tree(angaus.tc5.lr01, i.tree=1)来获取第一棵),因此我想知道这是否是成功的可行路径?例如,编写一些脚本,使用所有可用的树创建一个平均树矩阵,然后将其转换为树状对象,可能使用here中的一些方法。
人们似乎在网络上已经提出了类似的问题,但似乎没有成功。BRT模型通常被描述为“黑匣子”,因此可能普遍的观点是不应该/不能/不必要去探究它们并显示它们的内部过程。
如果有人对BRT / gbm了解足够多,并有任何想法,他们将不胜感激。谢谢。

De'ath tree diagram


1
问题在于,就像随机森林没有平均树一样,也没有“平均”树。例如,如果第一个节点一半时间基于数值变量分支,另一半时间基于分类变量分支,那该怎么办?如果某些分类分支在域{A、B、C}上,而其他分支在{C、D、E}上,那该怎么办?这是不可能的。 - Chris
1个回答

2
决策树集成的解释比单独解释决策树要困难得多,正如您所指出的那样。从几何角度来看,你可以将决策树集成看作是一个复杂的高维表面的近似。目标是找到有助于近似的变量,并可视化它们的效果。
解释集成的基本思想不是获得“平均”树,或者获得任何单个树的图表,而是可视化变量的“平均”效应。在文献中,这被称为预测器的“偏差部分”——保持其他变量不变的影响。如何估计“偏差部分”有点复杂,但它是通过允许只有预测器j变化,对于观察i获得的模型暗示预测得到的预测。然后将所有i个观察值的预测平均。有关详细信息,请参见Friedman&Popescue(2008)。
然后,您可以绘制预测器的估计依赖性(或我所说的“模型暗示”效应)与预测器的实际值相对应。这样可以让您看到预测器的模型暗示效应。
好消息是,这样的图表可以很容易地在dismo中获得。对于单个预测器,请参见gbm.plot,对于涉及两个预测器的透视图,请参见gbm.perspec。该vignette还提供了示例。为了进一步帮助解释模型,gbm.interactions提供了一种检测可能的2或3路交互作用的方法。有关更多详细信息,请参见此问题。

4
谢谢Patrick。我的论文中已经有了gbm.plots以及其他几个图形,我认为这足够了,但是被审稿人要求提供决策树图...即使这个要求没有太大意义!最终我向Jane Elith请教她是如何处理的,她说她只是随便制作了一个示例用作范例,因为这个要求并没有实际意义,但是人们直觉上会询问!好吧,现在已经发表了,继续向前迈进;) - dez93_2000
这是一个非常有趣的问题,我也想做同样的事情。然而,现在我明白如何着手处理了。请问您能告诉我如何开发一个单独的树吗?谢谢。 - 89_Simple

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接