Saya memiliki 3 kelas dengan distribusi ini:
Class 0: 0.1169
Class 1: 0.7668
Class 2: 0.1163
Dan saya menggunakan xgboost
untuk klasifikasi. Saya tahu bahwa ada parameter bernama scale_pos_weight
.
Tetapi bagaimana penanganannya untuk kasus 'multi-kelas', dan bagaimana cara mengaturnya dengan benar?
Jawaban oleh @KeremT ini benar. Saya memberikan contoh bagi mereka yang masih memiliki masalah dengan implementasi yang tepat.
weight
parameter dalam XGBoost per instance tidak per kelas. Oleh karena itu, kita perlu menetapkan bobot masing-masing kelas untuk instance-nya, yang merupakan hal yang sama.Sebagai contoh, jika kita memiliki tiga kelas yang tidak seimbang dengan rasio
Bobot mereka akan (membagi kelas terkecil dengan yang lain)
Lalu, apakah data pelatihannya
kami membuat
weight
vektor sebagai berikut:sumber
Semua orang tersandung pada pertanyaan ini ketika berhadapan dengan masalah klasifikasi multi-kelas yang tidak seimbang menggunakan XGBoost di R. Saya juga melakukannya!
Saya sedang mencari contoh untuk lebih memahami bagaimana menerapkannya. Investasikan hampir satu jam untuk menemukan tautan yang disebutkan di bawah ini. Untuk semua yang mencari contoh, begini -
/datascience//a/9493/37156
Terima kasih wacax
sumber
Cukup berikan setiap instance data kereta Anda dengan bobot kelasnya. Pertama, dapatkan bobot kelas dengan
class_weight.compute_class_weight
sklearn lalu tetapkan setiap baris data kereta sesuai bobotnya.Saya berasumsi di sini bahwa data kereta memiliki kolom 'kelas' yang berisi nomor kelas. Saya berasumsi juga bahwa ada nb_class yang dari 1 ke nb_classes.
sumber