Introduction : Pourquoi les variables catégoriques comptent dans les arbres décisionnels

Les modèles d'arbre de décision sont parmi les algorithmes d'apprentissage automatique les plus interprétables, ce qui en fait un choix de classification et de régression dans des domaines comme la finance, la santé et le marketing. Leurs règles de décision transparentes permettent aux intervenants de comprendre pourquoi une prédiction est faite. Cependant, la performance et la fiabilité d'un arbre de décision dépendent fortement de la façon dont les variables catégoriques sont prétraitées.Les données catégoriques—valeurs comme pays, type de produit[, ou segment du client[—ne peuvent pas être directement introduites dans la plupart des algorithmes d'arbre sans codage approprié.Une approche naïve peut introduire des biais, augmenter les frais généraux de calcul, voire perturber la capacité du modèle à capturer des fractions significatives.

Comprendre les variables catégoriques

Les variables catégoriques représentent des données qui peuvent prendre un nombre limité et fixe de valeurs possibles. Elles se répartissent en deux types principaux:

  • Variables nominales – catégories sans ordre intrinsèque (p. ex., couleur: rouge, bleu, vert; ville: New York, Londres, Tokyo).
  • – catégories avec un ordre clair et significatif (p. ex., niveau d'éducation : lycée, baccalauréat, maîtrise, doctorat; satisfaction : faible, moyen, élevé).

La distinction est essentielle car chaque type nécessite une stratégie d'encodage différente pour préserver les informations inhérentes à l'ordre. Les arbres de décision traitent intrinsèquement les caractéristiques comme si elles étaient continues en évaluant les seuils de fractionnement; pour les caractéristiques catégoriques sans encodage, l'arbre ne peut effectuer que des scissions binaires en fonction de la présence ou non d'une catégorie (lorsqu'il utilise un seul feu) ou traiter les étiquettes entières comme ordonnées (lorsqu'il utilise l'encodage des étiquettes).

Méthodes communes de codage

Plusieurs techniques d'encodage existent, chacune avec des compromis en termes de dimensionnalité, d'interprétation et de compatibilité avec les algorithmes des arbres de décision.

Encodage d'étiquette (encodage ordinaire)

L'encodage des étiquettes attribue un entier unique à chaque catégorie, généralement 0, 1, 2,... pour les catégories K. Cette méthode est simple et efficace en mémoire parce qu'elle n'augmente pas le nombre de fonctionnalités. Cependant, elle implique une relation ordinale artificielle qui peut induire en erreur un arbre de décision. Par exemple, un arbre peut apprendre que la scission education level >= 2 sépare -master-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-

Quand utiliser: Seulement pour les caractéristiques de catégorie ordinales où l'ordre entier reflète la vraie hiérarchie. De nombreuses implémentations scikit-learn vous obligent à fournir l'ordre correct manuellement par un mapping, ou à utiliser avec une liste de catégories prédéfinie.

Encodage à une seule tête

L'encodage à une seule chaleur crée des variables binaires de type K représentant chacune la présence (1) ou l'absence (0) d'une catégorie. Cette méthode élimine toute commande artificielle et est généralement sûre pour les données nominales. La plupart des bibliothèques d'arborescence de décision, y compris les scikit-learns , fonctionnent bien avec des fonctions à une chaleur parce que les scissions sont simples -est-ce que les tests sont présents ?

Drawbacks:[ Il souffre de la malédiction de dimensionnalité lorsque K est grand. Une colonne avec 1000 valeurs uniques gonflera l'espace de la fonction par 999 colonnes, augmentant l'utilisation de la mémoire et le temps d'entraînement. De plus, un codage à chaud peut conduire à une sparté des données, qui peut dégrader les performances pour les arbres très profonds.

Conseil pratique: Un seul code chaud après avoir divisé les données en ensembles d'entraînement et de test pour éviter les fuites de données. Déposez une catégorie (utiliser dans pandas get dummies) pour les modèles linéaires, mais pour les arbres de décision, garder toutes les colonnes K est généralement bien parce que l'arbre les traitera indépendamment.

Encodage de la fréquence/cible

L'encodage de fréquence remplace chaque catégorie par son nombre (ou sa fréquence relative) dans l'ensemble d'entraînement. L'encodage de cible remplace les catégories par la moyenne de la variable cible pour cette catégorie (ou une version lissée).

Avertissement: L'encodage de la cible fuit les informations sur la cible dans la fonction, ce qui peut causer un surajustement sévère si elle n'est pas manipulée avec une validation croisée ou un lissage. LightGBM et CatBoost offrent un encodage de cible intégré avec une régularisation qui réduit ce risque.

L'encodage de fréquence ne fuit pas la cible, mais perd la corrélation entre la catégorie et la cible. Il fonctionne mieux lorsque la fréquence elle-même est prédictive (par exemple, les catégories rares indiquent un comportement aberrant).

Encodage binaire

Le codage binaire convertit d'abord les catégories en étiquettes entières (0 à K‐1) et représente ensuite chaque entier sous forme binaire, créant de nouvelles colonnes log2(K). C'est un compromis entre le codage à une seule chaleur et le codage à une étiquette : il produit moins de fonctionnalités qu'un seul chaud mais moins de fractions interprétables.

Codage hoche

Le hachage des caractéristiques (ou le hachage) applique une fonction de hachage à chaque catégorie et prend le modulo du nombre de bacs de sortie. Cela peut réduire considérablement les dimensions et est utile lorsque le nombre de catégories est énorme (par exemple, adresses IP). Cependant, les collisions (différentes catégories mapping to the meme bin) peuvent dégrader la qualité du modèle.

Soutien autochtone dans les bibliothèques d'arbres décisionnels

Les bibliothèques modernes de stimulation des gradients ont développé des manipulations natives catégoriques qui surpassent souvent l'encodage manuel. Comprendre ce que chaque bibliothèque offre peut gagner du temps et améliorer la précision.

scikit-learn (Tree de décision / RandomForest / GradientBoosting)

Toutes les entrées doivent être numériques. Vous devez coder des variables catégoriques avant de les alimenter dans le modèle. Cependant, les versions récentes (≥0.24) ont introduit et qui acceptent des fonctionnalités catégoriques directement via le paramètre – mais cela se limite à l'implémentation basée sur l'histogramme. Pour les versions classiques de DecisionTree et RandomForest, un encodage manuel est toujours nécessaire.

scikit-apprendre la documentation de l'encodeur Ordinal

LumièreGBM

LightGBM possède un excellent support natif pour les caractéristiques catégoriques. Vous déclarez simplement la fonctionnalité comme (ou utilisez le paramètre . En interne, elle utilise un algorithme qui regroupe des catégories basées sur les statistiques de gradient de cible, en trouvant des scissions optimales sans expansion d'une seule chaleur.

LightGBM support de caractéristiques catégoriques

Booste de chat

CatBoost est spécialement conçu pour gérer de manière optimale les caractéristiques catégoriques. Il s'applique encodage de cible ordonné avec une approche basée sur la permutation qui réduit les fuites et les surajustements de cible. Par défaut, CatBoost traite toutes les fonctionnalités comme numériques, à moins qu'elles ne soient explicitement marquées comme catégoriques via . Il supporte également les cibles catégoriques texte et multi-classes.

CatBoost documentation des caractéristiques catégoriques

XGBoost

Depuis la version 1.6, XGBoost introduit un support expérimental pour les caractéristiques catégorisées via le paramètre et l'argument . Il utilise une approche scindée semblable à LightGBM. Cependant, l'implémentation est encore en maturation; de nombreux praticiens continuent d'utiliser l'encodage manuel avec XGBoost.

Choisir la bonne stratégie d'encodage

La sélection d'une méthode d'encodage dépend de plusieurs facteurs :

  • Cardinalité – Pour les caractéristiques nominales de faible cardinalité (de 10 catégories), l'encodage à une chaleur est simple et efficace. Pour la cardinalité modérée (10–100), envisager l'encodage binaire ou l'encodage de cible.
  • La bibliothèque modèle – Si vous utilisez déjà CatBoost ou LightGBM, laissez la bibliothèque gérer les catégories. Pour scikit‐apprendre, vous devez coder manuellement.
  • Ordre des catégories – Les caractéristiques ordinales doivent utiliser l'encodage ordinal. L'encodage des étiquettes sans préserver l'ordre est risqué pour les données nominales.
  • Interprétabilité – Des caractéristiques codées à une seule chaleur produisent des fractions transparentes (p. ex. ). L'encodage binaire ou ciblé réduit l'interpretation, ce qui peut être acceptable pour les tâches axées sur la prévision, mais non pour les exigences réglementaires.
  • Profondeur d'arbre et sur-ajustement[ – L'encodage de la cible peut causer un surajustement si ce n'est pas régularisé; l'encodage à une chaleur peut entraîner des fractions très peu profondes pour les catégories rares.

Manipulation des fonctionnalités haute cardinalité

Les caractéristiques catégoriques de haute cardinalité (p. ex. codes ZIP, identifiants d'utilisateur, identifiants de produits) sont notoirement difficiles. L'encodage traditionnel à chaud crée des milliers de colonnes factices, dont beaucoup ne figurent que dans quelques lignes.

  • Augmentez de façon spectaculaire l'utilisation de la mémoire et le temps d'entraînement.
  • Faire fractionner l'arbre sur des catégories rares qui ne généralisent pas.
  • Sensibiliser le modèle aux nouvelles catégories qui apparaissent dans la production (si elles ne sont pas traitées avec un -take‐all inconnu).

Les solutions comprennent:

  1. Encodage de cible avec lissage[ – Remplacer chaque catégorie par la moyenne cible, mais réduire les estimations pour les petites catégories vers la moyenne globale. CatBoost , encodage de cible ordonné est une implémentation robuste.
  2. Encodage fréquent – Utilisez le nombre de chaque catégorie comme une fonction numérique. Cela fonctionne souvent bien avec les modèles d'arbres parce que les catégories fréquentes sont plus susceptibles d'être des prédicteurs fiables.
  3. Hashing de caractéristiques – Catégories de cartes à un nombre fixe de bacs (par exemple, 2^16) utilisant une fonction de hachage. C'est un choix pratique pour une cardinalité très élevée, mais peut introduire le bruit des collisions.
  4. Grouper des catégories rares – Combiner toutes les catégories qui apparaissent moins, disons, 5 fois en un seul groupe -"autre". Cela réduit la cardinalité et stabilise le modèle.
  5. Utilisation de méthodes spécifiques à l'arbre – Des bibliothèques comme LightGBM peuvent gérer efficacement les cardinalités jusqu'à plusieurs milliers sans exploser la matrice de fonctionnalités parce qu'elles apprennent à regrouper les catégories en interne.

Impact sur le rendement et l'interprétation des modèles

La méthode d'encodage affecte directement à la fois la précision et l'interprétabilité des arbres de décision. Par exemple, l'encodage à une chaleur produit des fractions faciles à expliquer : -si l'occupation est « moteur » puis branche gauche. - En revanche, l'encodage d'étiquette peut produire des conditions de fractionnement comme -occupation >= 3,5, , , ce qui est sans signification si les étiquettes ne correspondent pas à un ordre réel.

D'un point de vue de la performance, le choix peut modifier les variables sélectionnées comme scissions de racine. L'encodage incorrect peut faire en sorte que l'arbre favorise les fonctionnalités qui apparaissent plus fréquemment ou qui présentent une plus grande variance dans les valeurs codées, ce qui entraîne des scissions sous-optimales. Des expériences ont montré que l'utilisation de l'encodage ordinal correct (p. ex., la cartographie de niveau education education à 0,12,3) améliore systématiquement la précision par rapport à l'encodage simple de l'étiquette sur les fonctionnalités ordinales.

Resultats de la recherche:[ Une étude de 2020 comparant les méthodes d'encodage pour les arbres en pente a révélé que CatBoost , dans la manipulation catégorique, a obtenu l'erreur de généralisation la plus faible pour une variété de ensembles de données, suivie d'un encodage cible avec validation croisée, tandis que l'encodage à une chaleur n'a donné de meilleurs résultats que pour une carcilitarité très faible.

Conseils pratiques et pratiques exemplaires

  • Splited always before encoding – Calculer les statistiques d'encodage (p. ex., les moyennes cibles, les fréquences) sur l'ensemble de formation seulement, puis appliquer les mêmes mappages à l'ensemble de test. Ne jamais utiliser l'ensemble de données pour calculer les encodages.
  • Utilisez un pipeline[ – Dans le scikit‐apprendre, combinez et encodeurs dans un pour éviter les fuites de données et simplifier la validation croisée.
  • Check for unseen category – Dans la production, de nouvelles catégories peuvent apparaître. Décider d'une stratégie : ignorer (drop), map to a special --unknown, or keep a fallback (p. ex., moyenne globale pour l'encodage de la cible).
  • Testez plusieurs encodages – La meilleure méthode dépend de l'ensemble de données. Exécutez une petite expérience de validation croisée comparant un encodage chaud, une étiquette, une fréquence et une cible (avec une validation croisée appropriée) sur un ensemble de validation.
  • Leverage native support si possible – Si vous êtes libre de choisir la bibliothèque de modèles, choisissez CatBoost ou LightGBM pour éviter les maux de tête encodant manuellement, en particulier avec des fonctionnalités de haute cardinalité.
  • Soyez prudents quant à l'encodage de l'étiquette pour les données nominales – Il nuit presque toujours aux performances. Si vous devez utiliser l'encodage de l'étiquette (p. ex., en raison de contraintes de mémoire), au moins randomisez l'attribution de l'étiquette pour réduire l'effet de commande fallacieux.
  • Catégories rares de dix ou de groupe[ – Une bonne règle de base : combiner les catégories qui apparaissent dans moins de 1 % des données d'entraînement en un seul groupe, ce qui réduit le bruit et stabilise le modèle.
  • – Veillez à détecter les fuites de données dans l'encodage de la cible – Utilisez toujours la validation croisée ou des plis séparés pour calculer les moyens de la cible, ou utilisez des bibliothèques qui implémentent l'ordre (comme CatBoost).

Conclusion

Bien que les modèles d'arborescence de décision soient robustes et interprétables, leur succès dépend de la bonne préparation des caractéristiques catégoriques. Cet article a couvert les principales stratégies d'encodage – label, fréquence, cible, binaire et hachage – ainsi que les capacités natives des bibliothèques populaires basées sur les arbres. Les principaux choix sont les suivants :

  • Correspond au type de variable (ordinaire ou nominale).
  • Pour les fonctions de haute cardinalité, préférez l'encodage de cible avec régularisation ou utilisez des bibliothèques avec un support catégorique intégré.
  • Éviter les fuites de données en calculant les codages uniquement sur les données de formation.
  • Expérimentez avec différentes méthodes en utilisant la validation croisée pour trouver la meilleure configuration pour votre ensemble de données spécifique.

En manipulant avec soin les variables catégoriques, vous pouvez libérer tout le potentiel des modèles d'arbres de décision, en obtenant une meilleure précision prédictive tout en maintenant la capacité d'interprétation qui rend les arbres si précieux.