我正在使用iml
包来提取随机森林分类器的形状值-数据集包含正在积极参与事件的个人及其人口统计变量。我想了解随机森林算法预测背后的原因,并决定使用Shapely值。这是我的代码:
dataset$Active = as.factor(dataset$Active)
rf <- randomForest(Active ~ ., data = dataset, ntree = 50)
#Understanding the shapely values for each individual using the iml package
X <- dataset[,-11]
predictor = Predictor$new(rf, data = X, y = dataset$Active)
然后,我运行for
循环以从预测变量中提取每个值:
iterations = 16721
variables = 15
output <- matrix(ncol=variables, nrow=iterations)
for (i in 1:16721){
shapley = Shapley$new(predictor, x.interest = X[i,])
output[i,] = head(results$phi,n=15)
}
但是,我遇到了两个问题:
1)for
循环会花费很长时间,并且从长远来看是不实际的-是否可以使用并行进程/云资源进行此计算?
2)每次我运行
shapley = Shapley$new(predictor, x.interest = X[1,])
shapley$plot()
尽管我查看的是同一行数据,但我设法获得了不同的图(shapley值)。
我现在不嫁给Shapely诉LIME。 感谢您的帮助!