【问题标题】:Confidence interval for xgboost regression in RR中xgboost回归的置信区间
【发布时间】:2017-11-09 00:24:39
【问题描述】:

我目前正在处理一个包含 4 个分类输入变量和一个数字输出的数据集。

我使用 R 中的 xgboost 包创建了一个模型。但我找不到计算 CI 的方法。

如何计算预测的置信区间?我找到了this answer to a classification problem,但我没有正确理解它。有人可以更深入地解释我的问题吗?

【问题讨论】:

    标签: r machine-learning regression xgboost confidence-interval


    【解决方案1】:

    这篇博文描述了从 xgboost 回归中获取分位数的绝佳选择。我相信这是一个比链接问题(回归)中建议的其他方法更优雅的解决方案。

    https://www.bigdatarepublic.nl/regression-prediction-intervals-with-xgboost/

    基本上你的问题可以描述如下(来自博客):

    如果分位数 q 与分区内的观测值相距较远,则由于梯度和 Hessian 对于较大的差异 x_i-q 都是恒定的,因此分数保持为零,不会发生分裂。

    那么建议如下解决方案:

    一个有趣的解决方案是通过向梯度添加随机化来强制拆分。当观察 x_i 和分区内的旧分位数估计 q 之间的差异很大时,这种随机化将强制对该卷进行随机拆分。

    【讨论】:

      【解决方案2】:

      据我所知,没有直接的方法可以使用 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)
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-06
        • 2012-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 2020-03-02
        • 2010-11-13
        相关资源
        最近更新 更多