(R) 从 gbm.step 绘制树状图 BRT 模型
Posted
技术标签:
【中文标题】(R) 从 gbm.step 绘制树状图 BRT 模型【英文标题】:(R) Plot dendrograms BRT models from gbm.step 【发布时间】:2015-03-17 12:28:04 【问题描述】:(之前发here,发错子了,信息不够,已关闭,我编辑了,编辑好像被删除了,帖子被送进了炼狱,抱歉再次发帖,我不知道之前的帖子能不能/应该复活)
在 R 中,我使用 dismo
运行了一些 Boosted Regression Trees,即广义 Boosting Models,它使用 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)
(来自here)。这将为您留下 gbm 模型对象“angaus.tc5.lr01”。 我想根据 De'ath 2007 生成分裂(折叠?)的树状图,即绘制树木(见图,左窗格)。但是:De'ath 的图是单个回归树,而不是增强回归树,它是潜在数千棵树的平均值,每棵树都使用从数据集中随机抽取的不同数据集。
用户 ckluss 好心地建议了 rpart,但是这需要由 rpart
生成的模型,因此不适用于 gbm.step
生成的 BRT/GBM。来自rpart.plot
的prp
也是如此。
pretty.gbm.tree
in gbm
为选择的任何一棵树提取信息矩阵(第一个尝试pretty.gbm.tree(angaus.tc5.lr01, i.tree=1)
)所以我想知道这是否可能是成功的可行途径?例如。通过编写一些脚本,使用所有可用的树创建一个平均树矩阵,然后将其转换为树状对象,可能使用一些方法here。
人们提出了不同程度的类似问题,似乎在网上其他地方都没有成功。 BRT 模型经常被描述为“黑匣子”,因此可能普遍的看法是,人们不应该需要/能够/费心去探究它们并展示它们的内部过程。
如果有人对 BRT/gbm
有足够的了解并有任何想法,我们将不胜感激。
谢谢。
【问题讨论】:
问题是没有“平均”树,就像随机森林没有平均树一样。例如,如果第一个节点一半时间在数值变量上分支,另一半时间在分类变量上分支怎么办?如果一些分类分支在域 A,B,C 和其他 C,D,E 上怎么办?没有办法做到这一点。 【参考方案1】:正如您所指出的,对决策树集成的解释比解释单个树要困难得多。在几何上,您可以将决策树集成视为复杂的高维曲面的近似值。目标是找到有助于近似的变量,并可视化它们的影响。
解释集成的基本思想不是获得“平均”树,或获得任何单个树的图,而是可视化变量的“平均”效果。在文献中,这是预测变量的“部分依赖”——它的效果是使其他变量保持不变。 “部分依赖”是如何估计的,描述起来有点复杂,但它是模型隐含的预测,仅允许预测变量 j 变化,用于观察 i。然后对所有 i 观察结果进行平均预测。有关血腥细节,请参阅Friedman & Popescue (2008)。
然后,您可以根据预测变量的实际值绘制预测变量的估计依赖性(或我所说的“隐含模型”)效应。这样就可以看到模型隐含的预测器效果了。
好消息是在dismo
中可以很容易地获得这样的图。请参阅gbm.plot
了解单个预测变量,以及 gbm.perspec
了解涉及两个预测变量的透视图。小插图还提供了示例。为了进一步帮助解释模型,gbm.interactions
提供了一种检测可能的 2 或 3 向交互的方法。有关详细信息,请参阅this question。
【讨论】:
感谢帕特里克。我的论文中已经有了 gbm.plots 以及我认为足够的其他各种图形,但是审稿人要求提供树形图......即使这个问题没有真正意义!我最后问 Jane Elith 她是怎么做到的,她说她只是编造了其中一个并以此为例,因为这个请求没有意义,但人们直觉地要求它!嘿嗬,现在已经发布了;) 这是一个非常有趣的问题,我也想做同样的事情。但是,现在我明白现在要去做了。你能告诉我如何开发一棵单独的树吗?谢谢以上是关于(R) 从 gbm.step 绘制树状图 BRT 模型的主要内容,如果未能解决你的问题,请参考以下文章