การคำนวณ AUPR ใน R [ปิด]


14

มันง่ายที่จะหาแพคเกจการคำนวณพื้นที่ภายใต้ ROC แต่มีแพคเกจที่คำนวณพื้นที่ภายใต้เส้นโค้งการเรียกคืนความแม่นยำหรือไม่?


ROCR , pROC - เยี่ยมมาก!
Vladimir Chupakhin

แน่นอนว่าพวกเขายัง AFAIK ไม่สามารถคำนวณพื้นที่ภายใต้เส้นโค้งแม่นยำจำ

คำตอบ:


14

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

PR Curve กับ AUC

แถบทางด้านขวาคือความน่าจะเป็นของเกณฑ์ที่จะได้รับจุดบนเส้นโค้ง

โปรดทราบว่าสำหรับลักษณนามแบบสุ่ม ROC AUC จะใกล้เคียงกับ 0.5 โดยไม่คำนึงถึงความไม่สมดุลของคลาส อย่างไรก็ตาม PR AUC นั้นค่อนข้างยุ่งยาก (ดู"พื้นฐาน" คืออะไรในกราฟการเรียกคืนที่แม่นยำ )


กรุณาอ้างอิงถึงเอกสาร PRROC ที่เชื่อมโยงในคำตอบข้างต้น
อรุณ

2

googling เล็กน้อยส่งคืนหนึ่งแพ็กเกจ bioc, qpgraph ( qpPrecisionRecall) และ cran one, minet ( auc.pr) แม้ว่าฉันจะไม่มีประสบการณ์กับพวกเขา ทั้งสองได้รับการคิดที่จะจัดการกับเครือข่ายทางชีวภาพ


minet นี้ดูดี แต่จำเป็นต้องมีอะแดปเตอร์ภายนอกบางตัวเพื่อทำการป้อนข้อมูลที่เหมาะสมจากข้อมูลทั่วไป :-(

2

เมื่อคุณมีกราฟการเรียกคืนที่แม่นยำจากqpPrecisionRecallเช่น:

pr <- qpPrecisionRecall(measurements, goldstandard)

คุณสามารถคำนวณ AUC ได้โดยทำดังนี้

f <- approxfun(pr[, 1:2])
auc <- integrate(f, 0, 1)$value

หน้าความช่วยเหลือของqpPrecisionRecallให้รายละเอียดเกี่ยวกับโครงสร้างข้อมูลที่คาดว่าจะมีในข้อโต้แย้ง


1
เส้นโค้ง PR ไม่จำเป็นต้องมีการรวมเข้าด้วยกันอย่างมีสไตล์หรือไม่? ดู: mnd.ly/oWQQw1

1

AUPRC()เป็นฟังก์ชั่นในPerfMeasแพ็คเกจซึ่งดีกว่าpr.curve()ฟังก์ชั่นในPRROCแพ็คเกจเมื่อข้อมูลมีขนาดใหญ่มาก pr.curve()เป็นฝันร้ายและใช้เวลาตลอดไปให้เสร็จสิ้นเมื่อคุณมีพาหะที่มีหลายล้านรายการ PerfMeasใช้เวลาเปรียบเทียบในไม่กี่วินาที PRROCเขียนใน R และPerfMeasเขียนเป็น C

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.