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!
classification
random-forest
decision-trees
unbalanced-classes
pengguna798275
sumber
sumber
Jawaban:
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 .
sumber
Meskipun jawaban dalam kenyataannya selalu
true
ataufalse
, 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.
sumber
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:
Anda dapat menggunakannya dengan mudah di Python, menggunakan satu
imbalanced-learn
paket , yang terkandung dalam contrib modul Scikit-Belajar dan harus diinstal secara terpisah.Paket itu mencakup metode untuk menggabungkan pengambilan sampel berlebih / kurang serta seperangkat utilitas untuk menghasilkan kumpulan data yang dapat mengalir ke Keras / Tensorflow.
sumber