Model klasifikasi biner untuk data tidak seimbang

14

Saya memiliki dataset dengan spesifikasi sebagai berikut:

  • Kumpulan data pelatihan dengan 193.176 sampel dengan 2.821 positif
  • Uji Dataset dengan 82.887 sampel dengan 673 positif
  • Ada 10 fitur.

Saya ingin melakukan klasifikasi biner (0 atau 1). Masalah yang saya hadapi adalah bahwa datanya sangat tidak seimbang. Setelah normalisasi dan penskalaan data bersama dengan beberapa rekayasa fitur dan menggunakan beberapa algoritma yang berbeda, ini adalah hasil terbaik yang bisa saya capai:

mean square error : 0.00804710026904
Confusion matrix : [[82214   667]
                   [    0     6]]

yaitu hanya 6 hit positif yang benar. Ini menggunakan regresi logistik. Berikut adalah berbagai hal yang saya coba dengan ini:

  • Algoritma yang berbeda seperti RandomForest, DecisionTree, SVM
  • Mengubah nilai parameter untuk memanggil fungsi
  • Beberapa rekayasa fitur berbasis intuisi memasukkan fitur majemuk

Sekarang, pertanyaan saya adalah:

  1. Apa yang dapat saya lakukan untuk meningkatkan jumlah klik positif?
  2. Bagaimana seseorang bisa menentukan apakah ada pakaian dalam kasus seperti itu? (Saya sudah mencoba merencanakan dll.)
  3. Pada titik mana seseorang dapat menyimpulkan jika mungkin ini adalah yang terbaik yang bisa saya miliki? (Yang tampaknya menyedihkan mengingat hanya 6 hit dari 673)
  4. Apakah ada cara saya bisa membuat contoh sampel positif lebih berat sehingga pengenalan pola meningkat mengarah ke lebih banyak hit?
  5. Plot grafis mana yang dapat membantu mendeteksi outlier atau intuisi tentang pola mana yang paling cocok?

Saya menggunakan perpustakaan scikit-learn dengan Python dan semua implementasi adalah fungsi perpustakaan.

edit:

Berikut adalah hasil dengan beberapa algoritma lain:

Pengelompokan Hutan Acak (n_estimators = 100)

[[82211   667]
[    3     6]]

Pohon Keputusan:

[[78611   635]
[ 3603    38]]
tejaskhot
sumber

Jawaban:

11
  1. Karena Anda melakukan klasifikasi biner, sudahkah Anda mencoba menyesuaikan ambang klasifikasi? Karena algoritme Anda tampaknya agak tidak sensitif, saya akan mencoba menurunkannya dan memeriksa apakah ada peningkatan.

  2. Anda selalu dapat menggunakan Kurva Pembelajaran , atau sebidang parameter satu model vs kesalahan Pelatihan dan Validasi untuk menentukan apakah model Anda overfitting. Sepertinya itu kurang pas dalam kasus Anda, tapi itu hanya intuisi.

  3. Yah, pada akhirnya itu tergantung pada dataset Anda, dan berbagai model yang telah Anda coba. Pada titik ini, dan tanpa pengujian lebih lanjut, tidak ada jawaban yang pasti.

  4. Tanpa mengaku sebagai ahli dalam topik tersebut, ada sejumlah teknik berbeda yang dapat Anda ikuti (petunjuk: tautan pertama di google ), tetapi menurut saya Anda harus terlebih dahulu memastikan Anda memilih fungsi biaya dengan hati-hati, sehingga mewakili apa Anda benar-benar mencari.

  5. Tidak yakin apa yang Anda maksud dengan intuisi pola, dapatkah Anda menguraikan?

Omong-omong, apa hasil Anda dengan berbagai algoritma yang Anda coba? Apakah mereka berbeda?

insys
sumber
1
Menyesuaikan ambang batas untuk regresi logistik berhasil. Terima kasih untuk daftar sumbernya.
tejaskhot
Dapatkah seseorang menempelkan cuplikan kode tentang bagaimana Anda menyesuaikan ambang regresi logistik?
Blenz
0

Karena data sangat miring, dalam kasus seperti itu kami juga dapat mencoba pelatihan model setelah pengambilan sampel yang berlebihan.

SMOTE dan ADASYN adalah beberapa teknik yang dapat kita gunakan untuk mengambil sampel data secara berlebihan.

vipin bansal
sumber