जवाबों:
जुलाई 2016 तक, पैकेज PRROC ROC AUC और PR AUC दोनों की गणना के लिए बहुत अच्छा काम करता है।
मान लें कि आपके पास पहले से ही probsअपने मॉडल के साथ गणना की गई संभावनाओं का एक वेक्टर है (कहा जाता है ) और सही वर्ग लेबल आपके डेटा फ्रेम में हैं df$label(0 और 1) इस कोड को काम करना चाहिए:
install.packages("PRROC")
require(PRROC)
fg <- probs[df$label == 1]
bg <- probs[df$label == 0]
# ROC Curve
roc <- roc.curve(scores.class0 = fg, scores.class1 = bg, curve = T)
plot(roc)
# PR Curve
pr <- pr.curve(scores.class0 = fg, scores.class1 = bg, curve = T)
plot(pr)
पुनश्च: लेबल 1 के लिए गणना की जाती है और 0 नहीं scores.class0 = fgजब आप उपयोग करते हैं तो केवल डिस्कनेक्टिंग बात है fg।
यहाँ उदाहरण ROC और PR उनके नीचे के क्षेत्रों के साथ दिए गए हैं:
दाईं ओर की सलाखों की दहलीज संभावनाएं हैं, जिस पर वक्र पर एक बिंदु प्राप्त होता है।
ध्यान दें कि एक यादृच्छिक क्लासिफायरियर के लिए, आरओसी एयूसी कक्षा असंतुलन के बावजूद 0.5 के करीब होगा। हालांकि, पीआर एयूसी मुश्किल है ( सटीक रिकॉल वक्र में "बेसलाइन" क्या है ) देखें।
एक बार जब आपको एक सटीक रीकॉल कर्व मिल जाता है qpPrecisionRecall, जैसे:
pr <- qpPrecisionRecall(measurements, goldstandard)
आप ऐसा करके इसकी AUC गणना कर सकते हैं:
f <- approxfun(pr[, 1:2])
auc <- integrate(f, 0, 1)$value
की मदद पेज qpPrecisionRecallआप क्या डेटा संरचना अपने तर्कों में उम्मीद पर विवरण देता है।
AUPRC()PerfMeasपैकेज में एक फ़ंक्शन है जो पैकेज में pr.curve()फ़ंक्शन की तुलना में बहुत बेहतर है PRROCजब डेटा बहुत बड़ा है।
pr.curve()एक बुरा सपना है और लाखों प्रविष्टियों के साथ वैक्टर होने पर हमेशा के लिए समाप्त हो जाता है। PerfMeasतुलना में सेकंड लगता है। PRROCR PerfMeasमें लिखा है और C में लिखा है।