Bagaimana mengukur kinerja classifier ketika hampir 100% label kelas milik satu kelas?


9

Dalam data saya, saya memiliki variabel kelas, dilambangkan sebagai . Nilai variabel kelas ini adalah (biner). Hampir semua pengamatan adalah 0 (mendekati 100%, lebih tepatnya, 97%). Saya ingin tes "kinerja" pada model klasifikasi yang berbeda (bisa jadi akurasi). Apa yang saya takutkan terjadi adalah bahwa jika saya memiliki model klasifikasi yang selalu mengklasifikasikan pengamatan apa pun ke dalam kelas 0, maka model itu akan menjadi 97% akurat (meskipun tidak pernah mempertimbangkan variabel lain).0 , 1 CC0,1C

Apakah ada tes kinerja terkenal untuk model klasifikasi pada data yang berhubungan dengan peristiwa yang sangat langka?

Jawaban:


3

Beberapa kemungkinan muncul di benak saya.

Melihat hit rate keseluruhan biasanya bukan ide yang sangat baik karena akan tergantung pada komposisi set tes jika kinerja untuk kelas yang berbeda berbeda. Jadi paling tidak, Anda harus menentukan (dan membenarkan) frekuensi relatif dari kelas-kelas dalam data pengujian Anda untuk mendapatkan nilai yang bermakna.

Kedua, seperti yang dikatakan @Shorack, tentukan jenis kesalahan mana yang paling penting. Seringkali, pengklasifikasi perlu memenuhi kriteria kinerja tertentu agar berguna (dan akurasi keseluruhan jarang menjadi ukuran yang memadai). Ada langkah-langkah seperti sensitivitas, spesifisitas, nilai prakiraan positif dan negatif yang memperhitungkan kelas yang berbeda dan berbagai jenis kesalahan klasifikasi. Anda dapat mengatakan bahwa tindakan ini menjawab berbagai pertanyaan tentang pengklasifikasi:

  • sensitivitas: Apa fraksi kasus yang benar-benar milik kelas C yang diakui?
  • spesifisitas: Fraksi apa yang benar - benar bukan milik kelas C diakui?
  • nilai prediksi positif: Mengingat classifier memprediksi kelas C, berapa probabilitas bahwa prediksi ini benar?
  • nilai prediktif negatif: Mengingat classifier memperkirakan bahwa case bukan bentuk kelas C, berapa probabilitas bahwa prediksi ini benar?

Pertanyaan-pertanyaan ini sering memungkinkan untuk merumuskan spesifikasi yang diperlukan oleh pengklasifikasi agar bermanfaat.

Nilai-nilai prediktif seringkali lebih penting dari sudut pandang penerapan praktis pengklasifikasi: mereka dikondisikan pada prediksi, yang merupakan situasi Anda saat menerapkan pengklasifikasi (pasien biasanya tidak tertarik mengetahui seberapa besar kemungkinannya). Tes ini untuk mengenali kasus yang sakit, tetapi lebih tepatnya seberapa besar diagnosis yang dinyatakan benar). Namun, untuk menghitungnya dengan benar, Anda perlu mengetahui frekuensi relatif dari berbagai kelas dalam populasi yang digunakan untuk pengklasifikasi (sepertinya Anda memiliki informasi ini - jadi tidak ada yang menghalangi Anda untuk melihatnya).

Anda juga dapat melihat perolehan informasi yang diberikan prediksi positif atau negatif. Ini diukur dengan rasio kemungkinan positif dan negatif, LR⁺ dan LR⁻. Secara singkat, mereka memberi tahu Anda seberapa besar prediksi mengubah peluang terhadap kelas yang dimaksud. (lihat jawaban saya di sini untuk penjelasan lebih rinci)

Untuk classifier sepele Anda, hal-hal terlihat seperti ini: Saya akan menggunakan kelas "0" sebagai kelas yang dimaksud, jadi "positif" berarti kelas "0". Dari 100 kasus, 100 diperkirakan positif (termasuk kelas 0). 97 dari mereka benar-benar melakukannya, 3 tidak. Sensitivitas untuk kelas 0 adalah 100% (semua 97 kasus yang benar-benar milik kelas 0 diakui), spesifisitasnya adalah 0 (tidak ada kasus lain yang dikenali). nilai prediktif positif (dengan asumsi frekuensi relatif 97: 3 mewakili) adalah 97%, nilai prediktif negatif tidak dapat dihitung karena tidak ada prediksi negatif yang terjadi.

LR-=1-sensitivitasLR+=sensitivity1specificity=1
LR=1sensitivityspecificity=00
Sekarang LR⁺ dan LR⁻ adalah faktor-faktor yang dengannya Anda mengalikan peluang untuk kasus tersebut menjadi kelas positif ("0"). Memiliki LR⁺ of 1 berarti bahwa prediksi positif tidak memberi Anda informasi apa pun: itu tidak akan mengubah peluang. Jadi di sini Anda memiliki ukuran yang dengan jelas mengungkapkan fakta bahwa classifier sepele Anda tidak menambahkan informasi apa pun .


Arah pemikiran yang sangat berbeda: Anda menyebutkan bahwa Anda ingin mengevaluasi berbagai pengklasifikasi. Kedengarannya seperti perbandingan atau seleksi klasifikasi. Peringatan dengan langkah-langkah yang saya diskusikan di atas adalah bahwa mereka tunduk pada ketidakpastian acak yang sangat tinggi (artinya Anda perlu banyak kasus uji) jika Anda mengevaluasi mereka pada label kelas "keras". Jika prediksi Anda sebagian besar berkelanjutan (metrik, mis. Probabilitas posterior), Anda dapat menggunakan tindakan terkait yang melihat jenis pertanyaan yang sama tetapi tidak menggunakan pecahan kasus, tetapi tindakan terus menerus, lihat di sini . Ini juga akan lebih cocok untuk mendeteksi perbedaan kecil dalam prediksi.

(@FrankHarrell akan memberi tahu Anda bahwa Anda memerlukan "aturan penilaian yang tepat", sehingga itu adalah istilah pencarian lain yang perlu diingat.)


3

Pertama-tama: apakah semua hit sama pentingnya dan semua miss sama pentingnya? Jika demikian, maka tidak ada yang salah dengan skor nol-model Anda yang bagus: itu hanyalah solusi yang sangat baik.

Jika Anda merasa penting untuk memiliki kinerja yang baik dalam memprediksi angka 1, Anda bisa menggunakan ukuran-F sebagai gantinya. Ini pada dasarnya adalah rata-rata harmonik dari ingatan (bagian mana dari 1 sebenarnya telah diprediksi sebagai 1) dan presisi (bagian apa dari 1 yang diprediksi sebenarnya adalah 1). Untuk model yang mendapat skor tinggi pada ukuran ini, perlu:

  1. Temukan sebagian besar angka 1.
  2. Tidak sering memprediksi 1 ketika sebenarnya 0.

Dan itu perlu melakukan keduanya secara bersamaan. Bahkan jika model Anda hanya melakukan satu dari dua dengan cara yang hampir sempurna, ia akan memiliki skor rendah jika tidak melakukan pada persyaratan lainnya. https://en.wikipedia.org/wiki/F1_score


Itu adalah aturan penilaian yang tidak tepat yang hanya menggunakan 1 bit informasi dari prediksi. Aturan penilaian yang tidak tepat dioptimalkan oleh model palsu.
Frank Harrell

2

Saya senang bahwa @cbeleites membuka pintu ... Probabilitas konkordansi atau -index, yang kebetulan menyamai area ROC dalam kasus khusus biner , adalah ringkasan yang bagus dari diskriminasi prediksi. Kurva ROC sendiri memiliki rasio tinta: informasi yang tinggi, tetapi area di bawah kurva, karena sama dengan probabilitas konkordansi, memiliki banyak fitur yang bagus, salah satunya adalah bahwa ia tidak tergantung pada prevalensi karena kondisi pada . Ini tidak cukup tepat (gunakan ukuran umum atau rasio kemungkinan untuk mencapai itu) dan tidak cukup sensitif untuk digunakan untuk membandingkan dua model, ini adalah ringkasan yang bagus dari model tunggal.Y Y = 1 Y R 2 χ 2cYY=1YR2χ2


1

Receiver Operating Characteristic (ROC) http://en.wikipedia.org/wiki/Receiver_operating_characteristic curve dan perhitungan yang terkait (yaitu Area Under Curve-AUC) biasa digunakan. pada dasarnya Anda membayangkan classifier Anda memberikan respons berkelanjutan (misalnya antara 0 dan 1) dan Anda merencanakan sensitivitas vs tingkat alarm palsu (1- spesifisitas) karena ambang keputusan bervariasi antara 0 dan 1. Ini dirancang khusus untuk peristiwa langka (melihat musuh pesawat?).


1

Saat Anda berurusan dengan data yang sangat tidak seimbang, kurva Precision-Recall adalah alat yang sangat bagus, lebih baik daripada sepupunya yang lebih umum di kurva ROC .

Davis et. Al. telah menunjukkan bahwa suatu algoritma yang mengoptimalkan area di bawah kurva ROC tidak dijamin untuk mengoptimalkan area di bawah kurva PR.

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.