Ich habe Rohdaten mit etwa 20 Spalten (20 Features). Zehn von ihnen sind kontinuierliche Daten und zehn von ihnen sind kategorisch. Einige der kategorialen Daten können bis zu 50 verschiedene Werte haben (US-Bundesstaaten). Nachdem ich die Daten vorverarbeitet habe, werden die 10 fortlaufenden Spalten zu 10 vorbereiteten Spalten, und die 10 kategorialen Werte werden zu 200 One-Hot-codierten Variablen. Ich mache mir Sorgen, dass, wenn ich all diese 200 + 10 = 210 Merkmale in das neuronale Netz stecke, die 200-one-hot-Merkmale (die 10 kategorialen Spalten) die 10-stetigen Merkmale vollständig dominieren.
Vielleicht wäre eine Methode, Spalten zu "gruppieren" oder so. Ist dies ein berechtigtes Anliegen und gibt es eine Standardmethode, um mit diesem Problem umzugehen?
(Ich benutze Keras, obwohl ich nicht denke, dass es wichtig ist.)
Antworten:
Sie können die kategorialen Variablen mit einer anderen Methode als one-hot codieren. In diesem Fall können Binär- oder Hashing-Encoder geeignet sein. Insbesondere das Hashing ist hilfreich, da Sie alle Kategorien in einer einzigen Darstellung pro Merkmalsvektor codieren, sodass keine einzelne die andere dominiert. Sie können auch die Größe der endgültigen Darstellung angeben, um alle kategorialen Variablen in 10 Features zu hacken und am Ende 20 numerische Features (halb durchgehend, halb kategorial) zu erhalten.
Beide sind in https://github.com/scikit-learn-contrib/categorical-encoding implementiert oder lassen sich recht einfach selbst implementieren.
quelle
Sie können die Einbettung verwenden, um eine große Anzahl von kategorialen Variablen in einen einzelnen Vektor zu transformieren. Dieser komprimierte Vektor ist eine verteilte Darstellung der kategorialen Merkmale. Die kategorialen Eingaben werden in einen relativ kleinen Vektor der Länge N mit N reellen Zahlen umgewandelt, die auf irgendeine Weise N latente Merkmale darstellen, die alle Eingaben beschreiben.
Betrachten Sie die große Anzahl von Wörtern im englischen Wörterbuch. Wenn diese Zahl N ist, könnten wir jedes Wort als einen One-Hot-Coded-Vektor der Länge N darstellen. Word-to-VEC ist jedoch in der Lage, praktisch alle diese Informationen in einem Vektor der Länge zwischen 200 und 300 zu erfassen.
quelle