Я играл с пакетом GBM в R:GBM MissingNode в R
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
Когда я смотрю на диаграмму рассеяния пред против УФО, я вижу, на самом деле раскол около 380 с двумя терминальными значениями 2,717099 и 3.029333. (1) Как примирить эти значения терминалов с параметрами дерева? Я должен иметь возможность выводить их из SplitCodePred, но я не вижу связи (2) Нормально ли иметь отсутствующий узел, даже если у моих данных нет отсутствующего значения? (3) Меня путают с весом («общее количество наблюдений в этом узле»). Как получится вес 214 для Node 3, хотя нет данных?
Спасибо большое,
Roland
для того, чтобы понять, что вы просите (и я думаю, что это на самом деле это не кодирование Q, а скорее методологический вопрос), вам нужно будет отправлять код и данные; ни одно из которых не видно. –
Я получил его .. Мне не хватало константу, которая хранится в gbmfit $ initF .. Я все еще смущен (2) и (3) – Roland