Come codificare una classe con 24.000 categorie?


10

Attualmente sto lavorando a un modello di regressione logistica per la genomica. Uno dei campi di input che voglio includere come covariata ègenes . Esistono circa 24.000 geni noti. Ci sono molte caratteristiche con questo livello di variabilità nella biologia computazionale e sono necessarie centinaia di migliaia di campioni.

  • Se io LabelEncoder() quei geni 24K
  • e poi OneHotEncoder() loro ...

24.000 colonne renderanno irragionevoli i tempi di allenamento delle mie macchine fotografiche per una CPU i7 quad-core a 2,2 GHz?

In tal caso, esiste un approccio diverso alla codifica che posso adottare con questo?

Dovrei in qualche modo provare a dedicare un livello del mio modello a questa funzione?

Questo significa che ho bisogno di nodi di input 24K?


Perché non apprendere la rappresentazione usando VAE? Penso che nell'apprendimento delle sequenze geniche la rappresentazione (come avviene nella PNL) avrà molto senso rispetto a un semplice PCA ...
n1tk

Risposte:


10

Sì, l'utilizzo della codifica one-hot su funzionalità 24k richiede nodi di input 24k. Tuttavia, questo non dovrebbe essere un problema per Keras (o per qualsiasi altra libreria di apprendimento profondo). L'elaborazione del linguaggio naturale spesso utilizza una codifica a una parola su parole con una dimensione del vocabolario nello stesso campo di gioco.

Se si utilizza un modello "profondo", uno dei livelli nascosti dovrebbe occuparsi di ridurre la dimensionalità dei dati. Di solito non è necessaria una fase di pre-elaborazione separata.

Il tempo di allenamento non dovrebbe essere irragionevole.


Grazie per il controllo di sanità mentale.
HashRocketSyntax,

Ho notato che hai menzionato un livello, non PCA in sklearn. Consiglieresti i codificatori automatici come forma di riduzione della dimensionalità?
HashRocketSyntax,

2
Hai detto che usi Keras, quindi stai usando una specie di rete neurale, giusto? Se da qualche parte nella tua rete, hai un livello con un numero inferiore di nodi rispetto all'input, la rete sta eseguendo automaticamente la riduzione della dimensionalità. Suppongo che tu abbia solo uno (o un piccolo numero di) uscite di regressione. Quindi un modo semplice è avere il layer di input (d = 24k), uno o più layer intermedi (d = 1k o qualcosa del genere) e il layer di output (d = 1).
C. Yduqoli,

Mentre livelli di dimensioni simili sono comuni nella PNL, in genere è irragionevole addestrare i moderni modelli NLP su CPU, GPU potenti in realtà sono picchetti da tavolo nella PNL per qualsiasi cosa oltre ai piccoli modelli "giocattolo". D'altra parte, non è un grosso ostacolo, poiché entrambe le GPU fisiche e cloud sono abbastanza facilmente disponibili.
Peteris,

6

L'incorporamento di entità per variabili categoriali ( cercapersone originale ) sarebbe un approccio molto adatto qui. Continua a leggere qui o qui . In realtà ho messo pezzi di codice da qui a là e ho realizzato un'implementazione completa in esecuzione, vedi questo repository git. Ciò gestisce facilmente variabili categoriali cardinali molto elevate utilizzando reti neurali. Non elencherò i pro e i contro di OHE, è solo Google, ma uno dei suoi principali svantaggi esp. quando si ha una variabile categoriale cardinale molto alta, aumenta drasticamente lo spazio delle funzioni inutilmente, cosa che a mio avviso non è l'ideale. E, soprattutto, OHE, per quanto ne sappia, non tiene conto della relazione semantica tra le categorie se esiste una relazione del genere! Tuttavia, l'incorporamento delle entità è un concetto dell'incorporamento delle parole nella PNL, i pesi appresi per codificare le categorie possono potenzialmente catturare relazioni all'interno della categoria.


3

In generale, quel numero di geni dovrebbe essere ridotto a un insieme molto più piccolo di caratteristiche significative. Quindi, il modello con funzionalità ridotte può essere utilizzato nel modello. Ad esempio, l'analisi dei componenti principali (PCA) è una delle tecniche di riduzione più comuni ed è stata utilizzata per i dati di espressione genica .

" Apprendimento automatico per l'integrazione dei dati in biologia e medicina: principi, pratica e opportunità" di Zitnika et al. copre una varietà di tecniche di ingegneria delle caratteristiche per i geni.


Grazie ha un senso. Ridurre lo spazio delle funzioni al numero di geni rilevanti (e zone regolatorie in wgs).
HashRocketSyntax,

È troppo una domanda noob chiedere quale tipo di riduzione di dimensionalità consiglieresti ?: PCA, molteplice, clustering / densità, qualche tipo di rete neurale?
HashRocketSyntax,
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.