Misalkan saya ingin mempelajari classifier yang memprediksi jika email adalah spam. Dan anggaplah hanya 1% dari email adalah spam.
Hal termudah untuk dilakukan adalah mempelajari pengklasifikasi sepele yang mengatakan tidak ada email yang merupakan spam. Penggolong ini akan memberi kita akurasi 99%, tetapi tidak akan mempelajari sesuatu yang menarik, dan akan memiliki tingkat negatif palsu 100%.
Untuk mengatasi masalah ini, orang-orang mengatakan kepada saya untuk "downsample", atau belajar pada subset data di mana 50% dari contoh adalah spam dan 50% bukan spam.
Tapi saya khawatir dengan pendekatan ini, karena begitu kita membangun classifier ini dan mulai menggunakannya pada kumpulan email yang nyata (sebagai lawan dari set tes 50/50), mungkin memprediksi bahwa banyak email adalah spam ketika mereka ' benar-benar tidak. Hanya karena terbiasa melihat lebih banyak spam daripada yang sebenarnya ada dalam dataset.
Jadi bagaimana kita memperbaiki masalah ini?
("Upsampling," atau mengulangi contoh pelatihan positif beberapa kali sehingga 50% dari data adalah contoh pelatihan positif, tampaknya menderita masalah yang sama.)
sumber
Masalah sebenarnya di sini adalah pilihan metrik Anda:% akurasi adalah ukuran keberhasilan model yang buruk pada dataset yang tidak seimbang (untuk alasan yang persis Anda sebutkan: itu sepele untuk mencapai akurasi 99% dalam kasus ini).
Menyeimbangkan dataset Anda sebelum memasang model adalah solusi yang buruk karena itu bias model Anda dan (bahkan lebih buruk) membuang data yang berpotensi berguna.
Anda jauh lebih baik menyeimbangkan metrik akurasi Anda, daripada menyeimbangkan data Anda. Misalnya Anda bisa menggunakan akurasi yang seimbang ketika mengevaluasi Anda model:
(error for the positive class + error for the negative class)/2
. Jika Anda memprediksi semua positif atau negatif, metrik ini akan menjadi50%
properti yang bagus.Menurut pendapat saya, satu-satunya alasan untuk melakukan down-sample adalah ketika Anda memiliki terlalu banyak data dan tidak dapat memenuhi model Anda. Banyak pengklasifikasi (regresi logistik misalnya) akan baik-baik saja pada data yang tidak seimbang.
sumber
Seperti biasa
@Marc Claesen
sebagai jawaban.Saya baru saja menambahkan bahwa konsep kunci yang tampaknya hilang adalah konsep fungsi biaya . Dalam model apa pun Anda memiliki biaya implisit atau eksplisit dari false negative ke false positive (FN / FP). Untuk data yang tidak seimbang yang diuraikan, seseorang seringkali bersedia memiliki rasio 5: 1 atau 10: 1. Ada banyak cara untuk memperkenalkan fungsi biaya ke dalam model. Metode tradisional adalah untuk memaksakan probabilitas cut-off pada probabilitas yang dihasilkan oleh model - ini bekerja dengan baik untuk regresi logistik.
Metode yang digunakan untuk pengklasifikasi ketat yang tidak secara alami memperkirakan probabilitas keluaran adalah dengan meremehkan kelas mayoritas pada rasio yang akan menginduksi fungsi biaya yang Anda minati. Perhatikan bahwa jika Anda mengambil sampel pada 50/50 Anda menginduksi fungsi biaya sewenang-wenang. Fungsi biaya berbeda tetapi sama sewenang-wenangnya seperti jika Anda sampel pada tingkat prevalensi. Anda sering dapat memprediksi rasio pengambilan sampel yang sesuai dengan fungsi biaya Anda (biasanya bukan 50/50), tetapi kebanyakan praktisi yang saya ajak bicara hanya mencoba beberapa rasio sampling dan memilih yang paling dekat dengan fungsi biaya mereka.
sumber
Menjawab pertanyaan Jessica secara langsung - salah satu alasan downsampling adalah ketika Anda bekerja dengan dataset besar dan menghadapi batas memori pada komputer Anda atau hanya ingin mengurangi waktu pemrosesan. Downsampling (yaitu, mengambil sampel acak tanpa penggantian) dari kasus negatif mengurangi dataset ke ukuran yang lebih mudah dikelola.
Anda menyebutkan menggunakan "classifier" dalam pertanyaan Anda tetapi tidak menentukan yang mana. Satu classifier yang mungkin ingin Anda hindari adalah pohon keputusan. Ketika menjalankan pohon keputusan sederhana pada data peristiwa langka, saya sering menemukan pohon hanya membangun satu root mengingat sulitnya membagi beberapa kasus positif ke dalam beberapa kategori. Mungkin ada metode yang lebih canggih untuk meningkatkan kinerja pohon untuk acara langka - saya tidak tahu ada yang terlintas di kepala saya.
sumber
Tentu saja mengklasifikasikan segala sesuatu sebagai 'bukan spam' memungkinkan Anda untuk mengatakan bahwa, mengingat 100 mail, ia mengklasifikasikan 99 di antaranya dengan benar, tetapi juga mengklasifikasikan sebagai 'bukan spam' satu-satunya yang dilabeli sebagai spam (100% False Positive). Ternyata metrik yang Anda pilih untuk mengevaluasi algoritme tidak beradaptasi. Video ini mencontohkan konsep.
Secara kasar, menyeimbangkan dataset memungkinkan Anda untuk menimbang kesalahan klasifikasi. Algoritme yang menggunakan set pelatihan yang tidak seimbang mungkin tidak akan belajar membedakan dari fitur-fiturnya, karena itu tidak akan memberikan banyak pentingnya fakta yang salah mengklasifikasikan data kelas yang kurang.
sumber
Saya tidak akan memilih downsampling atau upsampling karena kedua trik algoritma pembelajaran, namun, jika data tidak seimbang ukuran akurasi menjadi tidak valid atau tidak informatif, oleh karena itu, lebih baik menggunakan langkah-langkah presisi dan penarikan, keduanya tergantung terutama pada TP ( spam yang diklasifikasikan dengan benar dalam kasus Anda) ini memberikan ide yang bagus tentang kinerja nyata sistem Anda dalam hal mendeteksi spam terlepas dari jumlah contoh negatif.
sumber