web-dev-qa-db-fra.com

Comment calculer l'AUC avec le package ROCR

J'ai adapté un modèle SVM et créé la courbe ROC avec le package ROCR. Comment puis-je calculer l'aire sous la courbe (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")## 
4
mac gionny

Votre exemple ne semble pas être complet. Je ne peux donc pas sembler capable de l'exécuter et de le modifier en conséquence, mais essayez de brancher quelque chose dans le sens de:

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

Vous pouvez l'ajouter après le code de sandipan , qui vous donne l'intrigue seul.

Reportez-vous au manuel ROCR pour performance, page 5: ftp://ftp.auckland.ac.nz/pub/software/CRAN/doc/packages/ROCR.pdf

"auc" est l’une des mesures possibles que performance peut donner.

4
Tobia Tesan

Commencez avec la méthode prediction du package ROCR.

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

pour obtenir le ROC dans une parcelle:

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

et obtenez la valeur AUC:

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

Essaye ça:

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)

 enter image description here

1
Sandipan Dey

Calculer l'ASC

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

plot(roc_val,col='blue')

auc(roc_val)
0
Saranga