Saya tidak pernah yakin kapan harus menggunakan pengodean satu-panas untuk variabel kategori yang tidak dipesan dan kapan tidak. Saya menggunakannya setiap kali algoritma menggunakan metrik jarak untuk menghitung kesamaan. Adakah yang bisa memberikan aturan umum tentang apa jenis algoritma akan membutuhkan fitur kategorikal non-teratur menjadi satu-hot-encoded dan mana yang tidak?
12
Jawaban:
Sebagian besar algoritma (regresi linier, regresi logistik, jaringan saraf, mesin vektor dukungan, dll.) Memerlukan semacam pengkodean pada variabel kategori. Ini karena sebagian besar algoritma hanya mengambil nilai numerik sebagai input.
Algoritma yang tidak memerlukan pengkodean adalah algoritma yang dapat langsung menangani distribusi diskrit bersama seperti rantai Markov / Jaringan Naif / Bayesian, berbasis pohon, dll.
Komentar tambahan:
Satu pengkodean panas adalah salah satu metode pengkodean. Ini adalah sumber yang bagus untuk pengkodean variabel kategori (tidak terbatas pada R). SISTEM KODE KONTRAS PERPUSTAKAAN UNTUK VARIABEL KATEGORIS
Bahkan tanpa pengkodean, jarak antara titik data dengan variabel diskrit dapat ditentukan, seperti jarak tempuh atau Jarak Levenshtein
sumber
AFAIU, itu harus dilakukan lebih banyak dengan data tertentu , kurang dengan algoritma tertentu . Khususnya, itu tergantung pada apakah ada urutan yang berarti dalam kategori atau tidak.
Pertimbangkan dua kasus. Yang pertama Anda memiliki kategori buruk, meh, baik , dan yang kedua Anda memiliki apel, jeruk, pir . Ada tatanan alami dalam kasus pertama, karena meh mungkin di antara yang buruk dan yang baik , tetapi mungkin tidak ada yang serupa terjadi pada apel, jeruk, pir .
Jika Anda menghindari pengodean satu-panas untuk kasus pertama, Anda "kehilangan" informasi tentang pesanan. Jika Anda menggunakan pengodean satu-panas untuk kasus kedua, Anda menetapkan beberapa urutan ke kategori yang tidak benar secara alami.
Mengapa? Misalkan salah satu fitur adalah kategori buruk, meh, baik , dan Anda memiliki tiga contoh, 1, 2, dan 3, di mana mereka identik, kecuali bahwa 1 buruk , 2 adalah meh , dan 3 bagus. Anda mungkin ingin mengekspresikan ke algoritma bahwa 1 lebih mirip dengan 2 daripada ke 3.
sumber
Tidak ada algoritma pembelajaran mesin yang membutuhkan satu pengkodean panas. Ini adalah salah satu metode untuk berurusan dengan variabel kategori. Variabel dummy adalah hal lain. Secara tradisional, variabel dummy adalah solusi yang lebih disukai. Misalnya, fungsi R lm () secara otomatis membuat variabel dummy untuk data kategorikal. Jika Anda menggunakan python dan scikt-pelajari maka saya percaya banyak dari itu juga membutuhkan satu-panas pengkodean variabel kategorikal. Saya percaya bahwa tensorFlow juga membutuhkan pengodean satu panas. Ini adalah pilihan bagaimana variabel dikodekan. Tidak ada alasan mengapa variabel dummy tidak dapat digunakan dalam kode sebagai gantinya. Ini semua harus berurusan dengan implementasi kode aktual dari algoritma.
Sebagai hxd1011 menunjukkan masalah menggambarkan 'jarak' antara variabel kategori adalah masalah yang rumit. Selain jarak yang disebutkan ada juga jarak Jaccard. Beberapa metode ML, khususnya SVM tidak sesuai untuk data kategorikal dan menambahkan variabel kategorikal dapat / akan (salah satu dari keduanya, Anda putuskan) mengarah ke model dengan daya prediksi yang sangat buruk. Sebagian besar model ensemble menangani data kategorikal 'apa adanya' dan tidak memerlukan pra-pemrosesan.
sumber