Jaring Saraf Tiruan: Satu variabel panas luar biasa terus menerus?

13

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.)

pengguna1367204
sumber
Sudahkah Anda mempertimbangkan untuk menggunakan dua (atau lebih) model berurutan dan kemudian menggabungkannya? Setiap model memiliki input yang lebih cocok dengan data saat datang (bukan sebagai sosis seperti sosis.) Targetnya sama, tetapi Anda membuat dua set data pelatihan, masing-masing diberi makan secara independen selama pemasangan. Langsung setelah penggabungan, muncul layer output akhir Anda, sehingga layer akhir membuat keputusan mengenai model mana yang paling cocok untuk sampel tertentu. Dari keras.io: keras.io/getting-started/ berikutnyaential
model
Apa yang saya cari. Terima kasih telah berkontribusi.
user1367204
Saya mencoba ini dan val_loss dari ensemble (model_1, model_2) lebih tinggi daripada val_loss dari model_1 dan lebih tinggi daripada val_loss dari model_2.
user1367204
Sudahkah Anda mencoba ini, dan memutuskan bahwa masalah ini memang terjadi? tes apa yang Anda lakukan untuk memeriksa titik ini? apa hasilnya?
Hugh Perkins

Jawaban:

5

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.

Will McGinnis
sumber
4

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.

COOLBEANS
sumber