Bagaimana menangani masalah klasifikasi biner, di mana instance di kelas negatif sangat mirip? [duplikat]

Dec 01 2020

Misalkan, seseorang ingin mendeteksi, apakah sebuah gambar dengan ukuran tetap berisi kucing atau tidak. Tetapi sebagai kumpulan data, Anda memiliki 10.000 gambar kucing, dan 30000 gambar yang tidak berisi kucing, tetapi sangat mirip satu sama lain. Sebagai contoh, anggap saja, 30000 gambar di kelas "bukan kucing" hanya berisi gambar satu atau dua jenis laba-laba.

Saat melatih CNN, Anda akan menemukan bahwa Anda mencapai skor tinggi pada set pengujian (di sini skor tinggi = matriks kebingungan hampir sepenuhnya diagonal) tetapi ketika Anda ingin menggunakan CNN di dunia nyata, Anda menemukan bahwa hampir semuanya diklasifikasikan sebagai Seekor kucing.

Mengapa jaringan melakukan generalisasi dengan buruk dalam kasus ini? Bahkan jika kumpulan data tidak mewakili jenis data, CNN akan melihat di dunia nyata, bukankah semestinya mudah bagi CNN untuk mengatakan "Saya telah melihat 10.000 contoh kucing, oleh karena itu apa pun yang tidak terlihat seperti kucing bukan kucing "?

Bagaimana cara mengatasi masalah ini (selain mengumpulkan lebih banyak data)?

Jawaban

etiennedm Dec 01 2020 at 21:30

CNN dalam hal ini tidak mempelajari apa itu kucing, melainkan apa yang membedakan gambar dengan kucing dari gambar tanpa kucing.
Jika semua gambar "tanpa kucing" Anda berisi laba-laba, CNN juga dapat bertemu hanya dengan mendeteksi laba-laba: gambar dengan laba-laba milik "tanpa kucing" dan gambar lainnya milik "kucing" . Itu menjelaskan mengapa Anda memiliki matriks kebingungan yang baik pada data pengujian dan kinerja yang buruk di dunia nyata.

Anda memiliki beberapa opsi untuk menghindari situasi seperti itu:

  • tambahkan gambar lain ke label "tanpa kucing" Anda seperti yang Anda katakan (menggunakan kumpulan data publik misalnya)
  • coba pendekatan klasifikasi satu kelas . Jika Anda terbiasa dengan jaringan neural, Anda dapat menggali kesalahan rekonstruksi autoencoders (lihat posting ini: Cara menggunakan dataset dengan hanya satu kategori data atau panduan sklearn ini )

Semoga membantu