Tugas 'pembelajaran mesin' saya adalah memisahkan lalu lintas Internet jinak dari lalu lintas jahat. Dalam skenario dunia nyata, sebagian besar (katakanlah 90% atau lebih) dari lalu lintas Internet tidak berbahaya. Jadi saya merasa bahwa saya harus memilih pengaturan data yang serupa untuk melatih model saya juga. Tetapi saya menemukan satu atau dua makalah penelitian (di bidang pekerjaan saya) yang telah menggunakan pendekatan data "penyeimbangan kelas" untuk melatih para model, menyiratkan jumlah yang sama dari jumlah lalu lintas yang berbahaya dan berbahaya.
Secara umum, jika saya sedang membangun model pembelajaran mesin, haruskah saya mencari dataset yang mewakili masalah dunia nyata, atau apakah dataset seimbang lebih cocok untuk membangun model (karena pengklasifikasi tertentu tidak berperilaku baik dengan ketidakseimbangan kelas, atau karena alasan lain tidak saya kenal)?
Bisakah seseorang menjelaskan pro dan kontra dari kedua pilihan dan bagaimana memutuskan mana yang harus dipilih?
Saya pikir itu selalu tergantung pada skenario. Menggunakan kumpulan data yang representatif tidak selalu merupakan solusi. Asumsikan bahwa set pelatihan Anda memiliki 1000 contoh negatif dan 20 contoh positif. Tanpa modifikasi dari penggolong, algoritma Anda akan cenderung untuk mengklasifikasikan semua contoh baru sebagai negatif. Dalam beberapa skenario ini tidak masalah. Namun dalam banyak kasus, biaya untuk kehilangan contoh postif tinggi sehingga Anda harus mencari solusi untuk itu.
Dalam kasus tersebut, Anda dapat menggunakan algoritma pembelajaran mesin yang sensitif biaya. Misalnya dalam hal analisis data diagnosis medis.
Singkatnya: Kesalahan klasifikasi tidak memiliki biaya yang sama!
sumber
Selalu ada solusi untuk mencoba kedua pendekatan dan mempertahankan yang memaksimalkan kinerja yang diharapkan.
Dalam kasus Anda, saya akan menganggap Anda lebih suka meminimalkan false negative dengan mengorbankan beberapa false positive, jadi Anda ingin membuat bias classifier Anda terhadap negatif yang kuat sebelumnya, dan mengatasi ketidakseimbangan dengan mengurangi jumlah contoh negatif dalam set pelatihan Anda.
Kemudian hitung presisi / recall, atau sensitivitas / spesifisitas, atau kriteria apa pun yang cocok untuk Anda pada set data lengkap, tidak seimbang, untuk memastikan Anda tidak mengabaikan pola signifikan yang hadir dalam data nyata sambil membangun model pada data yang dikurangi.
sumber
Pisahkan skenario operasional dan pelatihan.
Skenario operasional adalah skenario di mana classifier Anda akan diukur. Di sinilah Anda harus melakukan dengan baik. Penggunaan harus memiliki dataset yang mewakili skenario ini.
Skenario pelatihan adalah apa pun yang Anda lakukan untuk membangun classifier yang akan bekerja dengan baik pada skenario operasional.
Banyak kali dataset di kedua skenario memiliki sifat yang sama sehingga tidak perlu membedakannya. Misalnya, Anda memiliki beberapa toko online sehingga Anda gunakan untuk melatih penggunaan sebelumnya agar berkinerja baik pada penggunaan di masa mendatang. Namun, saat pelatihan Anda dapat menggunakan dataset berbeda dari yang mewakili skenario operasional. Sebenarnya, jika Anda tidur, memimpikan classifier, memvalidasinya pada skenario operasional Anda (langkah ini harus dilakukan setelah bangun), Anda sama baiknya dengan setelah menempuh jalur pembelajaran mesin yang biasa.
Perbedaan antara skenario operasional dan pelatihan menjadi penting ketika dataset tidak seimbang. Sebagian besar algoritma tidak akan bekerja dengan baik pada dataset tersebut.
Jadi, jangan ragu untuk menggunakan dua dataset - Anda dapat menggunakan dataset yang seimbang untuk pelatihan. Setelah Anda selesai, validasikan classifier Anda untuk dataset operasional.
sumber
Saya pikir ada dua masalah terpisah untuk dipertimbangkan: Waktu pelatihan, dan akurasi prediksi.
Ambil contoh sederhana: anggap Anda memiliki dua kelas, yang memiliki distribusi normal multivarian. Pada dasarnya, Anda perlu memperkirakan sarana kelas masing-masing dan kovarian kelas. Sekarang hal pertama yang Anda pedulikan adalah perkiraan Anda tentang perbedaan dalam kelas berarti: tetapi kinerja Anda dibatasi oleh keakuratan estimasi rata-rata terburuk: tidak ada gunanya memperkirakan satu rata-rata ke tempat desimal ke-100 - jika rata-rata lainnya hanya Diperkirakan 1 tempat desimal. Jadi itu adalah pemborosan sumber daya komputasi untuk menggunakan semua data - Anda malah dapat meremehkan kelas yang lebih umum DAN reweight kelas dengan tepat. (sumber daya komputasi tersebut kemudian dapat digunakan mengeksplorasi berbagai variabel input, dll.)
Sekarang masalah kedua adalah akurasi prediksi: algoritma yang berbeda menggunakan metrik kesalahan yang berbeda, yang mungkin atau mungkin tidak sesuai dengan tujuan Anda sendiri. Misalnya, regresi logistik akan menghukum kesalahan probabilitas secara keseluruhan, jadi jika sebagian besar data Anda berasal dari satu kelas, maka ia akan cenderung untuk mencoba meningkatkan perkiraan probabilitas yang akurat (misalnya probabilitas 90 vs 95%) dari satu kelas daripada mencoba mengidentifikasi kelas langka. Dalam hal ini, Anda pasti ingin mencoba untuk mengulangi untuk menekankan kelas langka (dan kemudian menyesuaikan estimasi [dengan menyesuaikan istilah bias] untuk mendapatkan estimasi probabilitas disesuaikan)
sumber