Menjatuhkan salah satu kolom saat menggunakan pengkodean satu-panas

22

Pemahaman saya adalah bahwa dalam pembelajaran mesin itu bisa menjadi masalah jika dataset Anda memiliki fitur yang sangat berkorelasi, karena mereka secara efektif menyandikan informasi yang sama.

Baru-baru ini seseorang menunjukkan bahwa ketika Anda melakukan enkode satu-panas pada variabel kategori Anda berakhir dengan fitur yang berkorelasi, jadi Anda harus membuang salah satu dari mereka sebagai "referensi".

Sebagai contoh, pengkodean gender sebagai dua variabel, is_maledan is_female, menghasilkan dua fitur yang berkorelasi negatif sempurna, sehingga mereka menyarankan hanya menggunakan salah satu dari mereka, secara efektif menetapkan garis dasar untuk mengatakan laki-laki, dan kemudian melihat apakah kolom is_female penting dalam algoritme prediktif .

Itu masuk akal bagi saya tetapi saya belum menemukan sesuatu yang online untuk menyarankan ini mungkin terjadi, jadi apakah ini salah atau saya kehilangan sesuatu?

Kemungkinan duplikat (tidak dijawab): Apakah collinearity dari satu fitur hot-encoded penting untuk SVM dan LogReg?

dasboth
sumber
8
you end up with correlated features, so you should drop one of them as a "reference"Variabel Dummy atau variabel indikator (ini adalah dua nama yang digunakan dalam statistik, sinonim dengan "one-hot encoding" dalam pembelajaran mesin) berkorelasi berpasangan, bagaimanapun, semua variabel k atau k-1. Jadi, kata yang lebih baik adalah "berlebihan secara statistik / informasi" daripada "berkorelasi".
ttnphns
Himpunan semua boneka k adalah set multicollinear karena jika Anda mengetahui nilai boneka k-1 dalam data, Anda secara otomatis mengetahui nilai boneka yang terakhir. Beberapa metode atau algoritma analisis data mengharuskan Anda melepaskan salah satu dari k. Lainnya mampu mengatasi semua k.
ttnphns
@ttnphns: terima kasih, itu masuk akal. Apakah menjaga semua nilai k secara teoritis menjadikannya fitur yang lebih lemah yang dapat / harus dihilangkan dengan pengurangan dimensi? Salah satu argumen untuk menggunakan sesuatu seperti PCA adalah sering untuk menghapus fitur yang berkorelasi / berlebihan, saya bertanya-tanya apakah menjaga semua variabel k jatuh dalam kategori itu.
dasboth
Does keeping all k values theoretically make them weaker features. Tidak (meskipun saya tidak 100% yakin apa yang Anda maksud dengan "lebih lemah"). using something like PCAPerhatikan, untuk berjaga-jaga, PCA pada set boneka yang mewakili satu variabel kategori yang sama memiliki sedikit poin praktis karena korelasi di dalam set boneka hanya mencerminkan hubungan antara frekuensi kategori (jadi jika semua frekuensi sama semua korelasi sama) ke 1 / (k-1)).
ttnphns
Apa yang saya maksud adalah ketika Anda menggunakan model Anda untuk mengevaluasi pentingnya fitur (misalnya dengan hutan acak) apakah itu akan meremehkan pentingnya variabel itu jika Anda memasukkan semua nilai k? Seperti pada, apakah Anda mendapatkan perkiraan "lebih benar" tentang pentingnya gender jika Anda hanya menggunakan is_malevariabel yang bertentangan dengan kedua opsi? Mungkin itu tidak masuk akal dalam konteks ini, dan itu mungkin hanya menjadi masalah ketika Anda memiliki dua variabel berbeda yang benar-benar menyandikan informasi yang sama (misalnya tinggi dalam inci dan tinggi dalam cm).
dasboth

Jawaban:

23

lmglm

Dengan model lain, gunakan prinsip yang sama. Jika prediksi yang diperoleh tergantung pada kolom mana yang Anda tinggalkan, maka jangan lakukan itu. Kalau tidak, tidak apa-apa.

Sejauh ini, jawaban ini hanya menyebutkan model linear (dan beberapa model non-linear). Tetapi bagaimana dengan model yang sangat tidak linier, seperti pohon dan hutan acak? Gagasan tentang pengkodean kategoris, seperti one-hot, sebagian besar berasal dari model linier dan ekstensi. Ada sedikit alasan untuk berpikir bahwa gagasan yang berasal dari konteks itu harus berlaku tanpa modifikasi untuk pohon dan hutan! untuk beberapa ide, lihat Regresi Hutan Acak dengan data jarang dengan Python .

β,β2,β3β1=0β2-β1,β3-β1

kjetil b halvorsen
sumber
Saya bisa setuju bahwa pilihan variabel referensi akan mempengaruhi hasil regresi yang diatur, tetapi saya tidak begitu yakin jika membiarkan semua variabel apa adanya lebih baik daripada menjatuhkan satu. Apakah Anda punya alasan untuk itu?
Kota Mori
Nah, hanya dua alternatif ... Menjaga semua level menjaga invarian dan tidak ada kesewenang-wenangan. Jika Anda memiliki alasan lain untuk ingin mengurangi jumlah level, seperti terlalu banyak level, Anda harus memberi tahu kami tentang hal itu
kjetil b halvorsen