是否有人熟悉如何弄清楚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==2
是Petal.Width
,因为您在str(iris)
中看到的顺序是有道理的。
但缺少什么数据? iris
没有遗漏数据。那么我们如何看待创建的三个节点中的每个节点发生了什么?
假设我想用C ++编写代码用于生产,我不知道如何知道你应该采取哪些不同的代码,具体取决于是Petal.Width >.8
。
谢谢,
约什