Wie codiere ich eine Klasse mit 24.000 Kategorien?

10

Ich arbeite derzeit an einem logistischen Regressionsmodell für die Genomik. Eines der Eingabefelder, die ich als Kovariate einschließen möchte, ist genes. Es sind rund 24.000 Gene bekannt. Es gibt viele Merkmale mit dieser Variabilität in der Computerbiologie, und Hunderttausende von Proben werden benötigt.

  • Wenn ich LabelEncoder()diese 24K-Gene
  • und dann OneHotEncoder()sie ...

Werden 24.000 Spalten meine Keras-Trainingszeiten für eine 2,2-GHz-Quad-Core-i7-CPU unangemessen machen?

Wenn ja, gibt es einen anderen Ansatz für die Codierung, den ich damit verfolgen kann?

Sollte ich irgendwie versuchen, dieser Funktion eine Ebene meines Modells zuzuweisen?

Bedeutet dies, dass ich 24K-Eingangsknoten benötige?

HashRocketSyntax
quelle
Warum nicht Repräsentation mit VAE lernen? Ich denke, beim Lernen von Gensequenzen wird die Repräsentation (wie sie in NLP gemacht wird) im Vergleich zu einer einfachen PCA sehr viel Sinn machen ...
n1tk

Antworten:

10

Ja, für die Verwendung der One-Hot-Codierung für 24k-Funktionen sind 24k-Eingabeknoten erforderlich. Dies sollte jedoch kein Problem für Keras (oder eine andere Deep-Learning-Bibliothek) sein. Bei der Verarbeitung natürlicher Sprache wird häufig eine One-Hot-Codierung für Wörter mit einer Vokabulargröße im selben Ballpark verwendet.

Wenn Sie ein "tiefes" Modell verwenden, sollte eine Ihrer verborgenen Ebenen dafür sorgen, dass die Dimensionalität Ihrer Daten verringert wird. Ein separater Vorverarbeitungsschritt ist normalerweise nicht erforderlich.

Die Trainingszeit sollte nicht unangemessen sein.

C. Yduqoli
quelle
Vielen Dank für die Überprüfung der Gesundheit.
HashRocketSyntax
Mir ist aufgefallen, dass Sie in sklearn eine Ebene erwähnt haben, nicht PCA. Würden Sie Autoencoder als eine Form der Dimensionsreduktion empfehlen?
HashRocketSyntax
2
Sie haben erwähnt, dass Sie Keras verwenden, also verwenden Sie eine Art neuronales Netzwerk, oder? Wenn Sie irgendwo in Ihrem Netzwerk eine Schicht mit einer geringeren Anzahl von Knoten als Ihre Eingabe haben, führt das Netzwerk automatisch eine Dimensionsreduzierung durch. Ich gehe davon aus, dass Sie nur eine (oder eine kleine Anzahl) Regressionsausgaben haben. Ein einfacher Weg besteht also darin, die Eingabeebene (d = 24k), eine oder mehrere Zwischenschichten (d = 1k oder ähnliches) und Ihre Ausgabeebene (d = 1) zu haben.
C. Yduqoli
Während in NLP Schichten ähnlicher Größe üblich sind, ist es im Allgemeinen nicht zumutbar, moderne NLP-Modelle auf CPU zu trainieren. Leistungsstarke GPUs sind in NLP wirklich ein wichtiger Faktor für alles, was über kleine Spielzeugmodelle hinausgeht. Auf der anderen Seite ist dies keine große Barriere, da sowohl physische als auch Cloud-GPUs recht einfach verfügbar sind.
Peteris
6

Das Einbetten von Entitäten für kategoriale Variablen ( Original-Pager ) wäre hier ein sehr geeigneter Ansatz. Lesen Sie hier oder hier weiter . Ich habe tatsächlich hier und da Codeteile eingefügt und eine vollständige laufende Implementierung vorgenommen, siehe dieses Git-Repo. Dies handhabt leicht sehr hohe kateginale Kardinalvariablen unter Verwendung neuronaler Netze. Ich werde die Vor- und Nachteile von OHE nicht auflisten, Sie googeln es einfach, aber einer der Hauptnachteile, insb. Wenn Sie eine sehr hohe kategoriale Kardinalvariable haben, wird Ihr Funktionsbereich unnötig drastisch vergrößert, was meiner Meinung nach nicht ideal ist. Und was noch wichtiger ist: OHE berücksichtigt meines Wissens keine semantische Beziehung zwischen Kategorien, wenn eine solche Beziehung besteht! Entity Embedding ist jedoch ein Konzept für Word Embedding in NLP. Die Gewichte, die zum Codieren der Kategorien gelernt werden, können möglicherweise kategorieninterne Beziehungen erfassen.

TwinPenguins
quelle
3

Im Allgemeinen sollte diese Anzahl von Genen auf einen viel kleineren Satz bedeutungsvoller Merkmale reduziert werden. Dann kann der reduzierte Funktionsumfang im Modell verwendet werden. Beispielsweise ist die Hauptkomponentenanalyse (PCA) eine der häufigsten Reduktionstechniken und wurde für Genexpressionsdaten verwendet .

" Maschinelles Lernen zur Integration von Daten in Biologie und Medizin: Prinzipien, Praxis und Möglichkeiten" von Zitnika et al. deckt eine Vielzahl von Feature-Engineering-Techniken für Gene ab.

Brian Spiering
quelle
Danke macht Sinn. Reduzieren Sie den Merkmalsraum auf die Anzahl der relevanten Gene (und regulatorischen Zonen in wgs).
HashRocketSyntax
Ist es eine zu große Frage, zu fragen, welche Art von Dimensionsreduktion Sie empfehlen würden?: PCA, Mannigfaltigkeit, Clustering / Dichte, eine Art neuronales Netz?
HashRocketSyntax