Saya memiliki dataset tidak seimbang dalam tugas klasifikasi biner, di mana jumlah positif vs jumlah negatif adalah 0,3% vs 99,7%. Kesenjangan antara positif dan negatif sangat besar. Ketika saya melatih CNN dengan struktur yang digunakan dalam masalah MNIST, hasil pengujian menunjukkan Tingkat Negatif Palsu yang tinggi. Juga, kurva kesalahan latihan turun dengan cepat dalam beberapa zaman di awal tetapi tetap nilai yang sama di zaman berikut.
Bisakah Anda memberi tahu saya cara untuk memproses masalah ini? Terima kasih!
Mengapa Anda ingin menggunakan CNN di sini? Sudahkah Anda mempertimbangkan model lain yang benar-benar menangani data yang tidak seimbang?
Sebagai contoh, saya telah menemukan dua teknik berikut ini telah bekerja dengan sangat baik untuk saya:
Random Forests w / SMOTE Boosting : Gunakan hibrida
SMOTE
yang memberi contoh rendah pada kelas mayoritas dan sampel berlebihan pada kelas minoritas dengan persentase yang dapat disesuaikan. Pilih persentase ini tergantung pada distribusi variabel respons Anda di set pelatihan. Masukkan data ini ke model RF Anda. Selalu validasi silang / lakukan pencarian jaringan untuk menemukan pengaturan parameter terbaik untuk RF Anda.XGBoost w / hyper-parameter optimization : Sekali lagi, cross-validate atau lakukan gird-search untuk menemukan pengaturan parameter terbaik untuk model. Selain itu,
xgboost
memungkinkan Anda untuk menyeimbangkan bobot kelas positif dan negatif menggunakanscale_pos_weight
. Lihat dokumentasi parameter untuk daftar lengkap.Saya juga harus menambahkan bahwa kumpulan data yang saya kerjakan memiliki persentase kemiringan yang sama dan saya dapat memperoleh skor Sensitivitas 0,941 dan spesifisitas 0,71 dengan
xgboost
, yang berarti model memprediksi positif sebenarnya dengan cukup akurat dan menjadi pertanda baik untukku.(Maaf, saya tidak bisa meninggalkan komentar, reputasi tidak cukup dan saya benar-benar ingin tahu mengapa Anda memilih CNN)
sumber
Dataset yang tidak seimbang adalah masalah umum di semua bidang dan tidak secara khusus menyangkut visi komputer dan masalah yang ditangani oleh Convolutional Neural Networks (CNNs).
Untuk mengatasi masalah ini, Anda harus mencoba menyeimbangkan dataset Anda, baik dengan over-sampling kelas minoritas atau kelas mayoritas under-sampling (atau keduanya). Arguably, pilihan yang baik adalah algoritma SMOTE (Synthetic Minority Over-sampling Technique), seperti yang disebutkan di atas. Di sini Anda dapat menemukan perbandingan berbagai algoritma pengambilan sampel berlebih. Jika Anda pengguna Python, ketidakseimbangan-belajar adalah perpustakaan yang bagus yang menerapkan banyak teknik yang berguna untuk menyeimbangkan dataset.
Di sisi lain, jika Anda mencoba untuk mengklasifikasikan gambar, cara yang bagus untuk meningkatkan ukuran dataset Anda adalah dengan menambahkannya (yaitu dengan membuat contoh sintetis yang masuk akal, misalnya gambar yang serupa tetapi diputar / digeser sedikit sehubungan dengan yang asli). Terkadang Anda mungkin perlu menambah kelas minoritas untuk mencapai keseimbangan yang lebih baik. Keras ImageDataGenerator kelas adalah alat yang bagus untuk tujuan ini.
sumber