พื้นที่ภายใต้ Precision-Recall Curve (AUC ของ PR-curve) และ Average Precision (AP)


27

Average Precision (AP) เป็นพื้นที่ภายใต้ Precision-Recall Curve (AUC ของ PR-curve) หรือไม่

แก้ไข:

นี่คือความคิดเห็นเกี่ยวกับความแตกต่างใน PR AUC และ AP

AUC นั้นได้มาจากการประมาณค่าความแม่นยำสี่เหลี่ยมคางหมู อีกทางเลือกหนึ่งและมักจะเทียบเท่ากับตัวชี้วัดคือ Average Precision (AP) ซึ่งส่งคืนเป็น info.ap นี่คือค่าเฉลี่ยของความแม่นยำที่ได้รับทุกครั้งที่มีการเรียกคืนตัวอย่างบวกใหม่ มันเป็นเช่นเดียวกับ AUC หากความแม่นยำถูกแก้ไขโดยส่วนคงที่และเป็นคำจำกัดความที่ใช้โดย TREC บ่อยที่สุด

http://www.vlfeat.org/overview/plots-rank.html

นอกจากนี้ผลลัพธ์ aucและaverage_precision_scoreไม่เหมือนกันใน scikit-Learn นี่เป็นเรื่องแปลกเพราะในเอกสารที่เรามี:

คำนวณความแม่นยำเฉลี่ย (AP) จากคะแนนการทำนายคะแนนนี้สอดคล้องกับพื้นที่ใต้กราฟความแม่นยำในการจำ

นี่คือรหัส:

# Compute Precision-Recall and plot curve
precision, recall, thresholds = precision_recall_curve(y_test, clf.predict_proba(X_test)[:,1])
area = auc(recall, precision)
print "Area Under PR Curve(AP): %0.2f" % area  #should be same as AP?

print 'AP', average_precision_score(y_test, y_pred, average='weighted')
print 'AP', average_precision_score(y_test, y_pred, average='macro')
print 'AP', average_precision_score(y_test, y_pred, average='micro')
print 'AP', average_precision_score(y_test, y_pred, average='samples')

สำหรับ classifer ของฉันฉันมีสิ่งที่ชอบ:

Area Under PR Curve(AP): 0.65
AP 0.676101781304
AP 0.676101781304
AP 0.676101781304
AP 0.676101781304

คำตอบ:


15

คำตอบสั้น ๆ คือใช่ ความแม่นยำเฉลี่ยเป็นตัวเลขเดียวที่ใช้เพื่อสรุปเส้นโค้ง Precision-Recall:

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถประมาณอินทิกรัล (พื้นที่ใต้เส้นโค้ง) ด้วย:

ป้อนคำอธิบายรูปภาพที่นี่

โปรดดูที่ลิงค์นี้สำหรับคำอธิบายที่ดี


แล้วความคิดเห็นนี้ล่ะ? "AUC นั้นได้มาจากการประมาณความแม่นยำของรูปสี่เหลี่ยมคางหมูแบบทางเลือกและโดยปกติแล้วตัวชี้วัดที่เทียบเท่ากันเกือบจะเป็นค่าเฉลี่ยความแม่นยำ (AP) ส่งคืนเป็น info.ap นี่คือค่าเฉลี่ยของความแม่นยำที่ได้รับทุกครั้ง มันเป็นเช่นเดียวกับ AUC หากความแม่นยำถูกแก้ไขโดยส่วนคงที่และเป็นคำจำกัดความที่ใช้โดย TREC บ่อยที่สุด " vlfeat.org/overview/plots-rank.html
mrgloom

1
ฉันคิดว่าthe average of the precision obtained every time a new positive sample is recalledหมายถึงความแม่นยำเฉลี่ย Interpolatedอธิบายไว้ในลิงค์ที่ฉันให้ นักเขียนบางคนเลือกที่ใกล้เคียงอื่นที่เรียกว่ามีความแม่นยำเฉลี่ยหยัน พวกเขายังคงเรียกมันว่าความแม่นยำโดยเฉลี่ย
Zhubarb

คำถามสั้น ๆ สองสามข้อ: 1) ทำไมประสานงาน (เรียกคืน = 0, ความแม่นยำ = 1) ฉันไม่เข้าท่าเลย 2) ตามที่คุณอาจสังเกตเห็นหากเราลดเกณฑ์ของตัวจําแนกประเภทลงผลลัพธ์ที่มากขึ้นอาจถูกส่งคืนและดังนั้นการเรียกคืนอาจไม่เพิ่มขึ้น แต่ความแม่นยำอาจแตกต่างกันตัวอย่างเช่นมี 2 รายการที่เป็นบวกทั้งหมด = [เท็จจริงเท็จเท็จจริง] ดังนั้นคู่ pr = [(p = 0, r = 0), (1/2, 1/2), (1/3, 1/2), (1 / 4, 1/2), (2/5, 2/2)] อย่างที่คุณเห็นสำหรับ r = 1/2 มี 3 p (เช่น 1/2, 1/3, 1/4) เช่นเดียวกับในกราฟของคุณที่ r = 0.8 มันก็แค่แปลงพวกมันที่แกน x เดียวกัน
อะโวคาโด

2

average_precision_score ฟังก์ชั่นคาดหวังความเชื่อมั่นหรือความน่าจะเป็นพารามิเตอร์ที่สอง

ดังนั้นคุณควรใช้มันดังต่อไปนี้

average_precision_score(y_test, clf.predict_proba(X_test)[:,1])

แล้วมันก็เป็นผลลัพธ์เดียวกันของaucฟังก์ชั่น


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