जवाबों:
जुलाई 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
तुलना में सेकंड लगता है। PRROC
R PerfMeas
में लिखा है और C में लिखा है।