Soweit ich das beurteilen kann, gibt es keine direkte Möglichkeit, dies mit dem Paket xgboost zu berechnen.
Der verknüpfte Artikel gab Ihnen einen Rahmen dafür, wie Sie es tun könnten. Es bezieht sich darauf, "Bagging" zu machen, was im Grunde bedeutet, dasselbe Modell viele Male zu erzeugen (das hat Zufälligkeit). Wenn Sie für xgboost den colsample_bytree (die zufällige Auswahl der in den einzelnen Baumstrukturen zu verwendenden Spalten) auf < 1 und subsample (das zufällige Prozent der zu verwendenden Zeilen in jedem Baum) < 1 setzen, wird ein "zufälliges Element" eingeführt "zum Modell.
Wenn Sie die obigen Variablen auf weniger als 1 setzen, hätten Sie ein Modell mit einem zufälligen Element. Wenn Sie dieses Modell zu 100 verschiedenen Zeitpunkten ausführen würden, jedes Mal mit einem anderen Startwert, würden Sie 100 einzigartige xgboost-Modelle mit 100 verschiedenen Vorhersagen für jede Beobachtung erhalten. Unter Verwendung dieser 100 Vorhersagen können Sie ein benutzerdefiniertes Konfidenzintervall unter Verwendung des Mittelwerts und der Standardabweichung der 100 Vorhersagen erstellen.
Ich kann nicht dafür bürgen, wie effektiv oder zuverlässig diese benutzerdefinierten Konfidenzintervalle sein würden, aber wenn Sie dem Beispiel im verlinkten Artikel folgen wollten, wie würden Sie es tun, und dies ist die Erklärung dessen, worüber sie gesprochen haben.
Hier ist ein Beispielcode, dies zu tun, vorausgesetzt, Sie 500 Beobachtungen haben:
##make an empty data frame with a column per bagging run
predictions <- data.frame(matrix(0,500,100))
library(xgboost)
##come up with 100 unique seed values that you can reproduce
set.seed(123)
seeds <- runif(100,1,100000)
for (i in 1:ncol(predictions){
set.seed(seeds[i])
xgb_model <- xgboost(data = train,
label = y,
objective = "reg:linear",
eval_metric = "rmse",
subsample = .8,
colsample_bytree = .8
)
predictions[,i] <- predict(xgb_model,newdata = test)
}