Saya telah memberi label data yang terdiri dari 10.000 contoh positif, dan 50.000 contoh negatif, sehingga totalnya 60000 contoh. Jelas data ini tidak seimbang.
Sekarang katakanlah saya ingin membuat set validasi saya, dan saya ingin menggunakan 10% dari data saya untuk melakukannya. Pertanyaan saya adalah sebagai berikut:
Haruskah saya memastikan bahwa set validasi saya juga tidak seimbang, (sebagai anggukan untuk distribusi set training yang sebenarnya), atau haruskah saya memastikan set validasi saya seimbang? Jadi misalnya, seandainya set validasi saya dibuat dari:
- 10% contoh positif + 10% negatif, memberikan 1000+ dan 5000- contoh. (Set validasi ini mencerminkan ketidakseimbangan data asli).
- Atau haruskah set validasi dibuat dari katakanlah, 10% positif, memberi 1000+, dan (10/5 = 2%) negatif, juga memberikan 1000 contoh?
(Pertanyaan yang sama untuk set tes).
Tampaknya ada banyak metode tentang cara berlatih dengan data yang tidak seimbang, tetapi tidak ada tempat saya bisa melihat untuk menemukan praktik terbaik tentang apakah set validasi saya juga harus mencerminkan ketidakseimbangan yang asli, atau tidak. Akhirnya, saya TIDAK melakukan cross-validation, saya akan menggunakan set validasi tunggal, dan jaringan saraf.
Terima kasih!
Jawaban:
Poin dari set validasi adalah untuk memilih zaman / iterasi di mana jaringan saraf paling mungkin untuk melakukan yang terbaik pada set tes. Selanjutnya, lebih disukai bahwa distribusi kelas dalam set validasi mencerminkan distribusi kelas pada set tes, sehingga metrik kinerja pada set validasi adalah perkiraan yang baik dari metrik kinerja pada set tes. Dengan kata lain, set validasi harus mencerminkan ketidakseimbangan data asli.
sumber
Dengan menggunakan data pelatihan dan tes yang secara alami tidak seimbang, saya bertemu dengan sebuah skenario di mana model saya tampak membaik dari waktu ke waktu tetapi sebenarnya hanya menghafal sampel kelas minoritas dalam set pelatihan dan belajar untuk selalu memprediksi kelas mayoritas untuk yang lainnya.
Saya mendiagnosis masalah ini dengan menyeimbangkan data pengujian saya dan mengamati bahwa keakuratan dan kehilangan data pengujian menjadi lebih buruk dengan lebih banyak zaman (yang tidak terjadi dengan data tes yang tidak seimbang).
Cara lain untuk mendiagnosis masalah seperti ini adalah dengan menggunakan metrik seperti sensitivitas, spesifisitas, atau akurasi untuk kelas tunggal alih-alih melihat keakuratan / kehilangan keseluruhan. Posting blog ini menjelaskan lebih lanjut tentang ini dan memberikan contoh implementasi metrik ini di Keras http://www.deepideas.net/unbalanced-classes-machine-learning/
Saya pikir solusi yang tepat tergantung pada aplikasi dunia nyata model Anda dan seberapa penting keakuratan kelas minoritas. Misalnya jika Anda melatih sesuatu seperti imagenet dan perhatikan bahwa ia memiliki akurasi rendah untuk kelas "siput laut" yang mungkin ok. Tetapi jika Anda melatih model untuk memprediksi jika seseorang menderita kanker maka keakuratan kelas minoritas akan sangat penting.
sumber
Itu tergantung pada apa yang Anda optimalkan: apa target distribusi Anda, di mana Anda ingin meminimalkan kerugian yang diharapkan? Jika sama dengan distribusi pelatihan, maka data validasi harus mengikuti distribusi yang sama. Jika itu adalah distribusi yang berbeda (misalnya Anda ingin algoritma untuk melakukan dengan baik pada data yang seimbang), Anda benar-benar ingin meminimalkan kerugian yang diharapkan selama itu distribusi, dan set validasi Anda harus Sejalan dicicipi sesuai dengan distribusi yang. Situtation ini disebut "shift kovariat", dan ada seluruh cabang penelitian tentang apa yang disebut "adaptasi shift kovariat," yaitu, berurusan dengan masalah ini. Ada sebuah buku karya Sugiyama / Kawanabe tentang subjek dari 2012, berjudul "
sumber