Reti neurali: travolgente variabile a caldo continuo?


13

Ho dati grezzi che hanno circa 20 colonne (20 funzionalità). Dieci sono dati continui e 10 sono categorici. Alcuni dei dati categorici possono avere circa 50 valori diversi (Stati Uniti). Dopo aver preelaborato i dati, le 10 colonne continue diventano 10 colonne preparate e i 10 valori categorici diventano come 200 variabili con codifica a caldo. Sono preoccupato che se inserissi tutte queste funzionalità 200 + 10 = 210 nella rete neurale, le funzionalità 200 one (le 10 colonne categoriche) domineranno totalmente le funzionalità 10 continue.

Forse un metodo sarebbe quello di "raggruppare" colonne o qualcosa del genere. Si tratta di una preoccupazione valida e esiste un modo standard di affrontare questo problema?

(Sto usando Keras, anche se non penso che importi molto.)


Hai mai pensato di usare due (o più) modelli sequenziali e poi di unirli? Ogni modello ha input che corrispondono meglio ai dati così come vengono (invece di mescolarli come una salsiccia.) Gli obiettivi sono gli stessi, ma si creano due serie di dati di allenamento, ciascuno dei quali viene alimentato indipendentemente durante il montaggio. Subito dopo l'unione arriva il livello di output finale, in modo che il livello finale prenda decisioni su quale modello funziona meglio per determinati campioni. Da keras.io: keras.io/getting-started/sequential-model-guide
photox

Proprio quello che stavo cercando. Grazie per aver contribuito.
user1367204

Ho provato questo e la val_loss dell'ensemble (modello_1, modello_2) era superiore alla val_loss del modello_1 e superiore alla val_loss del modello_2.
user1367204

hai effettivamente provato questo, e determinato che questo problema si verifica effettivamente? quali test hai fatto per verificare questo punto? quali sono stati i risultati?
Hugh Perkins,

Risposte:


5

È possibile codificare le variabili categoriali con un metodo diverso da uno-caldo. Gli encoder binari o di hashing possono essere appropriati per questo caso. L'hash in particolare è bello perché si codificano tutte le categorie in una singola rappresentazione per vettore di feature, quindi nessuna singola domina l'altra. È inoltre possibile specificare la dimensione della rappresentazione finale, in modo da poter includere tutte le variabili categoriali in 10 funzioni e finire con 20 funzioni numeriche (metà continue e metà categoriche).

Entrambi sono implementati in https://github.com/scikit-learn-contrib/categorical-encoding , o abbastanza direttamente per implementare te stesso.


4

È possibile utilizzare l' incorporamento per trasformare un gran numero di variabili categoriali in un singolo vettore. Questo vettore compresso sarà una rappresentazione distribuita delle caratteristiche categoriche. Gli input categorici verranno trasformati in un vettore relativamente piccolo di lunghezza N con N numeri reali che in qualche modo rappresentano N caratteristiche latenti che descrivono tutti gli input.

Considera il gran numero di parole nel dizionario inglese. Se questo numero è N, allora potremmo rappresentare ogni parola come un vettore con codice di lunghezza un N. di lunghezza N. Tuttavia, word-to-vec è in grado di catturare praticamente tutte queste informazioni in un vettore di lunghezza tra 200-300.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.