Saya memiliki data mentah yang memiliki sekitar 20 kolom (20 fitur). Sepuluh di antaranya merupakan data kontinu dan 10 di antaranya bersifat kategorikal. Beberapa data kategorikal dapat memiliki seperti 50 nilai yang berbeda (Amerika Serikat). Setelah saya pra-proses data, 10 kolom kontinu menjadi 10 kolom yang disiapkan dan 10 nilai kategorikal menjadi seperti 200 variabel disandikan satu-panas. Saya khawatir bahwa jika saya menempatkan semua 200 + 10 = 210 fitur ini ke dalam jaringan syaraf maka fitur 200-satu-panas (10 kolom kategori) akan benar-benar mendominasi fitur 10-kontinu.
Mungkin satu metode adalah untuk "mengelompokkan" kolom bersama atau sesuatu. Apakah ini masalah yang valid dan apakah ada cara standar untuk menangani masalah ini?
(Saya menggunakan Keras, meskipun saya pikir itu tidak terlalu penting.)
sumber
Jawaban:
Anda bisa menyandikan variabel kategori dengan metode yang berbeda dari yang panas. Encoder biner atau hashing mungkin sesuai untuk kasus ini. Hashing khususnya bagus karena Anda menyandikan semua kategori ke dalam representasi tunggal per vektor fitur, jadi tidak ada satu pun yang mendominasi yang lain. Anda juga dapat menentukan ukuran representasi akhir, sehingga dapat memotong semua variabel kategori menjadi 10 fitur, dan berakhir dengan 20 fitur numerik (setengah kontinu, setengah kategorikal).
Keduanya diimplementasikan dalam https://github.com/scikit-learn-contrib/categorical-encoding , atau cukup mudah untuk diterapkan sendiri.
sumber
Anda bisa menggunakan embedding untuk mengubah sejumlah besar variabel kategori Anda menjadi satu vektor. Vektor terkompresi ini akan menjadi representasi terdistribusi dari fitur-fitur kategorikal. Input kategoris akan ditransformasikan menjadi vektor yang relatif kecil dengan panjang N dengan bilangan real N yang dalam beberapa cara mewakili fitur laten N yang menggambarkan semua input.
Pertimbangkan sejumlah besar kata dalam kamus bahasa Inggris. Jika angka ini adalah N, maka kita dapat mewakili setiap kata sebagai vektor satu-kode-panas dengan panjang N. Namun, kata-ke-vec mampu menangkap hampir semua informasi ini dalam vektor panjang antara 200-300.
sumber