คำตอบ:
จนถึงเดือนกรกฎาคม 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