【问题标题】:Partial dependence plot from an xgboost model in RR中xgboost模型的部分依赖图
【发布时间】:2016-09-08 03:39:44
【问题描述】:

是否已经存在从 R 中的 xgboost 模型获取部分依赖图的函数?我看到了使用mlr 包的示例,但它似乎需要一个mlr 特定的包装类。我有点不清楚是否有办法将xgboost 模型转换为该类。

【问题讨论】:

  • 希望得到这个答案
  • 在此过程中使用整个 mlr 管道可能是值得的。 tutorial on how to generate partial dependence plots with mlr 很好地解释了这一点。您只需将“classif.ksvm”替换为“classif.xgboost”,并使用mlr::makeClassifTask() 从您的数据中生成一个任务。

标签: r xgboost


【解决方案1】:

我一直在研究 R 包,pdp,用于构建部分依赖图 --https://github.com/bgreenwell/pdp。我能够让它与 XGBoost 模型一起使用,但它仍然是实验性的。手稿文件夹中有一个小插图/手稿正在进行中,可能会有所帮助。

【讨论】:

    【解决方案2】:

    【讨论】:

    • 我不认为这描绘了部分依赖。对于所选预测变量的每个 bin,它会在落入该 bin 的观察中获取预测值的中值。对于部分依赖,应使用每个观察值来计算该 bin 的平均值。
    • 我不确定你是对的。看到这个:indices_bucket <- which(data[, index] >= pred_var_x[i-1] & data[, index] < pred_var_x[i])。这会抓取观察结果并对其中的每一个进行预测:preds_bucket <- xgboost::predict(object, data[indices_bucket, , drop = FALSE], missing = NA, ntreelimit = ntrees),然后得到预测的中值:pred_var_y[i - 1] <- median(preds_bucket, na.rm = TRUE)
    • indices_bucket 告诉我们感兴趣的预测变量 (data[, index]) 落在存储桶中的哪些行。这不是所有的行。那么当predict被调用时,它只适用于那些行,而不是所有的行。
    • 什么是“所有行”?
    • "All rows" 将是对 predict 的调用,在 data 上没有任何子集。对于感兴趣的预测器(索引),您实际上必须为每一行传递该预测器的每个可能值。那时它对大型数据集的计算量会变得很大。
    猜你喜欢
    • 2018-03-02
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多