据我所知,没有直接的方法可以使用 xgboost 包计算它。
您提供的链接文章提供了一个框架,告诉您如何去做。它引用了“装袋”,这基本上意味着多次创建相同的模型(其中具有随机性)。对于 xgboost,如果您要将 colsample_bytree(每棵树中使用的随机选择的列)设置为
如果您将上述变量设置为小于 1,您将拥有一个包含随机元素的模型。如果您要运行此模型 100 次不同的时间,每次使用不同的种子值,从技术上讲,您最终会得到 100 个独特的 xgboost 模型,每次观察有 100 个不同的预测。使用这 100 个预测,您可以使用 100 个预测的均值和标准差得出自定义置信区间。
我无法保证这些自定义置信区间的有效性或可靠性,但如果您想按照链接文章中的示例进行操作,您将如何操作,这就是他们所谈论内容的解释。
这里有一些示例代码,假设您有 500 个观察值:
##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)
}