Saya telah membangun model dengan data kategorikal untuk sementara waktu sekarang dan ketika dalam situasi ini pada dasarnya saya menggunakan fungsi LabelEncoder scikit-learn untuk mengubah data ini sebelum membangun model.
Saya mengerti perbedaan di antara OHE
, LabelEncoder
dan DictVectorizor
dalam hal apa yang mereka lakukan terhadap data, tetapi yang tidak jelas bagi saya adalah ketika Anda mungkin memilih untuk menggunakan satu teknik di atas yang lain.
Adakah algoritma atau situasi tertentu di mana seseorang memiliki kelebihan / kekurangan sehubungan dengan yang lain?
Jawaban:
Ada beberapa kasus di mana LabelEncoder atau DictVectorizor berguna, tetapi ini sangat terbatas menurut pendapat saya karena ordinalitas.
LabelEncoder dapat mengubah [anjing, kucing, anjing, tikus, kucing] menjadi [1,2,1,3,2], tetapi kemudian peraturan yang diberlakukan berarti bahwa rata-rata anjing dan tikus adalah kucing. Masih ada algoritma seperti pohon keputusan dan hutan acak yang dapat bekerja dengan variabel kategorikal saja dan LabelEncoder dapat digunakan untuk menyimpan nilai menggunakan ruang disk lebih sedikit.
One-Hot-Encoding memiliki keuntungan bahwa hasilnya adalah biner daripada ordinal dan semuanya berada dalam ruang vektor ortogonal. Kerugiannya adalah untuk kardinalitas tinggi, ruang fitur dapat benar-benar meledak dengan cepat dan Anda mulai berkelahi dengan kutukan dimensi. Dalam kasus ini, saya biasanya menggunakan satu-hot-encoding diikuti oleh PCA untuk pengurangan dimensi. Saya menemukan bahwa kombinasi yang bijaksana dari one-hot plus PCA jarang dapat dikalahkan oleh skema pengkodean lainnya. PCA menemukan tumpang tindih linier, sehingga secara alami akan cenderung mengelompokkan fitur yang serupa ke dalam fitur yang sama.
sumber
Sementara AN6U5 telah memberikan jawaban yang sangat bagus, saya ingin menambahkan beberapa poin untuk referensi di masa mendatang. Saat mempertimbangkan One Hot Encoding (OHE) dan Label Encoding , kita harus mencoba dan memahami model apa yang Anda coba buat. Yaitu dua kategori model yang akan kami pertimbangkan adalah:
Mari kita pertimbangkan kapan menerapkan OHE dan kapan menerapkan Label Encoding sambil membangun model berbasis pohon.
Kami menerapkan OHE ketika:
Kami menerapkan penyandian Label ketika:
Jika Anda ingin melanjutkan dengan OHE, seperti yang disarankan @ AN6U5, Anda mungkin ingin menggabungkan PCA dengan OHE.
Mari kita pertimbangkan kapan menerapkan OHE dan Label Encoding sambil membangun model yang tidak berbasis pohon.
Untuk menerapkan pengkodean Label, ketergantungan antara fitur dan target harus linier agar Pengkodean Label dapat digunakan secara efektif.
Demikian pula, jika ketergantungannya non-linear, Anda mungkin ingin menggunakan OHE untuk hal yang sama.
Catatan: Beberapa penjelasan telah dirujuk dari Cara Memenangkan Kompetisi Sains Data dari Coursera.
sumber
LabelEncoder untuk data ordinal, sedangkan OHE untuk data nominal.
sumber