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?
machine-learning
keras
scikit-learn
HashRocketSyntax
quelle
quelle
Antworten:
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.
quelle
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.
quelle
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.
quelle