Haruskah saya menggunakan dataset 'seimbang' atau dataset 'representatif'?

48

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?

pnp
sumber

Jawaban:

38

Saya akan mengatakan jawabannya tergantung pada kasus penggunaan Anda. Berdasarkan pengalaman saya:

  • Jika Anda mencoba membangun model yang representatif - model yang menggambarkan data dan bukan yang diprediksi - maka saya sarankan menggunakan sampel data Anda yang representatif.
  • Jika Anda ingin membangun model prediktif, terutama yang berkinerja baik dengan ukuran AUC atau peringkat-urutan dan berencana untuk menggunakan kerangka kerja ML dasar (yaitu Decision Tree, SVM, Naive Bayes, dll), maka saya akan menyarankan Anda memberi makan kerangka kerja dataset yang seimbang. Banyak literatur tentang ketidakseimbangan kelas menemukan bahwa undersampling acak (down sampling kelas mayoritas ke ukuran kelas minoritas) dapat mendorong kenaikan kinerja.
  • Jika Anda sedang membangun model prediktif, tetapi menggunakan kerangka kerja yang lebih maju (yaitu sesuatu yang menentukan parameter pengambilan sampel melalui pembungkus atau modifikasi dari kerangka pengemasan yang sampel ke kesetaraan kelas), maka saya akan menyarankan lagi memberi makan sampel yang representatif dan membiarkan algoritme menjaga keseimbangan data untuk pelatihan.
Dea
sumber
2
Jika Anda mencoba membangun model yang representatif - yang menggambarkan data dan bukan yang diprediksi ... siapa yang membangun model yang tidak memberikan predcit ?? Tidak sampai di sana ...
pnp
8
Pembelajaran tanpa pengawasan akan menjadi contoh di mana Anda membangun model yang tidak selalu sesuai untuk diprediksi. Dalam beberapa kasus, Anda mungkin ingin menjelajahi atau meringkas data Anda.
DSea
1
Saya akan mengatakan lebih aman untuk menyeimbangkan sampel Anda, tetapi juga mengumpulkan bobot sampel sehingga Anda nanti dapat menimbang kembali data Anda untuk keterwakilan jika Anda perlu. @pnp, banyak ilmuwan sosial membuat model yang tidak dapat diprediksi, misalnya untuk mengkonfirmasikan teori.
shadowtalker
Bagaimana model yang seimbang dibandingkan dengan model yang representatif menggunakan pengamatan berbobot untuk meniru model yang seimbang?
JenSCDC
1
AUC tidak dipengaruhi oleh ketidakseimbangan kelas, karena probabilitas bahwa model Anda peringkat kelas positif yang dipilih secara acak lebih tinggi daripada kelas negatif yang dipilih secara acak. Saya sangat tidak setuju dengan saran Anda di sini untuk tujuan umum. Jika Anda memiliki sampel yang representatif, misalnya, sampel acak sederhana, sampel tersebut harus dibiarkan representatif.
Matthew Drury
8

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!

Turing Pasmod
sumber
7

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.

damienfrancois
sumber
4

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.

Dl
sumber
3

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)

seanv507
sumber