Mengapa satu pengkodean panas meningkatkan kinerja pembelajaran mesin?


127

Saya telah memperhatikan bahwa ketika One Hot encoding digunakan pada set data tertentu (matriks) dan digunakan sebagai data pelatihan untuk algoritma pembelajaran, itu memberikan hasil yang jauh lebih baik sehubungan dengan akurasi prediksi, dibandingkan dengan menggunakan matriks asli itu sendiri sebagai data pelatihan. Bagaimana peningkatan kinerja ini terjadi?

Jawaban:


260

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.


4
Terima kasih untuk Lars ini, tetapi ketika kita melakukan OneHotEncoding yang secara efektif meningkatkan jumlah fitur, apakah kita tidak perlu menambah sampel juga, untuk memastikan itu tidak sesuai.
Manoj

@ Manoj Dibandingkan dengan representasi alternatif yang jelas dari variabel kategori, menyandikan setiap tingkat sebagai bilangan bulat yang berbeda, saya tidak berpikir itu penting: Anda memerlukan statistik yang cukup.
Fred Foo

7
Adakah literatur yang bisa Anda tunjuk sehingga saya bisa membaca lebih jauh tentang ini? Terima kasih.
Dr.Knowitall

1
Apakah ada manfaat menggunakan matriks peringkat kurang dari penuh (yang tidak akan Anda lakukan ketika membangun model statistik reguler) ketika menggunakan teknik pembelajaran mesin seperti meningkatkan?
Steve S

2
Bagi saya ini mirip dengan apa yang oleh ahli statistik disebut "variabel dummy." Tapi mungkin ada penghematan ruang penyimpanan.
Soldalma

3

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.


0

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.