Mengurangi jumlah level variabel prediktor kategori tidak berurutan

11

Saya ingin melatih classifier, katakanlah SVM, atau forest acak, atau classifier lainnya. Salah satu fitur dalam dataset adalah variabel kategori dengan 1000 level. Apa cara terbaik untuk mengurangi jumlah level dalam variabel ini. Dalam R ada fungsi yang disebut combine.levels()dalam paket Hmisc , yang menggabungkan tingkat jarang, tetapi saya mencari saran lain.

sabunime
sumber
Apakah variabel kategorinya tidak berurutan? Kira-kira berapa banyak kasus yang Anda miliki? Berapa distribusi frekuensi di seluruh variabel kategori?
Jeromy Anglim
Level tidak dipesan. Saya memiliki sekitar 10.000 pengamatan. Distribusi frekuensi adalah sebagai berikut: level A muncul di sekitar 11% dari pengamatan. Level B muncul di 8%. Level c muncul di 5%. Sekitar 15 dari level ini mencakup 50% dari pengamatan dalam dataset.
sabunime

Jawaban:

9

Cara terbaik untuk melakukan ini akan sangat bervariasi tergantung pada tugas yang Anda lakukan, jadi tidak mungkin untuk mengatakan apa yang terbaik dalam cara yang mandiri.

Ada dua hal mudah untuk dicoba jika level Anda adalah ordinal:

  1. Bin mereka. Misalnya, 0 = (0 250), 1 = (251 500), dll. Anda mungkin ingin memilih batas sehingga setiap nampan memiliki jumlah item yang sama.
  2. Anda juga dapat mengambil transformasi log level. Ini akan menekan kisaran ke bawah.

Jika level tidak ordinal, Anda dapat mengelompokkan level berdasarkan fitur / variabel lain dalam dataset Anda dan mengganti id cluster untuk level sebelumnya. Ada banyak cara untuk melakukan ini karena ada algoritma pengelompokan, sehingga bidang ini terbuka lebar. Ketika saya membacanya, inilah yang combine.levels()sedang dilakukan. Anda dapat melakukan hal yang sama menggunakan kmeans()atau prcomp(). (Anda bisa / selanjutnya harus melatih classifier untuk memprediksi cluster untuk titik data baru.)

Joey
sumber
3
Saya tidak tahu cara yang sangat baik untuk menangani ini selain untuk memperlakukan variabel kategori sebagai efek acak. Anda bisa meniru itu dengan menggunakan proses penalti kuadrat (bubungan) pada variabel. Buku Strategi dan Model Regresi Pemodelan saya membahas hal ini.
Frank Harrell
1
@FrankHarrell Dua pendekatan muncul dalam pikiran: Variabel POlytomous Analisis Kelas Laten akan menjadi satu (cran.r-project.org/web/packages/poLCA/poLCA.pdf), analisis korespondensi lainnya (misalnya, statmethods.net/advstats/ca. html).
Mike Hunter