Как я могу заставить работать функцию R IML FeatureImp ()?

#r #machine-learning #iml

#r #машинное обучение #iml

Вопрос:

Я пытаюсь заставить работать функцию FeatureImp из пакета IML, но она продолжает выдавать ошибку. Ниже приведен пример из набора данных diamonds, на котором я обучаю модель случайного леса.

 library(iml)
library(caret)
library(randomForest)
data(diamonds)
# create some binary classification target (without specific meaning)
diamonds$target <- as.factor(ifelse(diamonds$color %in% c("D", "E", "F"), "X", "Y"))
# drop categorical variables (to keep it simple for demonstration purposes)
diamonds <- subset(diamonds, select = -c(color, clarity, cut))
# train model
mdl_diamonds <- train(target ~ ., method = "rf", data = diamonds)
# create iml predictor
x_pred <- Predictor$new(model = mdl_diamonds, data = diamonds[, 1:7], y = diamonds$target, type = "prob")
# calculate feature importance
x_imp <- FeatureImp$new(x_pred, loss = "mae")
  

Это заканчивается следующей ошибкой:

 Error in if (self$original.error == 0) { :
  missing value where TRUE/FALSE needed
In addition: Warning message:
In Ops.factor(actual, predicted) :-’ not meaningful for factors
  

Я не понимаю, что я делаю не так. Кто-нибудь может дать мне подсказку?

Я работаю над версией R 3.5.1, пакетом iml версии 0.9.0.

Комментарии:

1. Не могли бы вы запустить ее шаг за шагом и посмотреть, когда впервые появляется эта ошибка?

2. Где именно в вашем коде появляется ошибка?

3. Я запускал код шаг за шагом. Ошибка появляется после последнего утверждения.

Ответ №1:

Я обнаружил проблему. Я использовал «mae» в качестве функции потерь, которая — я мог бы знать — неприменима для цели классификации. Использование «ce» или «f1» возвращает результат, как ожидалось.

Комментарии:

1. Для моей задачи классификации она по-прежнему не работает даже с «ce».

Ответ №2:

потому что это случайный лес. итак, попробуйте loss = ‘ce’.