Bei der Vorbereitung von Datensätzen für maschinelle Lernmodelle stehen Data Scientists häufig vor der Herausforderung, kategoriale Daten in eine numerische Form zu überführen. Eine gängige Technik hierfür ist das One-Hot-Encoding (OHE).
Warum ist One-Hot-Encoding notwendig?
Maschinelle Lernmodelle, insbesondere viele Algorithmen des überwachten Lernens, arbeiten mit numerischen Daten. Kategoriale Variablen, wie beispielsweise „Rot“, „Blau“ und „Grün“ in einer Farbauswahl, können nicht direkt verarbeitet werden. Ein naiver Ansatz wäre, ihnen Zahlen zuzuweisen (z. B. Rot = 1, Blau = 2, Grün = 3), doch dies führt zu einer falschen Interpretation der Werte als ordinal (eine Rangfolge, die nicht existiert).
Wie funktioniert One-Hot-Encoding?
One-Hot-Encoding löst dieses Problem, indem es jede Kategorie in eine separate binäre Variable transformiert. Angenommen, wir haben eine Variable Farbe
mit den Werten {Rot, Blau, Grün}. Nach der One-Hot-Codierung entstehen drei neue Spalten:
Farbe | Rot | Blau | Grün |
---|---|---|---|
Rot | 1 | 0 | 0 |
Blau | 0 | 1 | 0 |
Grün | 0 | 0 | 1 |
Jeder Wert wird durch genau eine 1 kodiert, während alle anderen Spalten 0 enthalten.
Anwendung in der Praxis
In Python kann One-Hot-Encoding mit pandas
oder scikit-learn
umgesetzt werden:
import pandas as pd
from sklearn.preprocessing import OneHotEncoder
# Beispiel-Daten
df = pd.DataFrame({'Farbe': ['Rot', 'Blau', 'Grün', 'Blau', 'Rot']})
# One-Hot-Encoding mit pandas
df_encoded = pd.get_dummies(df, columns=['Farbe'])
# One-Hot-Encoding mit scikit-learn
encoder = OneHotEncoder(sparse_output=False)
encoded_array = encoder.fit_transform(df[['Farbe']])
encoded_df = pd.DataFrame(encoded_array, columns=encoder.get_feature_names_out(['Farbe']))
print(encoded_df)
Vor- und Nachteile von One-Hot-Encoding
✅ Vorteile
- Vermeidet das Problem einer falschen numerischen Interpretation von kategorialen Variablen.
- Funktioniert gut für nicht ordinal geordnete Daten.
- Weit verbreitet in vielen ML-Frameworks.
❌ Nachteile
- Datenexplosion: Wenn eine kategoriale Variable viele verschiedene Werte hat (z. B. Länder oder IP-Adressen), führt OHE zu sehr vielen Spalten, was den Speicherverbrauch und die Rechenzeit erhöht.
- Sparsamkeitsproblem: Viele der generierten Spalten enthalten fast nur Nullen, was ineffizient ist.
Alternative: Label-Encoding vs. One-Hot-Encoding
Eine Alternative zum OHE ist das Label-Encoding, bei dem jede Kategorie eine eindeutige Zahl erhält (z. B. Rot = 0, Blau = 1, Grün = 2). Label-Encoding ist jedoch nur sinnvoll, wenn eine natürliche Ordnung in den Kategorien existiert (z. B. „Klein“, „Mittel“, „Groß“).
Fazit
One-Hot-Encoding ist eine essenzielle Technik für die Vorbereitung von kategorialen Daten in maschinellen Lernmodellen. Trotz einiger Nachteile bleibt es eine bewährte Methode, insbesondere wenn die Anzahl der Kategorien überschaubar ist. In Fällen mit vielen Kategorien können Methoden wie Target Encoding, Hashing Encoding oder Embeddings eine effizientere Alternative darstellen.