Come ricodificare la variabile categoriale in variabile numerica quando si utilizza SVM o Neural Network


19

Per utilizzare SVM o la rete neurale è necessario trasformare (codificare) le variabili categoriali in variabili numeriche, il metodo normale in questo caso è utilizzare 0-1 valori binari con il k-esimo valore categoriale trasformato in (0,0, .. ., 1,0, ... 0) (1 è sulla posizione k-esima). Esistono altri metodi per farlo, specialmente quando esiste un gran numero di valori categorici (ad es. 10000) in modo tale che la rappresentazione 0-1 introdurrà un gran numero di dimensioni aggiuntive (unità di input) nella rete neurale che non sembrano del tutto desiderate o attese ?

Sto chiedendo strategie generali.


Stai chiedendo strategie generali o qualche problema specifico?
Denis Tarasov,

Risposte:


11

Nella PNL, dove le parole sono in genere codificate come 1-of-k, recentemente è emerso l'uso delle parole incorporate. La pagina di Wikipedia con i suoi riferimenti è un buon inizio.

L'idea generale è quella di imparare una rappresentazione vettoriale per ogni parola i dove parole semanticamente simili sono vicine in quello spazio. Di conseguenza, gli input hanno la dimensione n anziché la dimensione del vocabolario.XioRnion

Forse puoi trasferire quell'idea alle tue impostazioni.


10

I metodi "standard" sono: codifica one-hot (che hai menzionato nella domanda). Se ci sono troppe categorie possibili, ma hai bisogno della codifica 0-1, puoi usare il trucco hash .

L'altro metodo usato di frequente è la media della risposta sulla categoria: vedi foto dal commento a Kaggle .


1

Puoi usare dummyVarsin R, dal caretpacchetto. Creerà automaticamente diverse colonne in base al numero di livelli. Successivamente, è possibile utilizzarlo cbinde allegarlo ai dati originali. Altre opzioni includono model.matrixe sparse.model.matrix.


0

Puoi provare la codifica binaria che è più compatta e talvolta supera di una volta. Ad esempio, puoi implementare l'incorporamento categorico in Keras.


0

K-1

"Incorporamenti di entità di variabili categoriali" di Cheng Guo, Felix Berkhahn

Mappiamo le variabili categoriali in un problema di approssimazione delle funzioni negli spazi euclidei, che sono gli incorporamenti delle entità delle variabili categoriali. La mappatura viene appresa da una rete neurale durante il processo di addestramento supervisionato standard. L'incorporamento di entità non solo riduce l'utilizzo della memoria e accelera le reti neurali rispetto alla codifica a caldo, ma soprattutto mappando valori simili vicini l'uno all'altro nello spazio di incorporamento rivela le proprietà intrinseche delle variabili categoriali. Lo abbiamo applicato con successo in una recente competizione Kaggle e siamo riusciti a raggiungere la terza posizione con caratteristiche relativamente semplici. Dimostriamo inoltre in questo documento che l'incorporamento di entità aiuta la rete neurale a generalizzare meglio quando i dati sono scarsi e le statistiche sono sconosciute. Pertanto, è particolarmente utile per i set di dati con molte caratteristiche di cardinalità elevata, in cui altri metodi tendono a sovrautilizzare. Dimostriamo anche che gli incorporamenti ottenuti dalla rete neurale addestrata aumentano notevolmente le prestazioni di tutti i metodi di apprendimento automatico testati se usati come funzionalità di input. Poiché l'incorporamento di entità definisce una misura della distanza per le variabili categoriali, può essere utilizzato per visualizzare dati categorici e per il clustering di dati.

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.