Saya memiliki dataset yang saya coba prediksi variabel targetnya.
Col1 Col2 Col3 Col4 Col5
1 2 23 11 1
2 22 12 14 1
22 11 43 38 3
14 22 25 19 3
12 42 11 14 1
22 11 43 38 2
1 2 23 11 4
2 22 12 14 2
22 11 43 38 3
Saya telah memberikan data sampel, tetapi catatan saya memiliki ribuan catatan yang didistribusikan dengan cara yang sama. Di sini, Col1, Col2, Col3, Col4 adalah fitur saya dan Col5 adalah variabel target. Karenanya prediksi harus 1,2,3 atau 4 karena ini adalah nilai saya untuk variabel target. Saya telah mencoba menggunakan algoritme seperti hutan acak, pohon keputusan, dll. Untuk prediksi.
Di sini, jika Anda melihat, nilai 1,2 dan 3 lebih sering terjadi dibandingkan dengan 4. Oleh karena itu sambil memprediksi, model saya lebih condong ke arah 1 2 dan 3 sedangkan saya hanya mendapatkan sedikit prediksi untuk 4 (Hanya mendapat 1 prediksi untuk policy4 dari ribuan catatan ketika saya melihat matriks kebingungan).
Untuk membuat model saya digeneralisasi, saya menghapus persentase data yang sama yang memiliki nilai 1,2 dan 3 secara acak. Saya dikelompokkan berdasarkan setiap nilai dalam Col5 dan kemudian menghapus persentase tertentu, sehingga saya menurunkan jumlah catatan. Sekarang saya bisa melihat peningkatan tertentu dalam persentase akurasi dan juga peningkatan yang wajar dalam prediksi untuk nilai 4 dalam matriks kebingungan.
Apakah ini pendekatan yang tepat untuk ditangani (menghapus data secara acak dari kelompok-kelompok yang menjadi bias model)?
Saya mencoba untuk algoritma python in-built seperti Adaboost, teknik GradientBoost menggunakan sklearn. Saya membaca algoritma ini untuk menangani kelas ketidakseimbangan. Tapi saya tidak bisa berhasil meningkatkan akurasi saya, bukan dengan menghapus data secara acak, di mana saya bisa melihat beberapa perbaikan.
Apakah pengurangan ini adalah teknik undersampling dan apakah ini pendekatan yang tepat untuk pengambilan sampel yang kurang?
Apakah ada paket pra-didefinisikan dalam sklearn atau logika apa pun yang dapat saya terapkan dalam python untuk menyelesaikan ini, jika penghapusan acak saya salah?
Juga, saya belajar tentang teknik SMOTE, yang berhubungan dengan oversampling. Haruskah saya mencoba ini untuk nilai 4? Dan bisakah kita melakukan ini menggunakan paket bawaan dengan python? Akan lebih bagus jika seseorang membantu saya dalam situasi ini.
class_weight
dilakukan adalah membuat matriks biaya untuk Anda di mana untuk setiap kelassample_weight=[C_k for k in y]
keaccuracy_score
atau penggunaan sesuatu sepertif1_score
.Ya, ini adalah teknik yang bagus untuk mengatasi masalah ketidakseimbangan kelas. Namun, metode under-sampling memang menyebabkan hilangnya informasi dalam kumpulan data (katakanlah, Anda baru saja menghapus pola yang menarik di antara variabel-variabel lainnya, yang dapat berkontribusi pada pelatihan model yang lebih baik). Inilah sebabnya mengapa metode over-sampling lebih disukai, khususnya dalam hal kumpulan data yang lebih kecil.
Menanggapi pertanyaan Anda tentang paket Python, kotak alat belajar yang tidak seimbang khusus didedikasikan untuk tugas yang sama. Ini menyediakan beberapa metode under-sampling dan over-sampling. Saya akan merekomendasikan mencoba teknik SMOTE .
sumber
Itu tergantung pada teknik ensemble yang ingin Anda gunakan. Masalah mendasar yang Anda hadapi dengan masalah ketidakseimbangan data multi-kelas. Under sampling dapat digunakan secara efisien dalam mengantongi dan juga dalam meningkatkan teknik. Algoritma SMOTE sangat efisien dalam menghasilkan sampel baru. Masalah ketidakseimbangan data telah banyak dipelajari dalam literatur. Saya sarankan Anda untuk membaca tentang salah satu dari algoritma ini: SMOTE-Boost SMOTE-Bagging Rus-Boost EusBoost Ini adalah teknik boosting / bagging yang dirancang khusus untuk masalah data ketidakseimbangan. Alih-alih SMOTE Anda dapat mencoba ADA-SMOTE atau BOTE-SMOTE. Saya telah menggunakan dan memodifikasi SMOTE Border-Line untuk multi-kelas dan sangat efisien. Jika basis data Anda sangat besar dan masalahnya mudah, coba: viola - jones classifier. Saya juga menggunakan masalah ketidakseimbangan data dan ini sangat efisien
sumber
Sudah ada beberapa jawaban bagus di sini. Saya hanya berpikir saya akan menambahkan satu teknik lagi karena Anda terlihat menggunakan ansambel pohon. Dalam banyak kasus, Anda ingin mengoptimalkan kurva Angkat atau AUC untuk ROC. Untuk ini saya akan merekomendasikan kriteria jarak Hellinger untuk memisahkan cabang di pohon Anda. Pada saat penulisan ini tidak ada dalam paket belajar-seimbang tetapi sepertinya ada rencana .
sumber
Ketika berhadapan dengan masalah ketidakseimbangan kelas, Anda terutama harus berkonsentrasi pada metrik kesalahan dan Anda harus memilih skor F1 sebagai metrik kesalahan.
Setelah memilih metrik yang benar, kami dapat menggunakan Teknik berbeda untuk menangani masalah ini.
Jika tertarik Anda dapat melihat blog berikut, dijelaskan dengan sangat baik tentang teknik yang digunakan untuk memecahkan masalah ketidakseimbangan kelas ini:
https://knowledgengg.wordpress.com/2019/03/04/this-is-suresh/
sumber