Ich erstelle seit einiger Zeit Modelle mit kategorialen Daten. In dieser Situation verwende ich standardmäßig die LabelEncoder-Funktion von scikit-learn, um diese Daten vor dem Erstellen eines Modells zu transformieren.
Ich verstehe den Unterschied zwischen OHE
, LabelEncoder
und DictVectorizor
in Hinblick darauf, was sie auf die Daten zu tun, aber was mir nicht klar ist , ist , wenn Sie wählen könnten eine Technik , über eine andere zu beschäftigen.
Gibt es bestimmte Algorithmen oder Situationen, in denen man Vor- / Nachteile gegenüber den anderen hat?
Antworten:
Es gibt einige Fälle, in denen LabelEncoder oder DictVectorizor nützlich sind, aber diese sind meiner Meinung nach aufgrund der Ordinalität sehr begrenzt.
LabelEncoder kann [Hund, Katze, Hund, Maus, Katze] in [1,2,1,3,2] umwandeln, aber dann bedeutet die auferlegte Ordinalität, dass der Durchschnitt von Hund und Maus Katze ist. Trotzdem gibt es Algorithmen wie Entscheidungsbäume und zufällige Gesamtstrukturen, die gut mit kategorialen Variablen umgehen können, und LabelEncoder kann verwendet werden, um Werte mit weniger Speicherplatz zu speichern.
One-Hot-Encoding hat den Vorteil, dass das Ergebnis eher binär als ordinal ist und dass sich alles in einem orthogonalen Vektorraum befindet. Der Nachteil ist, dass bei hoher Kardinalität der Feature-Space sehr schnell explodieren kann und Sie beginnen, mit dem Fluch der Dimensionalität zu kämpfen. In diesen Fällen verwende ich normalerweise eine One-Hot-Codierung, gefolgt von PCA, um die Dimensionalität zu reduzieren. Ich finde, dass die vernünftige Kombination von One-Hot und PCA selten von anderen Codierungsschemata übertroffen werden kann. PCA stellt die lineare Überlappung fest und neigt daher dazu, ähnliche Merkmale in demselben Merkmal zu gruppieren.
quelle
Während AN6U5 eine sehr gute Antwort gegeben hat, wollte ich einige Punkte als zukünftige Referenz hinzufügen. Wenn wir One Hot Encoding (OHE) und Label Encoding in Betracht ziehen , müssen wir versuchen zu verstehen, welches Modell Sie erstellen möchten. Die zwei Kategorien von Modellen, die wir betrachten werden, sind:
Überlegen wir uns, wann OHE und wann Label Encoding beim Erstellen von baumbasierten Modellen angewendet werden müssen.
Wir wenden OHE an, wenn:
Wir wenden Label-Codierung an, wenn:
Wenn Sie mit OHE fortfahren möchten, wie von @ AN6U5 vorgeschlagen, können Sie PCA mit OHE kombinieren.
Überlegen wir, wann OHE und Label Encoding beim Erstellen nicht baumbasierter Modelle angewendet werden sollen.
Um die Label-Codierung anzuwenden, muss die Abhängigkeit zwischen Feature und Ziel linear sein, damit die Label-Codierung effektiv genutzt werden kann.
Wenn die Abhängigkeit nicht linear ist, können Sie auch OHE verwenden.
Hinweis: Einige der Erklärungen stammen aus Gewinnen eines Data Science-Wettbewerbs von Coursera.
quelle
LabelEncoder steht für Ordnungsdaten, OHE für Nenndaten.
quelle