В пакете R gbm
как предсказания predict()
рассчитываются по отдельным деревьям?
Если я правильно понимаю документацию, использование single.tree=TRUE
в predict()
дает прогноз для отдельного дерева или деревьев. Но я не вижу, как объединить отдельные прогнозы. Я думал, что они будут добавлены вместе с усадкой, примененной к каждому последующему дереву, но это не так.
Пример:
library(gbm)
set.seed(1)
shr <- 0.1 # shrinkage value
gbm.iris <- gbm(Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width,
data = iris, distribution = "multinomial",
shrinkage = shr, bag.fraction = 1, n.trees = 10)
new.data <- data.frame(Sepal.Length = c(4.7, 4.9, 6.2, 7.1),
Sepal.Width = c(2.7, 2.3, 3.1, 3.2),
Petal.Length = c(2.5, 2.5, 3.5, 4.9),
Petal.Width = c(0.5, 0.8, 1.8, 1.6))
# How is predict(gbm.iris, newdata = new.data, n.trees = 2) calculated?
predict(gbm.iris, newdata = new.data, n.trees = 2)
## , , 2
## setosa versicolor virginica
## [1,] -0.2903287 0.13823604 -0.2523327
## [2,] -0.2903287 0.13823604 -0.2523327
## [3,] -0.2903287 -0.06420611 0.5207189
## [4,] -0.2903287 0.13823604 -0.2523327
predict(gbm.iris, newdata = new.data, n.trees = 1) +
shr*predict(gbm.iris, newdata = new.data, n.trees = 2, single.tree=TRUE)
## , , 1
## setosa versicolor virginica
## [1,] -0.1361764 0.04976673 -0.1558363
## [2,] -0.1361764 0.04976673 -0.1558363
## [3,] -0.1564206 0.12707189 0.2627465
## [4,] -0.1361764 0.04976673 -0.1558363
predict(gbm.iris, newdata = new.data, n.trees = 1) +
predict(gbm.iris, newdata = new.data, n.trees = 2, single.tree=TRUE)
## , , 1
## setosa versicolor virginica
## [1,] -0.01176396 -0.1773327 -0.40307460
## [2,] -0.01176396 -0.1773327 -0.40307460
## [3,] -0.21420611 0.5957189 0.01550818
## [4,] -0.01176396 -0.1773327 -0.40307460
Я использую gbm
версию 2.1.5. Спасибо.