Banyak algoritma pembelajaran yang mempelajari bobot tunggal per fitur, atau mereka menggunakan jarak antar sampel. Yang pertama adalah kasus untuk model linier seperti regresi logistik, yang mudah dijelaskan.
Misalkan Anda memiliki dataset yang hanya memiliki satu fitur kategori "kebangsaan", dengan nilai "Inggris", "Prancis" dan "AS". Asumsikan, tanpa kehilangan keumuman, bahwa ini dikodekan sebagai 0, 1 dan 2. Anda kemudian memiliki bobot w untuk fitur ini dalam classifier linier, yang akan membuat beberapa jenis keputusan berdasarkan kendala w × x + b> 0 , atau ekuivalen w × x <b.
Masalahnya sekarang adalah bahwa berat w tidak dapat menyandikan pilihan tiga arah. Tiga kemungkinan nilai w × x adalah 0, w dan 2 × w. Ketiganya mengarah ke keputusan yang sama (semuanya <b atau ≥b) atau "Inggris" dan "Prancis" mengarah ke keputusan yang sama, atau "Prancis" dan "AS" memberikan keputusan yang sama. Tidak ada kemungkinan bagi model untuk mengetahui bahwa "Inggris" dan "AS" harus diberi label yang sama, dengan "Prancis" yang aneh.
Dengan pengodean satu-panas, Anda secara efektif meledakkan ruang fitur menjadi tiga fitur, yang masing-masing akan mendapatkan bobotnya sendiri, sehingga fungsi keputusan sekarang adalah [Inggris] x [Inggris] + w [FR] x [FR] + w [AS] x [AS] <b, di mana semua x adalah boolean. Dalam ruang ini, fungsi linier seperti itu dapat mengekspresikan jumlah / disjungsi dari kemungkinan (misalnya "Inggris atau AS", yang mungkin merupakan prediktor bagi seseorang yang berbicara bahasa Inggris).
Demikian pula, setiap pelajar berdasarkan pada metrik jarak standar (seperti tetangga k-terdekat) antara sampel akan bingung tanpa pengkodean satu-panas. Dengan pengkodean naif dan jarak Euclidean, jarak antara Prancis dan AS adalah 1. Jarak antara AS dan Inggris adalah 2. Tetapi dengan pengkodean satu-panas, jarak berpasangan antara [1, 0, 0], [0, 1 , 0] dan [0, 0, 1] semuanya sama dengan √2.
Ini tidak benar untuk semua algoritma pembelajaran; pohon keputusan dan model turunan seperti hutan acak, jika cukup dalam, dapat menangani variabel kategori tanpa penyandian satu panas.
Mengenai peningkatan fitur dengan melakukan one-hot-encoding seseorang dapat menggunakan hashing fitur. Saat melakukan hashing, Anda dapat menentukan jumlah bucket menjadi jauh lebih sedikit daripada jumlah fitur yang baru diperkenalkan.
sumber
Saat Anda ingin memprediksi kategori, Anda ingin memprediksi item dari suatu set. Tidak menggunakan pengkodean satu-panas mirip dengan membiarkan kategori memiliki kategori tetangga (misalnya: jika Anda melakukan regresi dengan bilangan bulat kategori sebagai gantinya) yang diselenggarakan dengan cara tertentu dan dalam urutan tertentu.
Sekarang, apa yang terjadi jika Anda menetapkan kategori 0 hingga 0, kategori 1 ke 1, dan kategori 2 hingga 2 tanpa pengkodean satu-panas, dan bahwa prediksi algoritme Anda tidak yakin apakah harus memilih 0 atau 2: haruskah ia memprediksi 1 meskipun dia pikir itu 0 atau 2?
Anda lihat kemana perginya. Hal yang sama berlaku untuk input data Anda: jika mereka tidak seharusnya dianggap sebagai tetangga, maka jangan perlihatkan kepada algoritma Anda sebagai tetangga.
sumber