Bagaimana Anda menghitung presisi dan penarikan kembali untuk klasifikasi multi-kelas menggunakan matriks kebingungan?

92

Saya bertanya-tanya bagaimana cara menghitung presisi dan mengingat menggunakan matriks kebingungan untuk masalah klasifikasi multi-kelas. Secara khusus, pengamatan hanya dapat ditugaskan untuk kelas / label yang paling mungkin. Saya ingin menghitung:

  • Presisi = TP / (TP + FP)
  • Ingat kembali = TP / (TP + FN)

untuk setiap kelas, dan kemudian menghitung ukuran-mikro-rata-rata.

daiyue
sumber
Docx ini , Mengevaluasi model klasifikasi - Apa yang dikatakan presisi dan recall? , dari Compumine memberikan pengantar sederhana ke matriks kebingungan dan langkah-langkah yang diambil darinya. Ini membantu untuk membuat matriks kebingungan, presisi, daya ingat, spesifisitas dan akurasi.
Jayran Choopan
4
temukan jawabannya di sini. Penjelasan yang sangat bagus youtube.com/watch?v=FAr2GmWNbT0
Tautan Compumine sudah mati.
Trenton
Untuk kasus multiclass, apa yang saya pahami di sepanjang baris (axis = 0) adalah recall dan di sepanjang kolom (axis = 1) adalah presisi. rxnlp.com/...
MD ZIA ULLAH

Jawaban:

69

Dalam kasus 2-hipotesis, matriks kebingungan biasanya:

       | Declare H1  |  Declare H0 |
|Is H1 |    TP       |   FN        |
|Is H0 |    FP       |   TN        |

tempat saya menggunakan sesuatu yang mirip dengan notasi Anda:

  • TP = benar positif (nyatakan H1 saat, sebenarnya, H1),
  • FN = false negative (nyatakan H0 ketika, dalam kebenaran, H1),
  • FP = false positive
  • TN = benar negatif

Dari data mentah, nilai-nilai dalam tabel biasanya akan menjadi jumlah untuk setiap kemunculan atas data uji. Dari ini, Anda harus dapat menghitung jumlah yang Anda butuhkan.

Sunting

Generalisasi untuk masalah multi-kelas adalah untuk menjumlahkan baris / kolom dari matriks kebingungan. Mengingat bahwa matriks berorientasi seperti di atas, yaitu, bahwa deretan matriks yang diberikan sesuai dengan nilai spesifik untuk "kebenaran", kami memiliki:

Precision i=MiijMji

Recall i=MiijMij

Yaitu, presisi adalah sebagian kecil dari peristiwa di mana kita dengan benar menyatakan dari semua contoh di mana algoritma menyatakan . Sebaliknya, mengingat adalah sebagian kecil dari peristiwa di mana kita dengan benar menyatakan keluar dari semua kasus di mana kebenaran keadaan dunia adalah .iiii

Dave
sumber
1
Dalam kasus saya, ada 10+ kelas, jadi saya kira FN akan berarti jumlah total menyatakan kelas H (i), i! = 1; dan yang sama adalah FP?
daiyue
Hai, Saya ingin tahu apa nilainya untuk Precision dan Recall, jika TP + FP = 0, dan TP + FN = 0 untuk beberapa kelas aktual dalam matriks kebingungan.
daiyue
Presisi untuk kelas itidak terdefinisi jika tidak ada contoh di mana algoritma menyatakan i. Penarikan kembali untuk kelas itidak ditentukan jika set tes tidak termasuk kelas i.
Dave
Tujuan akhir saya adalah menghitung Ukuran Makro F, jadi saya membutuhkan nilai presisi dan recall untuk setiap kelas i; jadi bagaimana saya bisa menghitung ukuran Macro-F jika dua kasus di atas muncul di beberapa kelas i? Secara khusus, apa nilai untuk Fi, dan apakah kelas i dihitung sebagai salah satu kelas M, bahwa jumlah elemen dalam M akan dihitung sebagai penyebut rumus untuk menghitung ukuran Makro F.
daiyue
1
sry, bisakah Anda menjelaskan ide Anda dengan lebih jelas?
daiyue
31

Ringkasan makalah yang bagus, melihat metrik ini untuk masalah multi-kelas:

  • Sokolova, M., & Lapalme, G. (2009). Analisis sistematis ukuran kinerja untuk tugas klasifikasi. Pemrosesan dan Manajemen Informasi, 45 , hal. 427-437. ( pdf )

Abstraknya berbunyi:

Makalah ini menyajikan analisis sistematis dari dua puluh empat ukuran kinerja yang digunakan dalam spektrum lengkap tugas klasifikasi Machine Learning, yaitu, biner, multi-kelas, multi-label, dan hierarkis. Untuk setiap tugas klasifikasi, penelitian menghubungkan serangkaian perubahan dalam matriks kebingungan dengan karakteristik data tertentu. Kemudian analisis berkonsentrasi pada jenis perubahan ke matriks kebingungan yang tidak mengubah ukuran, oleh karena itu, mempertahankan evaluasi pengklasifikasi (ukuran invarian). Hasilnya adalah taksonomi ukuran invariansi sehubungan dengan semua perubahan distribusi label yang relevan dalam masalah klasifikasi. Analisis formal ini didukung oleh contoh aplikasi di mana sifat invarian langkah-langkah mengarah pada evaluasi pengklasifikasi yang lebih andal.

James Taylor
sumber
2
Selamat datang di situs ini, @JamesTaylor. Maukah Anda memberikan ringkasan informasi dalam makalah yang tertaut untuk membantu pembaca memutuskan apakah itu yang mereka butuhkan & jika tautannya mati?
gung - Reinstate Monica
8

Menggunakan sklearn dan numpy:

from sklearn.metrics import confusion_matrix
import numpy as np

labels = ...
predictions = ...

cm = confusion_matrix(labels, predictions)
recall = np.diag(cm) / np.sum(cm, axis = 1)
precision = np.diag(cm) / np.sum(cm, axis = 0)

Untuk mendapatkan ukuran presisi dan daya ingat keseluruhan, gunakan kemudian

np.mean(recall)
np.mean(precision)
Cristian Garcia
sumber