Area di bawah Precision-Recall Curve (AUC dari PR-curve) dan Average Precision (AP)


27

Apakah Average Precision (AP) area di bawah Precision-Recall Curve (AUC dari PR-curve)?

EDIT:

berikut adalah beberapa komentar tentang perbedaan dalam PR AUC dan AP.

AUC diperoleh dengan interpolasi trapesium dari presisi. Metrik alternatif dan biasanya hampir setara adalah Average Precision (AP), yang dikembalikan sebagai info.ap. Ini adalah rata-rata presisi yang diperoleh setiap kali sampel positif baru dipanggil kembali. Ini sama dengan AUC jika presisi diinterpolasi oleh segmen konstan dan merupakan definisi yang paling sering digunakan oleh TREC.

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

Selain itu, AUC dan average_precision_score hasilnya tidak sama di scikit-belajar. Ini aneh, karena dalam dokumentasi yang kami miliki:

Hitung presisi rata-rata (AP) dari skor prediksi Skor ini sesuai dengan area di bawah kurva presisi-recall.

ini kodenya:

# 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')

untuk classifer saya, saya punya sesuatu seperti:

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

Jawaban:


15

Jawaban singkatnya adalah: YA . Average Precision adalah angka tunggal yang digunakan untuk merangkum kurva Precision-Recall:

masukkan deskripsi gambar di sini

Anda dapat memperkirakan integral (area di bawah kurva) dengan:

masukkan deskripsi gambar di sini

Silakan lihat tautan ini untuk penjelasan yang bagus.


Bagaimana dengan komentar ini? "AUC diperoleh dengan interpolasi trapesium dari presisi. Metrik alternatif dan biasanya hampir setara adalah Average Precision (AP), dikembalikan sebagai info.ap. Ini adalah rata-rata presisi yang diperoleh setiap kali sampel positif baru ditarik. Ini sama dengan AUC jika presisi diinterpolasi oleh segmen konstan dan merupakan definisi yang paling sering digunakan oleh TREC. " vlfeat.org/overview/plots-rank.html
mrgloom

1
Saya pikir the average of the precision obtained every time a new positive sample is recalledmengacu pada presisi rata-rata Terinterpolasi dijelaskan dalam tautan yang saya berikan. Beberapa penulis memilih pendekatan alternatif yang disebut presisi rata-rata yang diinterpolasi . Yang membingungkan, mereka masih menyebutnya presisi rata-rata.
Zhubarb

beberapa pertanyaan singkat: 1) mengapa koordinat (recall = 0, presisi = 1)? tidak masuk akal bagi saya sama sekali. 2) seperti yang mungkin Anda amati, jika kami menurunkan ambang klasifikasi, lebih banyak hasil dapat dikembalikan, dan sebagai konsekuensinya, penarikan kembali mungkin tidak meningkat, tetapi presisi dapat bervariasi, misalnya, dengan 2 item positif secara total, berikut adalah hasil pemeringkatannya = [Salah, Benar, Salah, Salah, Benar], jadi pr pair = [(p = 0, r = 0), (1/2, 1/2), (1/3, 1/2), (1 / 4, 1/2), (2/5, 2/2)], seperti yang Anda lihat, untuk r = 1/2, ada 3 p (yaitu 1/2, 1/3, 1/4) , sama seperti pada grafik Anda di r = 0,8, tidak apa-apa hanya plot mereka pada sumbu x yang sama?
alpukat

2

average_precision_score fungsi mengharapkan kepercayaan atau probabilitas sebagai parameter kedua.

jadi kamu harus menggunakannya seperti di bawah ini,

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

dan kemudian itu hasil aucfungsi yang sama.


Contoh berbeda dalam perangkat lunak WEKA dan scikit-learning memberikan skor CLF tetapi tidak AUC. Mungkinkah skor CLF ini sebenarnya terkait dengan AUC atau bahkan menjadi AUC?
hhh
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.