Algoritma apa yang membutuhkan pengodean satu-panas?

12

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?

kosmosa
sumber
2
Apakah Anda bertanya tentang perlunya kode data kategorikal ke dalam beberapa jenis "variabel kontras" atau secara khusus ke dalam jenis dummy (satu-panas)?
ttnphns
1
Pertanyaan ini agak luas, tetapi jawaban sederhana yang membahas sifat OHE dapat menjernihkan kebingungan OP. Adanya jawaban semacam itu menyiratkan pertanyaan ini bisa dijawab. Saya memberikan suara untuk tetap terbuka.
gung - Reinstate Monica
@ttnphns jujur, saya tidak tahu apa yang Anda maksud dengan variabel kontras. Saya hanya akrab dengan boneka.
cosmosa
Kosmos, dummy (= indikator = satu-panas) hanyalah salah satu dari sejumlah cara untuk menyandikan kategori yang dapat dicari dalam analisis. Cara-cara ini secara kesatuan disebut "variabel kontras". Lihat stats.meta.stackexchange.com/q/4669/3277 dan stats.stackexchange.com/a/221868/3277
ttnphns
1
Saya pikir daftar lengkap yang Anda minta akan sulit diproduksi.
mdewey

Jawaban:

6

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:

Haitao Du
sumber
Masih belum jelas apakah diperlukan satu pengkodean panas untuk ALGORITMA PALING. Anda hanya mengatakan bahwa pengkodean diperlukan. Tetapi apakah ini merupakan salah satu pengkodean panas?
Prometheus
4

Adakah yang bisa memberikan daftar algoritma apa yang akan memerlukan fitur kategorikal untuk menjadi satu-panas-disandikan dan mana yang tidak?

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.

Saya melakukannya setiap kali algoritma menggunakan metrik jarak untuk menghitung kesamaan.

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.

Ami Tavory
sumber
2
Itu jawaban yang bagus. Saya seharusnya mengklarifikasi pertanyaan untuk memasukkan variabel kategori yang tidak teratur juga. Dalam hal itu, itu harus selalu menjadi salah satu yang dikodekan panas?
cosmosa
@ cosmos1990 IMHO, sebagai aturan praktis, untuk data kategorikal yang tidak dipesan, pengodean satu-panas adalah cara yang harus dilakukan (sebagai lawan penugasan nilai numerik).
Ami Tavory
2

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.

meh
sumber