使用iml包和for循环在R中解释randomForest

时间:2018-11-29 20:02:28

标签: r for-loop random-forest shapely

我正在使用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。 感谢您的帮助!

0 个答案:

没有答案