DÜZENLEME: Aşağıdaki yorumlarda belirtildiği gibi, bu kesinlikle tahmin aralıkları değil tahminler için güven aralıkları verir . Benim cevap ile biraz tetik mutlu oldu ve bu bazı ekstra düşünce vermeliydi.
Bu yanıtı göz ardı etmekten çekinmeyin veya tahmin aralıklarını almak için kodu oluşturmaya çalışın.
Birkaç kez tahmin aralığı oluşturmak için basit önyükleme kullandım ama başka (daha iyi) yollar olabilir.
Paketteki oil
verileri göz önünde bulundurun ve caret
Stearic'in Palmitic üzerindeki etkisi için kısmi bağımlılıklar ve% 95 aralıklar oluşturmak istediğimizi varsayalım. Aşağıda basit bir örnek var, ancak ihtiyaçlarınızı karşılamak için onunla oynayabilirsiniz. gbm
Bağımsız grid.points
değişkene izin vermek için paketin güncel olduğundan emin olunplot.gbm
library(caret)
data(oil)
#train the gbm using just the defaults.
tr <- train(Palmitic ~ ., method = "gbm" ,data = fattyAcids, verbose = FALSE)
#Points to be used for prediction. Use the quartiles here just for illustration
x.pt <- quantile(fattyAcids$Stearic, c(0.25, 0.5, 0.75))
#Generate the predictions, or in this case, the partial dependencies at the selected points. Substitute plot() for predict() to get predictions
p <- plot(tr$finalModel, "Stearic", grid.levels = x.pt, return.grid = TRUE)
#Bootstrap the process to get prediction intervals
library(boot)
bootfun <- function(data, indices) {
data <- data[indices,]
#As before, just the defaults in this example. Palmitic is the first variable, hence data[,1]
tr <- train(data[,-1], data[,1], method = "gbm", verbose=FALSE)
# ... other steps, e.g. using the oneSE rule etc ...
#Return partial dependencies (or predictions)
plot(tr$finalModel, "Stearic", grid.levels = x.pt, return.grid = TRUE)$y
#or predict(tr$finalModel, data = ...)
}
#Perform the bootstrap, this can be very time consuming. Just 99 replicates here but we usually want to do more, e.g. 500. Consider using the parallel option
b <- boot(data = fattyAcids, statistic = bootfun, R = 99)
#Get the 95% intervals from the boot object as the 2.5th and 97.5th percentiles
lims <- t(apply(b$t, 2, FUN = function(x) quantile(x, c(0.025, 0.975))))
Bunu yapmanın bir yolu, en azından gbm'yi ayarlamaktan kaynaklanan belirsizlikleri hesaba katmaya çalışmaktır. Benzer bir yaklaşım http://onlinelibrary.wiley.com/doi/10.2193/2006-503/abstract ' da kullanılmıştır.
Bazen nokta tahmini aralığın dışındadır, ancak ayarlama ızgarasını değiştirmek (yani, ağaç sayısını ve / veya derinliği artırmak) genellikle bunu çözer.
Bu yardımcı olur umarım!