【发布时间】:2016-02-24 23:16:54
【问题描述】:
我正在玩 R 中的 GBM 包:
library(gbm)
gbmfit <- gbm( UVIndex ~ UVI + UVA + VIS + UVIVIS + UVIUVA + CosSZA + ShadeTemp, data = df, distribution = "gaussian", n.trees = 1000, shrinkage = 0.1, cv.folds = 10)
pred <- predict(gbmfit, data = df , n.trees = 1)
pretty.gbm.tree(gbmfit,i.tree = 1)
给我:
SplitVar SplitCodePred LeftNode RightNode MissingNode ErrorReduction Weight
0 0 380.50000000 1 2 3 471.9606 214
1 -1 -0.11805471 -1 -1 -1 0.0000 140
2 -1 0.19417906 -1 -1 -1 0.0000 74
3 -1 -0.01008602 -1 -1 -1 0.0000 214
Prediction
0 -0.01008602
1 -0.11805471
2 0.19417906
3 -0.01008602
当我查看 pred 与 UVI 的散点图时,我确实看到了大约 380 的拆分,两个终端值为 2.717099 和 3.029333。 (1)如何将这些终端值与树的参数相协调?我应该能够从 SplitCodePred 派生它们,但我看不到连接 (2) 即使我的数据没有缺失值,缺失节点是否正常? (3)我对权重(“该节点中的观察总数”)感到困惑。为什么节点 3 的权重是 214,虽然没有丢失数据?
非常感谢,
罗兰
【问题讨论】:
-
为了让我们理解你在问什么(我认为这实际上不是一个编码问题,而是一个方法问题),你需要发布代码和数据;两者都看不到。
-
我明白了..我错过了存储在 gbmfit$initF 中的常量..我仍然对 (2) 和 (3) 感到困惑