R中从GBM中提取模型

时间:2016-03-28 17:20:09

标签: r gbm

是否有人熟悉如何弄清楚R中gbm模型内部的情况?

假设我们想看看如何预测虹膜中的Petal.Length。为了保持简单,我跑了:

tg=gbm(Petal.Length~.,data=iris)

这有效,当您运行时:

summary(tg)

然后你得到:

Hit <Return> to see next plot: 
                      var rel.inf
Petal.Width   Petal.Width   67.39
Species           Species   32.61
Sepal.Length Sepal.Length    0.00
Sepal.Width   Sepal.Width    0.00

这很直观。当你运行pretty.gbm.tree(tg)时,你得到:

  SplitVar SplitCodePred LeftNode RightNode MissingNode ErrorReduction Weight    Prediction
0        2  0.8000000000        1         2           3       184.6764     75  0.0001366667
1       -1 -0.0022989091       -1        -1          -1         0.0000     22 -0.0022989091
2       -1  0.0011476604       -1        -1          -1         0.0000     53  0.0011476604
3       -1  0.0001366667       -1        -1          -1         0.0000     75  0.0001366667

很明显,gbm认为你按变量#2拆分并返回三个单独的回归。我认为SplitVar==2Petal.Width,因为您在str(iris)中看到的顺序是有道理的。

但缺少什么数据? iris没有遗漏数据。那么我们如何看待创建的三个节点中的每个节点发生了什么?

假设我想用C ++编写代码用于生产,我不知道如何知道你应该采取哪些不同的代码,具体取决于是Petal.Width >.8

谢谢,

约什

1 个答案:

答案 0 :(得分:0)

请参阅包mlmeta中的函数gbm2sas,它使用元编程将R对象转换为SAS格式。

SAS格式与C ++类似,因此易于阅读且易于破解C ++。