Kelas tidak seimbang - Bagaimana cara meminimalkan negatif palsu?

11

Saya memiliki dataset yang memiliki atribut kelas biner. Ada 623 contoh dengan kelas +1 (kanker positif) dan 101.671 contoh dengan kelas -1 (kanker negatif).

Saya telah mencoba berbagai algoritma (Naif Bayes, Random Forest, AODE, C4.5) dan semuanya memiliki rasio negatif palsu yang tidak dapat diterima. Random Forest memiliki akurasi prediksi keseluruhan tertinggi (99,5%) dan rasio negatif palsu terendah, tetapi masih merindukan 79% dari kelas positif (yaitu gagal mendeteksi 79% tumor ganas).

Adakah ide bagaimana saya dapat memperbaiki situasi ini?

Terima kasih!

pengguna798275
sumber
Anda dapat melihat pertanyaan ini di mana saya mendapat balasan yang menarik untuk masalah ini. Salam Hormat
Michael Hooreman

Jawaban:

9

Ketidakseimbangan kelas adalah masalah yang sangat umum. Anda dapat melakukan oversample kelas positif (atau undersample negatif) atau menambahkan bobot kelas.

Hal lain yang perlu diingat dalam hal ini adalah bahwa akurasi bukanlah metrik yang sangat berguna di sini. Anda mungkin mempertimbangkan skor AUC atau F1 .

Mengubah ambang keputusan Anda mungkin tampak menarik, tetapi jelas akan menyebabkan (dalam hal ini kemungkinan secara drastis) peningkatan positif palsu (meskipun mungkin FP tidak seburuk FN dalam kasus diagnosis medis, jika tes tidak mahal mahal).

Analisis yang lebih mendalam tentang opsi dalam hal ketidakseimbangan kelas disediakan di sini .

jamesmf
sumber
3

Meskipun jawaban dalam kenyataannya selalu trueatau false, Anda dapat membuat atribut kelas Anda bukan label tetapi angka floating point, yaitu 1,0 dan 0,0 (atau 100 dan 0). Artinya, Anda bisa membingkainya adalah masalah regresi , bukan masalah klasifikasi.

Maka output yang diprediksi juga akan menjadi angka pada spektrum itu, yaitu probabilitas bukan label. Implementasi Anda saat ini pada dasarnya setara dengan model regresi dengan ambang batas 0,5.

Dengan output seperti itu, Anda atau klien Anda dapat menentukan ambang batas yang dapat diterima (mis. 0,3). Tentu saja akan ada lebih banyak kesalahan positif, tetapi untuk beberapa aplikasi, seperti mendeteksi kanker, itu optimal.

Oversampling (positif) atau undersampling (negatif) juga merupakan cara untuk memperbaikinya, tetapi harus dilakukan dengan sungguh-sungguh, dapat mengorbankan akurasi, dan masih mengorbankan kontrol untuk memindahkan ambang setelah membuat data dan pelatihan.

Adam Bittlingmayer
sumber
0

Pengambilan sampel secara kurang dan lebih sebagai teknik telah disebutkan, tetapi saya pikir saya akan menunjuk ke varian yang umum digunakan:

SMOTE : Teknik Over-sampling Minoritas Sintetis

Itu disajikan dalam makalah ini pada tahun 2002 . Berikut ini cuplikan dari abstrak:

Makalah ini menunjukkan bahwa kombinasi metode over-sampling kami pada kelas minoritas (abnormal) dan under-sampling, kelas mayoritas (normal) dapat mencapai kinerja pengklasifikasi yang lebih baik (dalam ruang ROC) daripada hanya mengambil sampel di bawah kelas mayoritas.


Anda dapat menggunakannya dengan mudah di Python, menggunakan satu imbalanced-learnpaket , yang terkandung dalam contrib modul Scikit-Belajar dan harus diinstal secara terpisah.

imbalanced-learn adalah paket python yang menawarkan sejumlah teknik re-sampling yang biasa digunakan dalam dataset yang menunjukkan ketidakseimbangan antar kelas yang kuat.

Paket itu mencakup metode untuk menggabungkan pengambilan sampel berlebih / kurang serta seperangkat utilitas untuk menghasilkan kumpulan data yang dapat mengalir ke Keras / Tensorflow.

n1k31t4
sumber