ROC-кривая с использованием модели C5.0

У меня возникли некоторые трудности с применением метода производительности библиотеки ROCR.

#EX1
model <- glm(Good.Loan ~ ., data=trainSet, family=binomial(link="logit"))
testSet$predGood.Loan <- predict(model,newdata=testSet)
pred <- prediction(predictions = testSet$predGood.Loan, labels =
testSet$Good.Loan)
perf <- performance(pred, measure = "tpr", x.measure = "fpr")

#EX2
model <- C5.0(CostumerClass ~ ., data = trainSet)
predictedCostumerClass<- predict(model , testSet)
pred <- prediction(predictions = predictedCostumerClass, labels =
testSet$CostumerClass)
perf <- performance(pred, measure = "tpr", x.measure = "fpr")

В Ex1 я строю свою модель, используя обобщенную линейную модель, а затем применяю метод производительности. И это нормально. Когда я пытаюсь использовать то же самое, используя модель c5.0, я получаю сообщение об ошибке

Недопустимый формат прогнозов.

Ближайшая помощь, которую я смог найти, была в этой статье. .

Я не могу найти, какой формат требуется для метода производительности, или нужно ли моему прогнозу что-то еще.


person Bruno Ferreira    schedule 06.07.2015    source источник
comment
Было бы неплохо сделать ваш вопрос воспроизводимым включая образцы входных данных или или используя встроенные наборы данных.   -  person MrFlick    schedule 07.07.2015
comment
возможный дубликат Как справиться с несколькими анализ класса ROC в R (пакет pROC)?   -  person Jim G.    schedule 19.09.2015


Ответы (1)


Похоже, что по умолчанию модели C5.0 будут возвращать метки классов (дискретные значения) для predict, а модели glm возвращают значение функции связи (непрерывные значения). Вам нужны непрерывные значения, чтобы построить кривую ROC, чтобы вы могли попробовать разные точки отсечения. Вместо того, чтобы предсказывать класс, вы можете предсказать вероятность по модели.

predictedCostumerClass <- predict(model , testSet, type="prob")
person MrFlick    schedule 06.07.2015
comment
Спасибо за помощь. Мне удалось сделать некоторые успехи, используя пробу вместо класса. Но я столкнулся с другой проблемой. (Я не знаю, должен ли я опубликовать новый вопрос). Я получаю следующую ошибку: Ошибка в прогнозе (предсказания = предсказанный класс костюмов, метки = testSet $ ​​CostumerClass): количество классов не равно 2. Я думаю, это потому, что мой testSet $ ​​CostumerClass имеет 5 различных значений. Если это так, я не знаю, что мне теперь делать. - person Bruno Ferreira; 07.07.2015
comment
Я нашел свой ответ о мультиклассовой кривой roc в этой теме. Я надеюсь, что это может быть полезно для кого-то еще. stackoverflow.com/questions/20518376/ - person Bruno Ferreira; 07.07.2015