Label-kodierung oder one-hot-kodierung: was ist der unterschied?
Beim maschinellen Lernen möchten wir häufig kategoriale Variablen in ein numerisches Format umwandeln, das von Algorithmen problemlos verwendet werden kann.
Es gibt zwei gängige Methoden zum Konvertieren kategorialer Variablen in numerische Variablen:
1. Etikettenkodierung: Weisen Sie jedem kategorialen Wert einen ganzzahligen Wert basierend auf alphabetischer Reihenfolge zu.
2. One Hot Encoding: Erstellen Sie neue Variablen, die die Werte 0 und 1 annehmen, um die ursprünglichen kategorialen Werte darzustellen.
Angenommen, wir haben den folgenden Datensatz mit zwei Variablen und möchten die Teamvariable von einer kategorialen Variablen in eine numerische Variable konvertieren:
Die folgenden Beispiele zeigen, wie Sie dazu sowohl Tag-Kodierung als auch One-Hot-Kodierung verwenden.
Beispiel: Etikettenkodierung verwenden
Mithilfe der Etikettencodierung würden wir jeden eindeutigen Wert in der Spalte „Team“ in einen ganzzahligen Wert konvertieren, basierend auf alphabetischer Reihenfolge:
In diesem Beispiel können wir sehen:
- Jeder „A“-Wert wurde in 0 umgewandelt.
- Jeder „B“-Wert wurde in 1 umgewandelt.
- Jeder „C“-Wert wurde in 2 umgewandelt.
Wir haben die Spalte „Team“ erfolgreich von einer kategorialen Variablen in eine numerische Variable konvertiert.
Beispiel: Verwendung einer einzelnen One-Hot-Kodierung
Mithilfe der One-Hot-Codierung würden wir die Spalte „Team“ in neue Variablen konvertieren, die nur die Werte 0 und 1 enthalten:
Wenn wir diesen Ansatz verwenden, erstellen wir eine neue Spalte für jeden eindeutigen Wert in der ursprünglichen kategorialen Variablen.
Beispielsweise hatte die kategoriale Variable Team drei eindeutige Werte , daher haben wir drei neue Spalten im Datensatz erstellt, die alle die Werte 0 oder 1 enthalten.
So interpretieren Sie die Werte in den neuen Spalten:
- Der Wert der neuen Spalte „Team_A“ ist 1, wenn der ursprüngliche Wert der Spalte „ Team “ A war. Andernfalls ist der Wert 0.
- Der Wert der neuen Spalte „Team_B“ ist 1, wenn der ursprüngliche Wert der Spalte „ Team “ B war. Andernfalls ist der Wert 0.
- Der Wert der neuen Spalte „Team_C“ ist 1, wenn der ursprüngliche Wert der Spalte „ Team “ C war. Andernfalls ist der Wert 0.
Wir haben die Spalte „Team“ erfolgreich von einer kategorialen Variablen in drei numerische Variablen – manchmal auch „Dummy“-Variablen genannt – konvertiert.
Hinweis : Wenn Sie diese „Dummy“-Variablen in einem Regressionsmodell oder einem anderen Algorithmus für maschinelles Lernen verwenden, achten Sie darauf, die Dummy-Variablenfalle zu vermeiden.
Wann sollte Tag-Kodierung im Vergleich zu One-Hot-Kodierung verwendet werden?
In den meisten Szenarien ist die One-Hot-Codierung die bevorzugte Methode zum Konvertieren einer kategorialen Variablen in eine numerische Variable, da die Label-Codierung den Anschein erweckt, dass zwischen den Werten eine Rangfolge besteht.
Betrachten Sie beispielsweise den Fall, in dem wir die Etikettenkodierung verwendet haben, um team in eine numerische Variable umzuwandeln:
Die durch das Etikett kodierten Daten lassen den Eindruck entstehen, dass Team C irgendwie größer oder größer als die Teams B und A ist, da es einen höheren numerischen Wert hat.
Dies ist kein Problem, wenn die ursprüngliche kategoriale Variable tatsächlich eine Ordinalvariable mit einer natürlichen Reihenfolge oder Rangfolge ist. In vielen Szenarien ist dies jedoch nicht der Fall.
Einer der Nachteile der One-Hot-Codierung besteht jedoch darin, dass Sie so viele neue Variablen erstellen müssen, wie die ursprüngliche kategoriale Variable eindeutige Werte enthält.
Das heißt, wenn Ihre kategoriale Variable 100 eindeutige Werte hat, müssen Sie bei Verwendung der One-Hot-Codierung 100 neue Variablen erstellen.
Abhängig von der Größe Ihres Datensatzes und der Art der Variablen, mit denen Sie arbeiten, bevorzugen Sie möglicherweise One-Hot-Codierung oder Label-Codierung.
Zusätzliche Ressourcen
Die folgenden Tutorials erklären, wie Sie die Etikettenkodierung in der Praxis durchführen:
- So führen Sie die Etikettenkodierung in R durch
- So führen Sie die Etikettenkodierung in Python durch
Die folgenden Tutorials erklären, wie man One-Hot-Encoding in der Praxis durchführt: