Apa nilai yang benar untuk presisi dan mengingat ketika penyebut sama dengan 0?

16

Presisi didefinisikan sebagai:

p = true positive / (true positive + false positive)

Berapa nilai presisi jika (true positive + false positive) = 0? Apakah itu hanya tidak terdefinisi?

Pertanyaan yang sama untuk diingat:

r = true positive / (true positive + false negative)

Dalam hal ini, berapakah nilai recall jika (true positive + false negative) = 0?

PS Pertanyaan ini sangat mirip dengan pertanyaan. Apa nilai yang tepat untuk presisi dan mengingat dalam kasus tepi? .

Raffi Khatchadourian
sumber
1
Heh, itu bahkan dijawab dalam duplikat; tapi sebut saja itu duplikat yang bagus.

Jawaban:

9

Jawaban untuk pertanyaan terkait sebelumnya juga berlaku di sini.

Jika (true positive + false negative) = 0 maka tidak ada kasus positif dalam input data, sehingga setiap analisis dari kasus ini tidak memiliki informasi, dan jadi tidak ada kesimpulan tentang bagaimana kasus positif ditangani. Anda ingin N / A atau sesuatu yang serupa dengan hasil rasio, menghindari pembagian dengan kesalahan nol

Jika (true positive + false positive) = 0 maka semua case telah diprediksi negatif: ini adalah salah satu ujung kurva ROC. Sekali lagi, Anda ingin mengenali dan melaporkan kemungkinan ini sambil menghindari pembagian dengan kesalahan nol .

Henry
sumber
Terima kasih Henry atas jawabannya. Jika saya mengerti benar, dalam kasus sebelumnya, Anda tidak ingin mengenali dan melaporkan hasilnya, sedangkan dalam kasus terakhir Anda lakukan . Apakah itu benar?
Raffi Khatchadourian
Ya: Dalam kasus tanpa input positif, presisi tidak ada artinya; dalam kasus yang diprediksi tidak positif, Anda ingin melaporkan bahwa tes telah ditetapkan menjadi sangat negatif.
Henry
5

Sebuah jawaban menarik ditawarkan di sini: https://github.com/dice-group/gerbil/wiki/Precision,-Recall-and-F1-measure

Penulis modul menghasilkan skor yang berbeda untuk presisi dan mengingat tergantung pada apakah benar positif, positif palsu dan negatif palsu semua 0. Jika mereka, hasilnya seolah-olah bagus.

Dalam beberapa kasus yang jarang terjadi, penghitungan Precision atau Recall dapat menyebabkan pembagian dengan 0. Mengenai presisi, ini dapat terjadi jika tidak ada hasil di dalam jawaban annotator dan, dengan demikian, benar dan positif palsu adalah 0. Untuk kasus khusus ini, kami telah menetapkan bahwa jika positif asli, positif salah dan negatif palsu semuanya 0, ketepatan, penarikan kembali dan ukuran F1 adalah 1. Ini mungkin terjadi dalam kasus di mana standar emas berisi dokumen tanpa anotasi dan anotator (dengan benar) tidak mengembalikan anotasi. Jika benar positif adalah 0 dan salah satu dari dua penghitung lainnya lebih besar dari 0, ketepatan, penarikan kembali dan ukuran-F1 adalah 0.

Saya tidak yakin apakah jenis penilaian ini akan berguna dalam situasi lain di luar kasus khusus mereka, tetapi ada baiknya dipikirkan.

shiri
sumber
1

Ketika mengevaluasi sebuah classifier pada ambang batas tinggi, presisi mungkin (seringkali sebenarnya) bukan 1 ketika recall adalah 0. Biasanya tidak ada! Saya pikir ada sesuatu yang salah tentang bagaimana orang merencanakan kurva P / R. Menghindari N / A sampel adalah bias dalam arti bahwa Anda menghindari singularitas sampel. Saya menghitung rata-rata presisi wrt ke recall rata-rata mengabaikan sampel N / A dan saya tidak pernah mendapatkan classifier mulai dari 1 untuk 0 recall untuk jaring saraf dangkal dalam deteksi objek. Ini juga berlaku untuk kurva yang dihitung dengan angka tp, fp, fn. Sangat mudah untuk memverifikasi dengan kertas dan pensil dengan satu gambar. Sebagai contoh: Saya memiliki classifier yang menghasilkan untuk satu gambar: preds = [. 7 .6 .5 .1 .05] kebenaran = [nynny] Dengan menghitung matriks kebingungan dengan berbagai ambang batas yang kami miliki: tp = [2 1 1 1 0 0], fn = [0 1 1 1 2 2], fp = [3 3 2 1 1 0]. recall rec = [1 .5 .5 .5 0 0], dan presisi = [.4 .25 1/3 .5 0 NaN]. Saya tidak melihat bagaimana masuk akal untuk mengganti NaN atau presisi (@ recall == 0) dengan 1. 1 harus menjadi batas atas, bukan nilai yang kami ganti presisi (@ recall == 0) dengan.

Jonathan Blanchette
sumber