Cara menghitung presisi dan mengingat dalam matriks kebingungan 3 x 3
12
Predicted
class
Cat Dog Rabbit
Actual class
Cat 5 3 0
Dog 2 3 1
Rabbit 0 2 11
Bagaimana saya bisa menghitung presisi dan mengingat sehingga menjadi mudah untuk menghitung skor-F1. Matriks kebingungan normal adalah dimensi 2 x 2. Namun, ketika menjadi 3 x 3 saya tidak tahu bagaimana cara menghitung presisi dan daya ingat.
Jika Anda menjabarkan definisi presisi (alias PPV nilai prediktif positif) dan mengingat (alias sensitivitas), Anda melihat bahwa definisi tersebut terkait dengan satu kelas yang tidak bergantung pada kelas lain:
Ingat atau senstitivitas adalah proporsi kasus yang diidentifikasi dengan benar sebagai milik kelas c di antara semua kasus yang benar-benar milik kelas c .
(Mengingat kami memiliki kasus yang benar-benar milik " c ", berapa probabilitas memperkirakan ini dengan benar?)
Nilai prediksi PPV presisi atau positif adalah proporsi kasus yang diidentifikasi dengan benar sebagai milik kelas c di antara semua kasus yang diklaim oleh pengklasifikasi bahwa mereka milik kelas c .
Dengan kata lain, dari kasus-kasus yang diprediksi berasal dari kelas c , fraksi mana yang benar-benar milik kelas c ? (Mengingat prediksi " c ", berapakah probabilitas menjadi benar?)
nilai prediksi negatif NPV dari kasus-kasus tersebut diprediksi tidak termasuk kelas c , fraksi mana yang benar-benar bukan milik kelas c ? (Mengingat prediksi "bukan c ", berapakah probabilitas menjadi benar?)
Sehingga Anda dapat menghitung presisi dan mengingat untuk masing-masing kelas Anda. Untuk tabel kebingungan multi-kelas, masing-masing elemen diagonal dibagi dengan jumlah baris dan kolomnya:
Terima kasih banyak. Saya sudah mengerti analogi yang dijelaskan dalam solusi Anda. Saya akan membaca kertas. Saya akan menerima ini sebagai jawaban. Saya tidak mengerti PPV DAN NPV. Tolong jelaskan konsep ini sebagai grafik seperti Sens dan Spec dijelaskan dan saya akan menerima jawaban Anda.
user22149
3
Dengan mengurangi data menjadi pilihan yang dipaksakan (klasifikasi) dan tidak merekam apakah ada "panggilan dekat", Anda memperoleh perkiraan statistik presisi minimum informasi minimum, selain secara diam-diam mengasumsikan fungsi utilitas / kerugian / biaya yang aneh dan menggunakan ambang batas sewenang-wenang. . Akan jauh lebih baik menggunakan informasi maksimum, yang akan mencakup kemungkinan keanggotaan kelas dan bukan pilihan yang dipaksakan.
Cara termudah adalah dengan tidak menggunakan confusion_matrix sama sekali, Gunakan klasifikasi_report (), itu akan memberi Anda semua yang Anda butuhkan, tepuk tangan ...
Sunting:
ini adalah format untuk confusion_matrix ():
[[TP, FN]
[FP, TN]]
Dan laporan klasifikasi memberikan semua ini
Jika Anda hanya menginginkan hasilnya, saran saya adalah jangan terlalu memikirkan dan menggunakan alat yang Anda inginkan. Berikut ini cara melakukannya dengan Python;
Berikut ini adalah contoh dari matriks kebingungan multi-kelas dengan asumsi label kelas kami adalah A, B dan C
A / P A B C Jumlah
A 10 3 4 17
B 2 12 6 20
C 6 3 9 18
Jumlah 18 18 19 55
Sekarang kita menghitung tiga nilai untuk Precision dan Recall masing-masing dan menyebutnya Pa, Pb dan Pc; dan juga Ra, Rb, Rc.
Kita tahu Precision = TP / (TP + FP), jadi untuk Pa true positif akan menjadi A aktual yang diprediksi sebagai A, yaitu, 10, sisa dua sel dalam kolom itu, apakah itu B atau C, buat False Positive. Begitu
Pa = 10/18 = 0,55 Ra = 10/17 = 0,59
Sekarang presisi dan recall untuk kelas B adalah Pb dan Rb. Untuk kelas B, true positive adalah B aktual diprediksi sebagai B, yaitu sel yang berisi nilai 12 dan sisa dua sel dalam kolom itu membuat False Positive, jadi
Pb = 12/18 = 0,67 Rb = 12/20 = 0,6
Demikian pula Pc = 9/19 = 0,47 Rc = 9/18 = 0,5
Kinerja keseluruhan dari classifier akan ditentukan oleh Precision dan Average Recall rata-rata. Untuk ini, kita mengalikan nilai presisi untuk setiap kelas dengan jumlah instance aktual untuk kelas itu, lalu menambahkannya dan membaginya dengan jumlah total instance. Suka ,
Dengan mengurangi data menjadi pilihan yang dipaksakan (klasifikasi) dan tidak merekam apakah ada "panggilan dekat", Anda memperoleh perkiraan statistik presisi minimum informasi minimum, selain secara diam-diam mengasumsikan fungsi utilitas / kerugian / biaya yang aneh dan menggunakan ambang batas sewenang-wenang. . Akan jauh lebih baik menggunakan informasi maksimum, yang akan mencakup kemungkinan keanggotaan kelas dan bukan pilihan yang dipaksakan.
sumber
Cara termudah adalah dengan tidak menggunakan confusion_matrix sama sekali, Gunakan klasifikasi_report (), itu akan memberi Anda semua yang Anda butuhkan, tepuk tangan ...
Sunting:
ini adalah format untuk confusion_matrix ():
[[TP, FN]
[FP, TN]]
Dan laporan klasifikasi memberikan semua ini
sumber
Jika Anda hanya menginginkan hasilnya, saran saya adalah jangan terlalu memikirkan dan menggunakan alat yang Anda inginkan. Berikut ini cara melakukannya dengan Python;
Untuk mendapatkan output berikut
sumber
Berikut ini adalah contoh dari matriks kebingungan multi-kelas dengan asumsi label kelas kami adalah A, B dan C
A / P A B C Jumlah
A 10 3 4 17
B 2 12 6 20
C 6 3 9 18
Jumlah 18 18 19 55
Sekarang kita menghitung tiga nilai untuk Precision dan Recall masing-masing dan menyebutnya Pa, Pb dan Pc; dan juga Ra, Rb, Rc.
Kita tahu Precision = TP / (TP + FP), jadi untuk Pa true positif akan menjadi A aktual yang diprediksi sebagai A, yaitu, 10, sisa dua sel dalam kolom itu, apakah itu B atau C, buat False Positive. Begitu
Pa = 10/18 = 0,55 Ra = 10/17 = 0,59
Sekarang presisi dan recall untuk kelas B adalah Pb dan Rb. Untuk kelas B, true positive adalah B aktual diprediksi sebagai B, yaitu sel yang berisi nilai 12 dan sisa dua sel dalam kolom itu membuat False Positive, jadi
Pb = 12/18 = 0,67 Rb = 12/20 = 0,6
Demikian pula Pc = 9/19 = 0,47 Rc = 9/18 = 0,5
Kinerja keseluruhan dari classifier akan ditentukan oleh Precision dan Average Recall rata-rata. Untuk ini, kita mengalikan nilai presisi untuk setiap kelas dengan jumlah instance aktual untuk kelas itu, lalu menambahkannya dan membaginya dengan jumlah total instance. Suka ,
Rata-Rata Presisi = (0,55 * 17 + 0,67 * 20 + 0,47 * 18) / 55 = 31,21 / 55 = 0,57 Rata-rata Panggilan Kembali = (0,59 * 17 + 0,6 * 20 + 0,5 * 18) / 55 = 31,03 / 55 = 0,56
Saya harap ini membantu
sumber