Di python sklearn, ada beberapa algoritma (misalnya regresi, hutan acak ... dll.) Yang memiliki parameter class_weight untuk menangani data yang tidak seimbang.
Namun, saya tidak menemukan parameter seperti itu untuk algoritma MLLib. Apakah ada rencana penerapan class_weight untuk beberapa algoritma MLLib? Atau apakah ada pendekatan dalam MLLib untuk data yang tidak seimbang? Atau kita benar-benar harus menangani semua naik-turunnya diri kita sendiri di MLLib?
Terima kasih!
machine-learning
apache-spark
unbalanced-classes
weighted-data
sejenis kacang-kacangan dari Jepang
sumber
sumber
Jawaban:
Algoritma dalam MLLib selalu digunakan sebagai dasar dalam skenario produksi, dan mereka memang tidak dapat menangani beberapa masalah industri, seperti ketidakseimbangan label. Jadi jika Anda ingin menggunakannya, Anda harus menyeimbangkan contoh Anda.
Selain itu, mekanisme BSP di Spark, Anda bisa melihatnya sebagai data paralel , mungkin menjadi alasan utama mengapa Spark tidak mencakup masalah itu. Mungkin sulit bagi Spark untuk mengirimkan instance ke semua node dalam cluster, sedangkan instance parsial dari setiap node berbagi distribusi label yang sama dengan keseluruhan.
Akhirnya, Anda hanya perlu mempertimbangkan nilai kerugian untuk setiap instance berlabel minor selama proses iterasi Anda jika Anda ingin mengimplementasikannya.
Semoga ini bisa membantu Anda, semoga sukses -)
sumber
Salah satu cara saya menangani kelas yang tidak seimbang di masa lalu adalah membangun classifier berdasarkan sampel dataset untuk memiliki 50/50 sampel split. Ini berarti menggunakan semua titik data yang terkait dengan kelas minoritas Anda, dan secara acak mengambil sampel titik data yang sama dari kelas mayoritas Anda.
Apakah ini akan berhasil tergantung pada seberapa banyak data yang Anda miliki di kelas minoritas Anda - jika Anda memiliki ketidakseimbangan kelas ekstrim (<5% instance kelas minoritas), maka Anda mungkin ingin mempertimbangkan oversampling sintetis.
Anda mungkin bisa melihatnya
pydf.rdd.takeSample()
dalam percikan, ataudf.sample
dalam panda.sumber
Cara saya menangani ketidakseimbangan kelas adalah dengan metode berikut: 1. Menggabungkan kelas yang paling jarang muncul ke kelas lain. Jelas Anda harus menggunakan beberapa jenis pengetahuan domain daripada menggabungkannya secara acak. 2. Gunakan teknik resampling seperti oversampling, undersampling, SMOTE, ADASYN. Saya tidak merekomendasikan menggunakan teknik ini karena mereka tidak benar-benar mewakili data aktual. Tetapi bagaimanapun Anda bisa melihatnya
sumber
Selain posting terakhir, Anda dapat melihat perpustakaan imblearn ( https://imbalanced-learn.readthedocs.io/en/stable/index.html ) yang memungkinkan Anda untuk melakukan berbagai jenis over / undersampling juga sebagai SMOTE / SMOTENEC
sumber