【发布时间】:2022-12-10 05:02:43
【问题描述】:
我使用 randomForest 包创建了一个随机森林模型
model_rf <- randomForest(y~ . , data = data_train,ntree=1000, keep.forest=TRUE,importance=TRUE)
为了基于这个 RF 模型计算不同特征的 Shapley 值,我首先创建一个“解释器对象”,然后使用“shapper”包
exp_rf <- DALEX::explain(model_rf, data = data_test[,-1], y = data_test[,1])
ive_rf <- shap(exp_rf, new_observation = data_test[1,-1])
据我所知,我只能将“形状”功能应用于一次观察(“新观察”)。
但我正在寻找一种方法来计算数据文件中所有受访者的 shapley 值。 我知道这在 Python 的“SHAP”包中是可能的;但是 R 中的“shapper”包也可以吗?
目前,我创建了一个循环来计算所有受访者的 shapley 值,但这将花费我几天的时间来计算我的整个数据文件。
for(i in c(1:nrow(data_test)))
{
ive_rf <- shap(exp_rf,new_observation=data_test[i,-1])
shapruns<-cbind(shapruns,ive_rf[,"_attribution_"])
}
任何帮助将非常感激。
【问题讨论】:
-
运气好的话?我发现的最佳方法是编写一个函数来解释一条记录,并使用 furrr 包启用并行处理以使用该函数来解释多条记录。诚然,这也不是理想的方法。
标签: r random-forest shap