Sepertinya Anda mengerti bahwa Anda dapat memiliki n
level, sebagai lawan dari n-1
, karena tidak seperti dalam regresi linier Anda tidak perlu khawatir tentang kolinearitas sempurna.
(Saya datang pada ini dari perspektif R, tapi saya menganggap itu sama dengan Python.) Itu tergantung pada beberapa hal, seperti 1) paket mana yang Anda gunakan dan 2) berapa banyak tingkat faktor yang Anda miliki.
1) Jika Anda menggunakan randomForest
paket R , maka jika Anda memiliki <33 faktor, Anda dapat melanjutkan dan membiarkannya dalam satu fitur jika Anda mau. Itu karena dalam implementasi R hutan acak, itu akan memeriksa untuk melihat tingkat faktor mana yang harus di satu sisi split dan yang di sisi lain (misalnya, 5 level Anda mungkin dikelompokkan bersama di sisi kiri, dan 7 mungkin dikelompokkan bersama di sebelah kanan). Jika Anda membagi fitur kategorikal menjadi n
boneka, maka algoritme tidak akan memiliki opsi ini.
Tentunya jika paket yang Anda gunakan tidak dapat menangani fitur kategorikal maka Anda hanya perlu membuat n
variabel dummy.
2) Seperti yang saya singgung di atas, implementasi hutan acak R hanya dapat menangani 32 level faktor - jika Anda memiliki lebih dari itu maka Anda juga perlu membagi faktor Anda menjadi himpunan bagian yang lebih kecil, atau membuat variabel dummy untuk setiap level.
randomForest
dikodekan secara otomatis, saya harus menggunakann
dummies karena collinearity bukan masalah untuk RF?sklearn
... Secara praktis, apakah ada bukti (pengalaman praktis, penelitian, dll) bahwa variabel "dummified" akan berkinerja lebih buruk daripada variabel kategori "dikelompokkan" [dalam R]Ada pendekatan lain untuk menangani variabel kategori yang disebut target / dampak encoding.
Dalam skema ini idenya adalah untuk menyandikan fitur menggunakan kolom float tunggal di mana nilainya adalah rata-rata variabel target atas semua baris yang berbagi kategori. Ini sangat berguna untuk model berbasis pohon karena memaksakan hubungan urutan dalam fitur (yaitu nilai di sebelah kanan kategori memiliki respons rata-rata yang lebih tinggi daripada nilai di sebelah kiri) dan membuatnya lebih mudah untuk membagi ruang prediktor.
Berikut ini penjelasan yang bagus tentang subjek:
https://towardsdatascience.com/why-you-should-try-mean-encoding-17057262cd0
Dan inilah tautan ke makalah yang awalnya mengusulkan penyandian: http://helios.mm.di.uoa.gr/~rouvas/ssi/sigkdd/sigkdd.vol3.1/barreca.pdf
Ada beberapa rincian lebih lanjut untuk menghindari estimasi rata-rata dalam kategori dengan jumlah rendah dan juga ada model lain, CatBoost, mengusulkan solusi untuk biasing yang diperkenalkan oleh pengkodean ini, tetapi dalam pengalaman saya ini adalah cara sederhana dan sangat berguna untuk menyandikan variabel kategori kardinalitas tinggi kardinalitas .
sumber