R中的GBM丢失节点
我正在玩R中的GBM包:R中的GBM丢失节点,r,gbm,R,Gbm,我正在玩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)
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)
当我观察pred与UVI的散点图时,我确实看到了大约380的分裂,两个终端值分别为2.717099和3.029333。
(1) 如何使这些终端值与树的参数相一致?我应该能够从SplitCodePred派生它们,但我看不到它们之间的联系
(2) 即使我的数据没有丢失值,丢失节点是否正常?
(3) 我对权重(“该节点中的观察总数”)感到困惑。为什么节点3的权重为214,尽管没有丢失数据
非常感谢
罗兰2)是的,即使数据没有任何缺失值,丢失节点也是正常的。缺失节点的值将是其他节点值的加权平均值
例如,如果没有缺失数据或缺失值,深度为1的树<缺失节点的最小obs值将是左右节点值的加权平均值
3) 在这种情况下,缺失节点的权重(数据中没有缺失值)将是父节点的权重2)是的,即使数据没有任何缺失值,缺失节点也是正常的。缺失节点的值将是其他节点值的加权平均值
例如,如果没有缺失数据或缺失值,深度为1的树<缺失节点的最小obs值将是左右节点值的加权平均值
3) 在这种情况下,缺失节点的权重(数据中没有缺失值)将是父节点的权重,以便我们理解您的要求(我认为这实际上不是编码问题,而是一个方法问题),您需要发布代码和数据;两个都看不见我知道了。。我缺少存储在gbmfit$initF中的常量。。我仍然对(2)和(3)感到困惑,为了让我们理解您的问题(我认为这实际上不是一个编码问题,而是一个方法论问题),您需要发布代码和数据;两个都看不见我知道了。。我缺少存储在gbmfit$initF中的常量。。我仍然对(2)和(3)感到困惑
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