1

我正在玩 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,虽然没有丢失数据?

非常感谢,

罗兰

4

1 回答 1

0

2)是的,即使数据没有任何缺失值,缺失节点也是正常的。缺失节点的值将是其他节点值的加权平均值

在没有缺失数据或缺失值 < min obs 的情况下,深度为 1 的树的示例 缺失节点的值将是左右节点值的加权平均值

3)这种情况下缺失节点的权重(数据中没有缺失值)将是父节点的权重

于 2016-08-02T19:17:17.740 回答