คำตอบ:
จนถึงเดือนกรกฎาคม 2559 แพ็คเกจ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)
PS: สิ่งเดียวที่ทำให้คุณอึกอักคือscores.class0 = fgเมื่อfgคำนวณสำหรับฉลาก 1 และไม่ใช่ 0
นี่คือตัวอย่าง ROC และ PR ที่มีส่วนโค้งใต้:
แถบทางด้านขวาคือความน่าจะเป็นของเกณฑ์ที่จะได้รับจุดบนเส้นโค้ง
โปรดทราบว่าสำหรับลักษณนามแบบสุ่ม ROC AUC จะใกล้เคียงกับ 0.5 โดยไม่คำนึงถึงความไม่สมดุลของคลาส อย่างไรก็ตาม PR AUC นั้นค่อนข้างยุ่งยาก (ดู"พื้นฐาน" คืออะไรในกราฟการเรียกคืนที่แม่นยำ )
เมื่อคุณมีกราฟการเรียกคืนที่แม่นยำจาก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