Caractéristiques des variables : La cardinalité

Les valeurs d’une variable catégorielle sont sélectionnées à partir d’un groupe de catégories, également appelées labels. Par exemple, dans la variable sexe, les catégories ou labels sont masculins et féminins, alors que dans la variable Ville, les labels peuvent être Montpellier, Le Lude, Grenoble, etc.

Les différentes variables catégorielles contiennent un nombre différent d’étiquettes ou de catégories. La variable “Sexe” ne contient que deux étiquettes, mais une variable comme “ville” ou “code postal” peut contenir un très grand nombre d’étiquettes différentes.

Le nombre d’étiquettes différentes dans une variable catégorielle est connu sous le nom de cardinalité. Un nombre élevé d’étiquettes dans une variable est connu sous le nom de cardinalité élevée.

La présence de plusieurs étiquettes dans une variable catégorielle pose-t-elle un problème ?

Une cardinalité élevée peut poser les problèmes suivants :

  • Les variables ayant trop d’étiquettes ont tendance à dominer celles qui n’en ont que quelques unes, en particulier dans les algorithmes basés sur l’arbre.

  • Un grand nombre d’étiquettes dans une variable peut introduire du bruit avec peu ou pas d’information, ce qui rend les modèles d’apprentissage machine enclins à se surajuster.

  • Certaines étiquettes peuvent n’être présentes que dans l’ensemble des données de formation, mais pas dans l’ensemble de test, ce qui fait que les algorithmes d’apprentissage automatique peuvent être trop adaptés à l’ensemble de formation.

  • Au contraire, certaines étiquettes peuvent n’apparaître que dans l’ensemble de test, laissant ainsi les algorithmes d’apprentissage automatique incapables d’effectuer un calcul sur la nouvelle observation (invisible).

En particulier, les méthodes arborescentes peuvent être biaisées vers des variables avec beaucoup d’étiquettes (variables à haute cardinalité). Ainsi, leurs performances peuvent être affectées par une cardinalité élevée.

Je montrerai ci-dessous l’effet de la haute cardinalité des variables sur les performances de différents algorithmes d’apprentissage machine, et comment une solution rapide pour réduire le nombre d’étiquettes, sans aucune sorte d’aperçu des données, contribue déjà à améliorer les performances.

 

Dans cette démo :

Nous ferons :

  • Apprendre à quantifier la cardinalité
  • Voir des exemples de variables à cardinalité élevée et faible
  • Comprendre l’effet de la cardinalité lors de la préparation des trains et des jeux d’essai
  • Visualiser l’effet de la cardinalité sur les performances du modèle d’apprentissage machine

Les variables catégorielles de cet ensemble de données sont hippodrome, idHippodrome, idJockey,idFerrure, idOeillere

Notez que M1 à M4 contiennent à la fois des lettres et des chiffres, ils peuvent donc être traités comme des variables mixtes. Pour cette démonstration, je les traiterai comme des variables catégorielles.

Alors que la variable idFerreur ne contient que 4 catégories, toutes les variables, comme prévu, contiennent un grand nombre d’étiquettes différentes (haute cardinalité). On peut remarquer aussi que la variable idOeillere ne comporte qu’une seule cardinalité. Cela indique qu’il y a tjs la même valeur dans la colonne. On pourra donc à l’avenir la supprimer

Pour démontrer l’effet de la haute cardinalité sur les performances de l’entrainement, des tests , je vais travailler avec la variable M1. Je vais créer une nouvelle variable avec une cardinalité réduite.

Réduisons maintenant la cardinalité de la variable. Comment ? Au lieu d’utiliser toute la valeur de la cabine, je vais supprimer la dernière lettre

Justification : la dernière lettre indique la spécialité de la dernière course. Le reste indique la position à l’arrivé

Nous avons réduit les différents label de 67 à 48. C’est pas mal mais on peut encore mieux faire. On peut changer les catégories des chevaux disqualifié ou pour le moins tout ceux qui ne sont pas dans le classement de l’arrivée.

Une cardinalité élevée entraîne une répartition inégale des catégories dans les ensembles d’entrainement et de test

Lorsqu’une variable est très cardinale, il arrive souvent que certaines catégories ne soient présentes que sur le jeu d’entraînement, ou seulement sur le jeu de test. Si elles ne sont présentes que dans l’ensemble de formation, elles peuvent conduire à un surajustement. Si elles ne sont présentes que sur le banc d’essai, l’algorithme d’apprentissage automatique ne saura pas comment les traiter, car il ne les a pas vues pendant la formation.

Il y a 14 categories de M1 présente dans l’ensemble d’entrainement et pas dans celui de test

Les variables à forte cardinalité ont tendance à avoir des valeurs (c’est-à-dire des catégories) présentes dans l’ensemble de formation, qui ne sont pas présentes dans l’ensemble de test, et vice versa. Cela entraîne des problèmes au moment de la formation (en raison d’un surajustement) et de la notation des nouvelles données (comment le modèle doit-il traiter les catégories non vues ?).

Ce problème est presque surmonté par la réduction de la cardinalité de la variable. Voir ci-dessous.

Observez comment, en réduisant la cardinalité, il n’y a plus que deux étiquettes dans l’ensemble d’entrainement qui ne sont pas présente dans l’ensemble de test.

Effet de la cardinalité sur les performances du modèle d’apprentissage machine

Afin d’évaluer l’effet des variables catégorielles dans les modèles d’apprentissage machine, je vais rapidement remplacer les catégories par des nombres. Voir ci-dessous.

Dans l’ensemble de test, il y a maintenant 4 valeurs manquantes pour la variable hautement cardinale. Ces valeurs ont été introduites lors de l’encodage des catégories en chiffres.

Comment ?

De nombreuses catégories n’existent que dans la série de tests. Ainsi, lorsque nous avons créé notre dictionnaire d’encodage en utilisant uniquement la série de trains, nous n’avons pas généré de nombre pour remplacer les étiquettes présentes uniquement dans la série de tests. Par conséquent, elles ont été encodées en tant que NaN. Nous verrons dans les prochains cahiers comment résoudre ce problème. Pour l’instant, je vais remplir ces valeurs manquantes avec 0.

De ce qui précède, nous constatons immédiatement que sur les 67 cabines originales de l’ensemble de données, seules 63 sont présentes dans l’ensemble de formation.

Allons de l’avant et évaluons l’effet des étiquettes dans les algorithmes d’apprentissage machine.

 

Random Forests

Nous observons que les performances des Random Forests sur le banc d’entraînement sont tout à fait supérieures à celles du banc d’essai. Cela indique que le modèle est sur entrainé, ce qui signifie qu’il fait un excellent travail de prédiction du résultat sur l’ensemble de données sur lequel il a été formé, mais qu’il n’a pas la puissance nécessaire pour généraliser la prédiction sur de nouvelles données.

Nous pouvons maintenant constater que les Random Forests ne sont plus trop adaptées à l’entraînement. En outre, le modèle est bien meilleur pour généraliser les prédictions (comparer le roc-auc de ce modèle sur l’ensemble de test et le roc-auc du modèle ci-dessus également sur l’ensemble de test : 0,57 contre 0,61).

Je voudrais souligner que nous pouvons probablement surmonter l’effet de la cardinalité élevée en ajustant les hyperparamètres des forêts aléatoires. Cela dépasse le cadre de ce cours. Ici, je veux vous montrer qu’avec un même modèle, avec des hyperparamètres identiques, une cardinalité élevée peut entraîner un surajustement du modèle.

 

AdaBoost

Entre les deux modèles on ne voit pas de différences flagrantes

 

Logistic Regression

On peut voir une légère amélioration sur le test

 

Gradient Boosted Classifier

 

Les arbres Gradient Boosted sont en effet trop adaptés à l’ensemble de formation dans les cas où la variable M1 a beaucoup d’étiquettes. C’était prévisible, car les méthodes d’arborescence ont tendance à être biaisées en faveur de variables comportant de nombreuses catégories.

D’une manière générale, vous vous rendrez compte que travailler sur des vrais données de turf, est toujours assez frustrant par rapport à des données plus usuelles. En effet, on a une part d’incertitude beaucoup plus importante que sur d’autres jeux de données.
Après c’est aussi ce qui fait l’interêt de travailler sur de tels jeux de données.

Si vous voulez découvrir comment fonctionne la librairie pandas ou bien l’environnement Jupyter, n’hésitez pas à consulter les cours ci-dessous.

GCH anime

Je télécharge mon guide gratuit

.

Vous recevrez votre guide par email sans aucun engagement de votre part.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.