Einleitung: Warum kategorische Variablen in Entscheidungsbäumen wichtig sind

Entscheidungsbaummodelle gehören zu den interpretierbarsten Algorithmen für maschinelles Lernen, was sie zur Wahl für Klassifizierungs- und Regressionsaufgaben in Bereichen wie Finanzen, Gesundheitswesen und Marketing macht. Ihre transparenten Entscheidungsregeln ermöglichen es den Stakeholdern zu verstehen, warum eine Vorhersage gemacht wird. Die Leistung und Zuverlässigkeit eines Entscheidungsbaums hängt jedoch stark davon ab, wie kategorische Variablen vorverarbeitet werden. Kategorische Daten - Werte wie country, produkttyp oder Kundensegment - können nicht direkt in die meisten Baumalgorithmen ohne richtige Kodierung eingespeist werden. Ein naiver Ansatz kann Verzerrungen einführen, den Rechenaufwand erhöhen oder sogar die Fähigkeit des Modells stören, sinnvolle Splits zu erfassen. Dieser Artikel bietet einen umfassenden Leitfaden zum Umgang mit kategorischen Variablen in Entscheidungsbaummodellen, einschließlich Kodierungstechniken, nativer Algorithmusunterstützung und Best Practices, um robuste, leistungsstarke Modelle zu erstellen.

Kategorische Variablen verstehen

Kategorische Variablen stellen Daten dar, die eine begrenzte, feste Anzahl möglicher Werte annehmen können.

  • Nennvariablen – Kategorien ohne intrinsische Ordnung (z.B. Farbe: rot, blau, grün; Stadt: New York, London, Tokio).
  • Ordinalvariablen – Kategorien mit einer klaren, sinnvollen Reihenfolge (z. B. Bildungsniveau: High School, Bachelor, Master, Doktorat; Zufriedenheit: niedrig, mittel, hoch).

Die Unterscheidung ist deshalb von entscheidender Bedeutung, weil jeder Typ eine andere Kodierungsstrategie benötigt, um die der Bestellung innewohnenden Informationen zu erhalten. Entscheidungsbäume behandeln Merkmale von Natur aus so, als wären sie kontinuierlich, indem sie Split-Schwellenwerte auswerten; bei kategorischen Merkmalen ohne Kodierung kann der Baum nur binäre Aufteilungen durchführen, je nachdem, ob eine Kategorie vorhanden ist oder nicht (bei Verwendung eines Hot-Codes) oder ganzzahlige Etiketten wie bestellt behandeln (bei Verwendung von Label-Codierung).

Gemeinsame Kodierungsmethoden

Es gibt mehrere Kodierungstechniken, die jeweils Kompromisse in Bezug auf Dimensionalität, Interpretierbarkeit und Kompatibilität mit Entscheidungsbaumalgorithmen aufweisen.

Kennzeichnungscodierung (Ordinal Encoding)

Die Etikettencodierung weist jeder Kategorie eine eindeutige Ganzzahl zu, typischerweise 0, 1, 2,... für K-Kategorien. Diese Methode ist einfach und speichereffizient, da sie die Anzahl der Merkmale nicht erhöht. Sie impliziert jedoch eine künstliche Ordnungsbeziehung, die einen Entscheidungsbaum irreführen kann. Zum Beispiel könnte ein Baum lernen, dass der Split education level >= 2 “Master” von “Bachelor” trennt, was für ordinale Daten gilt.

Wenn Sie: verwenden, nur für ordinale kategorische Merkmale, bei denen die ganzzahlige Reihenfolge die wahre Hierarchie widerspiegelt. Viele scikit-learn-Implementierungen erfordern, dass Sie die richtige Reihenfolge manuell durch ein Mapping angeben oder mit einer vordefinierten Kategorienliste verwenden.

One-Hot Encoding

Die One-Hot-Codierung erzeugt K binäre Dummy-Variablen, die jeweils das Vorhandensein (1) oder das Fehlen (0) einer Kategorie repräsentieren. Diese Methode eliminiert jegliche künstliche Ordnung und ist im Allgemeinen für nominale Daten sicher. Die meisten Entscheidungsbaumbibliotheken, einschließlich der FLT: 1 von scikit-learn, funktionieren gut mit One-Hot-Features, da Splits einfache Tests sind "Ist Kategorie vorhanden?"

Rückschläge: Es leidet unter dem ]Fluch der Dimensionalität, wenn K groß ist. Eine Spalte mit 1000 eindeutigen Werten wird den Feature-Raum um 999 Spalten aufblähen, was die Speichernutzung und die Trainingszeit erhöht. Darüber hinaus kann eine einmalige Codierung zu Datensparsität führen, die die Leistung für sehr tiefe Bäume beeinträchtigen kann.

Praktische Spitze: One‐hot encoding only after splitting the data in training and test sets to avoid data leak. Drop one category (use in pandas get dummies) for linear models, but for decision trees keep all K columns is usually fine because the tree will treat them independent.

Frequenz/Zielkodierung

Die Frequenzkodierung ersetzt jede Kategorie durch ihre Anzahl (oder relative Häufigkeit) im Trainingssatz, die Zielkodierung ersetzt Kategorien durch den Mittelwert der Zielvariablen für diese Kategorie (oder eine geglättete Version). Diese Methoden sind bei Merkmalen mit hoher Kardinalität beliebt, weil sie eine Erweiterung der Merkmalsmatrix vermeiden.

Warnung: Zielcodierung leckt Informationen über das Ziel in das Feature, was zu einer starken Überanpassung führen kann, wenn es nicht mit Cross-Validation oder Glättung gehandhabt wird. LightGBM und CatBoost bieten eine integrierte Zielcodierung mit Regularisierung, die dieses Risiko mindert. Verwenden Sie für andere Bibliotheken einen separaten Hold-Out-Satz oder wenden Sie ein Cross-Validierungsschema an, um die Zielmittel zu berechnen.

Die Frequenzkodierung leckt das Ziel nicht, sondern verliert die Korrelation zwischen Kategorie und Ziel. Sie funktioniert am besten, wenn die Frequenz selbst prädiktiv ist (z. B. seltene Kategorien zeigen Ausreißerverhalten an).

Binäre Kodierung

Die binäre Kodierung konvertiert zunächst Kategorien in Ganzzahl-Etiketten (0 bis K-1), stellt dann jede Ganzzahl in binärer Form dar und erstellt neue log2(K)-Spalten. Es ist ein Kompromiss zwischen einer Heiß- und einer Etikettenkodierung: Sie erzeugt weniger Merkmale als eine Heiße, aber weniger interpretierbare Splits. Einige Praktiker finden sie für Merkmale mit hoher Kardinalität in baumbasierten Modellen effektiv.

Hashing-Encoding

Feature Hashing (oder der Hashing-Trick) wendet eine Hash-Funktion auf jede Kategorie an und nimmt den Modulo der Anzahl der Ausgabefächer an. Dies kann die Dimensionen drastisch reduzieren und ist nützlich, wenn die Anzahl der Kategorien riesig ist (z. B. IP-Adressen). Kollisionen (verschiedene Kategorien, die auf denselben Datenträger abgebildet werden) können jedoch die Modellqualität beeinträchtigen. Es ist selten die erste Wahl für Entscheidungsbäume, es sei denn, die Speicherbeschränkungen sind schwerwiegend.

Native Unterstützung in Decision Tree Libraries

Moderne Bibliotheken, die den Gradienten erhöhen, haben eine native kategorische Handhabung entwickelt, die oft die manuelle Kodierung übertrifft.

scikit‐learn (DecisionTree / RandomForest / GradientBoosting)

scikit‐learn übernimmt not nativ kategorische Merkmale. Alle Eingaben müssen numerisch sein. Sie müssen kategorische Variablen codieren, bevor Sie sie in das Modell einspeisen. Neuere Versionen (≥0.24) haben und eingeführt, die kategorische Merkmale direkt über den Parameter akzeptieren – dies ist jedoch auf die histogrammbasierte Implementierung beschränkt. Für klassische DecisionTree und RandomForest ist noch eine manuelle Kodierung erforderlich.

scikit‐learn OrdinalEncoder Dokumentation

LightGBM

LightGBM hat eine ausgezeichnete native Unterstützung für kategorische Features. Sie deklarieren das Feature einfach als (oder verwenden den Parameter. Intern verwendet es einen Algorithmus, der Kategorien basierend auf der Gradientenstatistik des Ziels gruppiert und optimale Splits ohne eine heiße Erweiterung findet. Dies ist sowohl schnell als auch speichereffizient, insbesondere für Spalten mit hoher Kardinalität.

LightGBM kategorische Feature-Unterstützung

CatBoost

CatBoost wurde speziell für den optimalen Umgang mit kategorischen Merkmalen entwickelt. Es wendet die geordnete Zielkodierung an mit einem Permutationsansatz an, der das Austreten von Zielen und das Überpassen von Zielen reduziert. Standardmäßig behandelt CatBoost alle Merkmale als numerisch, sofern sie nicht explizit über als kategorisch gekennzeichnet sind. Es unterstützt auch kategorische Zielvorgaben in Text und mehreren Klassen. Der Umgang mit Kategorien ist oft der manuellen Kodierung überlegen, insbesondere bei kleinen Datensätzen.

CatBoost kategorische Features Dokumentation

XGBoost

Ab Version 1.6 führte XGBoost die experimentelle Unterstützung für kategorische Merkmale über den Parameter und das ein. Es verwendet einen Split-basierten Ansatz ähnlich wie LightGBM. Die Implementierung ist jedoch noch ausgereift; viele Praktiker verwenden weiterhin manuelle Kodierung mit XGBoost.

Die Wahl der richtigen Encoding-Strategie

Die Auswahl einer Kodierungsmethode hängt von mehreren Faktoren ab:

  • Kardinalität – Für niedrige kardinale Merkmale (≤10 Kategorien) ist eine einmalige Codierung einfach und effektiv. Für moderate Kardinalität (10-100) ist eine binäre Codierung oder Zielkodierung in Betracht zu ziehen. Für hohe Kardinalität (>100) nutzen Sie native Unterstützung (LightGBM / CatBoost) oder Frequenz / Zielkodierung.
  • Modellbibliothek – Wenn Sie bereits CatBoost oder LightGBM verwenden, lassen Sie die Bibliothek Kategorien behandeln.
  • Ordinal-Features sollten ordinal codieren. Label-Codierung ohne Erhaltung der Ordnung ist riskant für nominale Daten.
  • Interpretierbarkeit – Ein-hot-codierte Features erzeugen transparente Splits (z. B. ). Binär- oder Zielcodierung reduziert die Interpretierbarkeit, die für prädiktionsorientierte Aufgaben akzeptabel sein kann, aber nicht für regulatorische Anforderungen.
  • Baumtiefe und Overfitting – Zielkodierung kann zu Überfitting führen, wenn sie nicht regularisiert wird; One-Hot-Codierung kann zu sehr flachen Splits für seltene Kategorien führen. Cross-Validation und Hyperparameter-Tuning werden mit anspruchsvollen Codierungen wichtiger.

Umgang mit hochkardinalen Merkmalen

Kategorische Merkmale mit hoher Kardinalität (z. B. ZIP-Codes, Benutzer-IDs, Produkt-IDs) sind notorisch schwierig. Traditionelle One-Hot-Codierung erzeugt Tausende von Dummy-Spalten, von denen viele in nur wenigen Zeilen erscheinen.

  • Erhöhen Sie die Speichernutzung und die Trainingszeit dramatisch.
  • Verursachen Sie, dass sich der Baum auf seltene Kategorien aufteilt, die nicht verallgemeinern.
  • Machen Sie das Modell empfindlich auf neue Kategorien, die in der Produktion erscheinen (wenn nicht mit einem "unbekannten" Catch-All behandelt).

Lösungen umfassen:

  1. Zielcodierung mit Glättung – Ersetzen Sie jede Kategorie durch den Zielmittelwert, aber verkleinern Sie die Schätzungen für kleine Kategorien auf den globalen Mittelwert.
  2. Frequenzcodierung – Verwenden Sie die Anzahl jeder Kategorie als numerisches Merkmal. Dies funktioniert oft gut mit Baummodellen, da häufige Kategorien eher zuverlässige Prädiktoren sind.
  3. Feature Hashing – Kartenkategorien zu einer festen Anzahl von Bins (z.B. 2^16) mit einer Hash-Funktion. Dies ist eine praktische Wahl für sehr hohe Kardinalität, kann aber Lärm von Kollisionen einführen.
  4. Seltene Kategorien gruppieren – Kombinieren Sie alle Kategorien, die weniger als, sagen wir, 5 Mal erscheinen, in einer einzigen “anderen” Gruppe.
  5. Mit baumspezifischen Methoden – Bibliotheken wie LightGBM können Kardinalitäten bis zu mehreren Tausend effizient handhaben, ohne die Feature-Matrix zu explodieren, weil sie lernen, Kategorien intern zu gruppieren.

Auswirkungen auf die Modellleistung und Interpretierbarkeit

Die Kodierungsmethode beeinflusst direkt sowohl die Genauigkeit als auch die Interpretierbarkeit von Entscheidungsbäumen. Zum Beispiel führt eine einmalige Kodierung zu Splits, die leicht zu erklären sind: "Wenn die Besetzung 'Ingenieur' ist, dann verzweigt man nach links." Im Gegensatz dazu kann die Etikettenkodierung Splitbedingungen wie "Belegung >= 3.5" erzeugen, was bedeutungslos ist, es sei denn, die Etiketten entsprechen einer wahren Ordnung. Die Struktur des Baumes kann weniger intuitiv werden.

Aus Performance-Perspektive kann die Auswahl verändern, welche Variablen als Root-Splits ausgewählt werden. Eine fehlerhafte Codierung kann dazu führen, dass der Baum Merkmale bevorzugt, die häufiger auftreten oder eine höhere Varianz in kodierten Werten aufweisen, was zu suboptimalen Splits führt. Experimente haben gezeigt, dass die Verwendung der korrekten ordinalen Codierung (z. B. Zuordnung von education level zu 0,1,2,3) die Genauigkeit gegenüber einer einfachen Label-Codierung auf ordinalen Merkmalen durchweg verbessert.

Forschungsergebnisse: Eine Studie aus dem Jahr 2020, in der Codierungsmethoden für Gradienten-verstärkte Bäume verglichen wurden, ergab, dass die eingebaute kategorische Handhabung von CatBoost den niedrigsten Generalisierungsfehler in einer Vielzahl von Datensätzen erreichte, gefolgt von einer Zielkodierung mit Kreuzvalidierung, während eine heiße Codierung nur für sehr geringe Kardinalität am besten abschnitt.

Praktische Tipps und Best Practices

  • Immer vor der Kodierung aufgeteilt – Codierungsstatistiken (z. B. Zielmittel, Frequenzen) nur für den Trainingssatz berechnen, dann die gleichen Zuordnungen auf den Testsatz anwenden.
  • Verwenden Sie eine Pipeline – Kombinieren Sie und Encoder zu einem , um Datenlecks zu vermeiden und die Cross-Validierung zu vereinfachen.
  • Nach nicht sichtbaren Kategorien suchen – In der Produktion können neue Kategorien erscheinen. Entscheiden Sie sich für eine Strategie: Ignorieren (Drop), Zuordnung zu einem speziellen "unbekannten" Wert oder Halten Sie ein Fallback (z. B. globaler Mittelwert für die Zielkodierung).
  • Testen Sie mehrere Codierungen – Die beste Methode hängt vom Datensatz ab. Führen Sie ein kleines Kreuzvalidationsexperiment durch, in dem Sie die Codierung mit einer Heiß-, Etiketten-, Frequenz- und Zielcodierung (mit korrekter Kreuzvalidierung) auf einem Validierungssatz vergleichen.
  • Native Unterstützung wenn möglich nutzen – Wenn Sie die Modellbibliothek frei wählen können, wählen Sie CatBoost oder LightGBM, um manuelle Kodierungs-Kopfschmerzen zu vermeiden, insbesondere bei Funktionen mit hoher Kardinalität.
  • Achte auf die Etikettencodierung für nominale Daten – Es schadet fast immer der Leistung. Wenn Sie die Etikettencodierung verwenden müssen (z. B. aufgrund von Speicherbeschränkungen), stichprobenartig zumindest die Etikettenzuweisung, um den falschen Ordnungseffekt zu reduzieren.
  • Bin oder Gruppe seltene Kategorien – Eine gute Faustregel: Kombinieren Sie Kategorien, die in weniger als 1% der Trainingsdaten erscheinen, in einer einzigen Gruppe.
  • Achten Sie auf Datenlecks bei der Zielcodierung – Verwenden Sie immer Cross-Validation oder separate Folds, um die Zielmittel zu berechnen, oder verwenden Sie Bibliotheken, die die Ordnung implementieren (wie CatBoost). Durchgesickerte Zielcodierung kann zu einer zu optimalen Leistung bei der Validierung und einer schlechten Generalisierung führen.

Schlussfolgerung

Kategorische Variablen sind ein grundlegender Bestandteil vieler realer Datensätze. Während Entscheidungsbaummodelle robust und interpretierbar sind, hängt ihr Erfolg von der korrekten Erstellung kategorieller Merkmale ab. Dieser Artikel behandelt die wichtigsten Kodierungsstrategien - Label, One-Hot, Frequenz, Ziel, Binär und Hashing - sowie die nativen Fähigkeiten beliebter baumbasierter Bibliotheken. Die wichtigsten Erkenntnisse sind:

  • Passen Sie die Kodierung dem Variablentyp (ordinal vs. nominal) an.
  • Für Funktionen mit hoher Kardinalität bevorzugen Sie die Zielkodierung mit Regularisierung oder verwenden Sie Bibliotheken mit eingebauter kategorieller Unterstützung.
  • Vermeiden Sie Datenlecks, indem Sie nur auf Trainingsdaten Codierungen berechnen.
  • Experimentieren Sie mit verschiedenen Methoden mit Cross-Validierung, um die beste Konfiguration für Ihren spezifischen Datensatz zu finden.

Durch den sorgfältigen Umgang mit kategorischen Variablen können Sie das volle Potenzial von Entscheidungsbaummodellen freisetzen und eine bessere prädiktive Genauigkeit erzielen, während die Interpretierbarkeit erhalten bleibt, die Bäume so wertvoll macht.