Как рассчитать AUC с пакетом ROCR

Я установил модель SVM и создал кривую ROC с пакетом ROCR. Как вычислить площадь под кривой (AUC)?

set.seed(1)
tune.out=tune(svm ,Negative~.-Positive, data=trainSparse, kernel ="radial",ranges=list(cost=c(0.1,1,10,100,1000),gamma=c(0.5,1,2,3,4) ))
summary(tune.out)
best=tune.out$best.model

##prediction on the test set
ypred = predict(best,testSparse, type = "class")
table(testSparse$Negative,ypred)

###Roc curve
yhat.opt = predict(best,testSparse,decision.values = TRUE)
fitted.opt = attributes(yhat.opt)$decision.values
rocplot(fitted.opt,testSparse ["Negative"], main = "Test Data")## 

person mac gionny    schedule 07.01.2017    source источник
comment
Привет, добро пожаловать в StackOverflow! Возможно, вы захотите прочитать это: stackoverflow.com/questions/5963269/   -  person Tobia Tesan    schedule 09.01.2017


Ответы (4)


Начните с метода prediction из пакета ROCR.

pred_ROCR <- prediction(df$probabilities, df$target)

чтобы получить ROC в сюжете:

roc_ROCR <- performance(pred_ROCR, measure = "tpr", x.measure = "fpr")
plot(roc_ROCR, main = "ROC curve", colorize = T)
abline(a = 0, b = 1)

и получите значение AUC:

  auc_ROCR <- performance(pred_ROCR, measure = "auc")
  auc_ROCR <- [email protected][[1]]
person Dan    schedule 22.11.2017

Ваш пример не кажется полным, поэтому я не могу запустить его и соответствующим образом изменить, но попробуйте подключить что-то вроде:

...
prediction.obj <- prediction(...)
perf <- performance(prediction.obj, measure = "auc")
print("AUC: ", [email protected])

Вы можете добавить его после кода sandipan, который дает вам только сюжет.

См. руководство ROCR для performance, стр. 5: ftp: //ftp.auckland.ac.nz/pub/software/CRAN/doc/packages/ROCR.pdf

"auc" является одной из возможных мер, которые может дать performance.

person Tobia Tesan    schedule 09.01.2017

Попробуй это:

tune.out=tune(svm ,Negative~.-Positive, data=trainSparse, kernel ="radial",
              ranges=list(cost=c(0.1,1,10,100,1000),gamma=c(0.5,1,2,3,4), 
              probability = TRUE)) # train svm with probability option true
summary(tune.out)
best=tune.out$best.model
yhat.opt = predict(best,testSparse,probability = TRUE)

# Roc curve
library(ROCR)
# choose the probability column carefully, it may be 
# probabilities[,1] or probabilities[,2], depending on your factor levels 
pred <- prediction(attributes(yhat.opt)$probabilities[,2], testSparse$Negative) 
perf <- performance(pred,"tpr","fpr")
plot(perf,colorize=TRUE)

введите здесь описание изображения

person Sandipan Dey    schedule 09.01.2017
comment
что такое дф? Когда я запускаю эту команду, она появляется: df$Negative ‹- as.factor(df$Negative) Ошибка в df$Negative: объект типа «закрытие» не является подмножеством @sandipan - person mac gionny; 10.01.2017
comment
df — это исходный кадр данных (который вы разделяете на две части, обучаете и тестируете), вам не нужно об этом беспокоиться, просто убедитесь, что переменная Negative является фактором. - person Sandipan Dey; 10.01.2017
comment
хорошо, потому что я сделал это: tweets$Negative= as.factor(tweets$Sent‹=-1) и другая часть вашей команды работает хорошо; спасибо, я проголосую за вас, когда я достигну 15 репутации! @сандипан - person mac gionny; 10.01.2017

Рассчитать AUC

# Outcome Flag & Predicted probability
roc_val <-roc(testing.label,gbmPred) 

plot(roc_val,col='blue')

auc(roc_val)
person Saranga    schedule 13.08.2018