Я использую пакет 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 v.Известь прямо сейчас.Спасибо за вашу помощь!