Teknik apa yang tersedia untuk mengelompokkan (atau mengelompokkan) banyak kategori menjadi beberapa, untuk tujuan menggunakannya sebagai input (prediktor) dalam model statistik?
Pertimbangkan variabel seperti jurusan mahasiswa (disiplin yang dipilih oleh mahasiswa sarjana). Itu tidak teratur dan kategorikal, tetapi berpotensi memiliki lusinan tingkat yang berbeda. Katakanlah saya ingin menggunakan jurusan sebagai prediktor dalam model regresi.
Menggunakan level ini apa adanya untuk memodelkan mengarah ke segala macam masalah karena ada begitu banyak. Banyak ketepatan statistik akan dibuang untuk menggunakannya, dan hasilnya sulit untuk ditafsirkan. Kami jarang tertarik pada jurusan tertentu - kami jauh lebih tertarik pada kategori luas (subkelompok) jurusan. Tetapi tidak selalu jelas bagaimana membagi level menjadi kategori tingkat yang lebih tinggi, atau bahkan berapa banyak kategori tingkat yang lebih tinggi untuk digunakan.
Untuk data umum, saya akan senang menggunakan analisis faktor, faktorisasi matriks, atau teknik pemodelan laten diskrit. Tapi jurusan adalah kategori yang saling eksklusif, jadi saya ragu untuk mengeksploitasi kovarian mereka untuk apa pun.
Selain itu saya tidak peduli dengan kategori utama sendiri. Saya peduli tentang menghasilkan kategori tingkat yang lebih tinggi yang koheren sehubungan dengan hasil regresi saya . Dalam kasus hasil biner, yang menunjukkan kepada saya sesuatu seperti analisis diskriminan linier (LDA) untuk menghasilkan kategori tingkat yang lebih tinggi yang memaksimalkan kinerja diskriminatif. Tapi LDA adalah teknik terbatas dan rasanya seperti data kotor yang dikeruk bagi saya. Terlebih lagi setiap solusi berkelanjutan akan sulit untuk ditafsirkan.
Sementara itu sesuatu yang didasarkan pada kovarian, seperti analisis korespondensi ganda (MCA), tampaknya mencurigakan bagi saya dalam kasus ini karena ketergantungan yang melekat di antara variabel dummy yang saling eksklusif - mereka lebih cocok untuk mempelajari beberapa variabel kategori, daripada beberapa kategori dari variabel yang sama.
sunting : agar jelas, ini tentang runtuh kategori (bukan memilihnya), dan kategorinya adalah prediktor atau variabel independen. Kalau dipikir-pikir, masalah ini sepertinya merupakan waktu yang tepat untuk "mengatur semuanya dan membiarkan Tuhan memilah mereka". Senang melihat pertanyaan ini menarik bagi banyak orang!
sumber
Jawaban:
Jika saya mengerti dengan benar, Anda membayangkan model linier di mana salah satu prediktornya kategorikal (misalnya jurusan kuliah); dan Anda berharap bahwa untuk beberapa subkelompok levelnya (subkelompok kategori) koefisiennya mungkin persis sama. Jadi mungkin koefisien regresi untuk Matematika dan Fisika adalah sama, tetapi berbeda dari untuk Kimia dan Biologi.
Dalam kasus paling sederhana, Anda akan memiliki model linier "satu arah ANOVA" dengan satu prediktor kategori: mana menyandikan level variabel kategorikal (the kategori). Tetapi Anda mungkin lebih suka solusi yang runtuh beberapa level (kategori) bersama-sama, misalnya
Ini menunjukkan bahwa seseorang dapat mencoba menggunakan penalti regularisasi yang akan menghukum solusi dengan alfabet yang berbeda. Satu istilah penalti yang langsung muncul di benak Anda adalahIni menyerupai laso dan harus menegakkan sparsity dari perbedaan , yang persis seperti yang Anda inginkan: Anda ingin banyak dari mereka menjadi nol. Parameter pengaturan harus dipilih dengan validasi silang.
Saya tidak pernah berurusan dengan model seperti itu dan di atas adalah hal pertama yang terlintas di benak saya. Kemudian saya memutuskan untuk melihat apakah ada sesuatu seperti itu yang diterapkan. Saya membuat beberapa pencarian google dan segera menyadari bahwa ini disebut fusi kategori; mencari
lasso fusion categorical
akan memberi Anda banyak referensi untuk dibaca. Berikut adalah beberapa yang secara singkat saya lihat:Gerhard Tutz, Regresi untuk Data Kategorikal, lihat hlm. 175-175 di Google Buku . Tutz menyebutkan empat makalah berikut:
Land and Friedman, 1997, Fusion variabel: metode regresi sinyal adaptif baru
Bondell dan Reich, 2009, pemilihan faktor simultan dan tingkat runtuh di ANOVA
Gertheiss dan Tutz, 2010, pemodelan Jarang dari variabel penjelas kategororial
Tibshirani et al. 2005, Sparsity dan kehalusan melalui laso leburan agak relevan bahkan jika tidak persis sama (ini tentang variabel ordinal)
Gertheiss dan Tutz 2010, yang diterbitkan dalam Annals of Applied Statistics, tampak seperti makalah baru-baru ini dan sangat mudah dibaca yang berisi referensi lain. Berikut ini abstraknya:
Saya suka jalur solusi seperti Lasso mereka yang menunjukkan bagaimana level dua variabel kategori digabung bersama ketika kekuatan regularisasi meningkat:
sumber
Saya telah bergulat dengan ini pada proyek yang sedang saya kerjakan, dan pada titik ini saya telah memutuskan bahwa tidak ada cara yang baik untuk menggabungkan kategori dan jadi saya mencoba model hirarki / efek campuran di mana saya setara dengan jurusan Anda adalah efek acak.
Juga, dalam situasi seperti ini tampaknya sebenarnya ada dua keputusan sekering untuk membuat: 1) bagaimana menggabungkan kategori yang Anda miliki ketika Anda cocok dengan model, dan 2) apa kategori menyatu menjadi "lain" di mana Anda secara default akan memasukkan yang baru jurusan yang diimpikan seseorang setelah Anda cocok dengan model Anda. (Efek acak dapat menangani kasus kedua ini secara otomatis.)
Ketika sekering memiliki penilaian yang terlibat (sebagai lawan dari prosedur yang sepenuhnya otomatis), saya skeptis terhadap kategori "lain" yang sering kali menjadi kantong kategori dengan beberapa hal di dalamnya daripada pengelompokan berprinsip apa pun.
Efek acak menangani banyak level, secara dinamis menyatukan ("menarik kekuatan dari") level yang berbeda, dapat memprediksi level yang sebelumnya tidak terlihat, dll. Salah satu kelemahannya adalah distribusi level hampir selalu dianggap normal.
sumber
Salah satu cara untuk menangani situasi ini adalah dengan mengkode ulang variabel kategorikal menjadi variabel kontinu, menggunakan apa yang dikenal sebagai "target coding" (alias "impact coding") [1]. Biarkan menjadi variabel input dengan level kategorikal , dan biarkan menjadi variabel output / target / respons. Ganti dengan , di manaZ z1,...,zK Y Z Impact(Z)
untuk bernilai kontinu . Untuk bernilai biner , gunakan alih-alih hanya .Y Y logit∘E E
Ada implementasi Python di perpustakaan category_encoders [2].
Varian yang disebut "impact coding" telah diimplementasikan dalam paket R Vtreat [3] [4]. Paket (dan dampak pengkodean itu sendiri) dijelaskan dalam sebuah artikel oleh para penulis dari 2016 [5], dan dalam beberapa posting blog [6]. Perhatikan bahwa implementasi R saat ini tidak menangani respons multinomial (kategorikal dengan lebih dari 2 kategori) atau multivarian (bernilai vektor).
sumber
Jika Anda memiliki variabel bebas tambahan yang logis untuk digunakan sebagai jangkar untuk prediktor kategori, pertimbangkan penggunaan algoritma skoring optimal Fisher, yang terkait dengan analisis diskriminan liniernya. Misalkan Anda ingin memetakan mata kuliah perguruan tinggi menjadi satu metrik kontinu tunggal, dan anggaplah jangkar yang tepat adalah skor tes kuantitatif SAT pra-penerimaan. Hitung skor kuantitatif rata-rata untuk setiap mata pelajaran dan ganti mata uang utama dengan nilai rata-rata itu. Anda dapat dengan mudah memperluas ini ke beberapa jangkar, menciptakan lebih dari satu derajat kebebasan untuk meringkas utama.
Perhatikan bahwa tidak seperti beberapa saran sebelumnya, penilaian optimal mewakili pendekatan pembelajaran tanpa pengawasan, sehingga derajat kebebasan (jumlah parameter yang diperkirakan terhadap Y) sedikit dan terdefinisi dengan baik, menghasilkan inferensi statistik yang tepat (jika sering, kesalahan standar yang akurat, kepercayaan diri). (kompatibilitas) interval, dan nilai-p).
Saya sangat menyukai saran hukuman dengan https://stats.stackexchange.com/users/28666/amoeba @amoeba.
sumber
Makalah " Skema preprocessing untuk atribut kategori kardinalitas tinggi dalam masalah klasifikasi dan prediksi " memanfaatkan struktur hierarkis dalam atribut kategori dalam skema 'empiris Bayes' yang bersarang di setiap kelompok / level untuk memetakan variabel kategorikal ke dalam probabilitas kelas posterior, yang dapat digunakan secara langsung atau sebagai input ke model lain.
sumber
Ada beberapa pertanyaan di sini, dan beberapa di antaranya ditanyakan & dijawab sebelumnya. Jika masalahnya adalah perhitungan yang membutuhkan waktu lama: Ada beberapa metode untuk mengatasinya, lihat regresi skala besar dengan matriks fitur jarang dan makalah oleh Maechler dan Bates .
Tetapi mungkin masalahnya adalah pada pemodelan, saya tidak begitu yakin bahwa metode yang biasa memperlakukan variabel prediktor kategoris benar-benar memberikan panduan yang cukup ketika memiliki variabel kategorikal dengan level yang sangat banyak, lihat situs ini untuk melihat tag
[many-categories]
. Tentunya ada banyak cara yang bisa dicoba, seseorang bisa (jika ini adalah ide yang bagus untuk contoh Anda, saya tidak bisa tahu, Anda tidak memberi tahu kami aplikasi spesifik Anda) semacam variabel kategori hirarki, yaitu, terinspirasi oleh sistem yang digunakan dalam klasifikasi biologis, lihat https://en.wikipedia.org/wiki/Taxonomy_(biology). Di sana seorang individu (tumbuhan atau hewan) diklasifikasikan pertama kali ke Domain, lalu Kerajaan, Filum, Kelas, Ketertiban, Keluarga, Genus dan akhirnya Spesies. Jadi untuk setiap level dalam klasifikasi Anda dapat membuat variabel faktor. Jika level Anda, adalah, katakanlah, produk yang dijual di supermarket, Anda dapat membuat klasifikasi hierarkis dimulai dengan [bahan makanan, peralatan dapur, lainnya], maka bahan makanan dapat diklasifikasikan sebagai [daging, ikan, sayuran, sereal, ...] dan begitu seterusnya. Hanya kemungkinan, yang memberikan hierarki sebelumnya, tidak secara khusus terkait dengan hasilnya.Tapi kamu bilang:
Kemudian Anda dapat mencoba laso yang menyatu , lihat jawaban lain di utas ini, yang dapat dilihat sebagai cara meruntuhkan level ke dalam grup yang lebih besar, seluruhnya berdasarkan data, bukan organisasi level sebelumnya seperti yang tersirat dalam proposal hierarkis saya. organisasi tingkat.
sumber