在R中,从xgboost模型中生成部分依赖图

6

是否有现成的函数可以从R中的xgboost模型获取部分依赖图?我看到使用mlr包的示例,但似乎需要一个mlr-特定的包装类。我不太清楚是否有一种方法将xgboost模型转换为该类。


2
希望能够得到关于这个问题的答案。 - T. Scharf
使用整个mlr管道可能是值得的。在使用mlr生成偏差图的教程中有很好的解释。您只需要将“classif.ksvm”替换为“classif.xgboost”,并使用mlr::makeClassifTask()从数据生成任务即可。 - jakob-r
2个回答

6

我一直在开发一个名为pdp的R包,用于构建局部依赖图--https://github.com/bgreenwell/pdp。我已经成功地将其与XGBoost模型结合使用,但仍处于试验阶段。目前,手稿文件夹中正在编写一份指南/手册,可能会有所帮助。


-1

2
我认为这不会绘制出偏依赖性。对于所选预测器的每个箱,它获取此箱中落入观察中的预测值中位数。对于偏依赖性,应使用每个单独的观察值来计算该箱的平均值。 - Vinh Nguyen
我不确定你是正确的。看看这个: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) - Anarcho-Chossid
indices_bucket 告诉我们感兴趣的预测器 (data[, index]) 落在哪个桶中的行。这并不是所有的行。然后当调用 predict 时,它仅适用于那些行,而不是所有行。 - Vinh Nguyen
“all rows”是什么意思? - Anarcho-Chossid
1
"All rows" 是在 data 上没有任何子集调用 predict。对于感兴趣的预测器(索引),您实际上必须为每一行传递该预测器的每个可能值。这是针对大型数据集进行计算密集型操作的时候。 - Vinh Nguyen
好的,所以您需要对要放入部分依赖图中的所有变量进行交叉连接,然后对每个预测变量的值的结果取中位数? - Anarcho-Chossid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接