Dans les cahier précédents, nous avons appris comment convertir une étiquette en un nombre, en utilisant un codage à chaud, en remplaçant par un chiffre ou en remplaçant par la fréquence ou le nombre d’observations. Ces méthodes sont simples, ne font (presque) pas d’hypothèses et fonctionnent généralement bien dans différents scénarios.
Il existe cependant des méthodes qui nous permettent de saisir des informations tout en prétraitant les étiquettes des variables catégorielles. Ces méthodes comprennent :
- Ordonner les étiquettes en fonction de la cible
- Remplacement des étiquettes par la moyenne cible (codage de la moyenne / codage de la cible)
- Remplacement des étiquettes par le rapport de probabilité de l’objectif étant 1 ou 0
- Poids de la preuve.
Toutes les méthodes ci-dessus ont un point commun :
- l’encodage est guidé par la cible, et
- ils créent une relation monotone entre la variable et la cible.
Monotonicité
Une relation monotone est une relation qui fait l’une des choses suivantes :
- (1) lorsque la valeur d’une variable augmente, la valeur de l’autre variable augmente également ; ou
- (2) à mesure que la valeur d’une variable augmente, la valeur de l’autre variable diminue.
Dans ce cas, plus la valeur de la variable indépendante (prédicteur) augmente, plus la valeur cible augmente, ou inversement, plus la valeur de la variable augmente, plus la valeur cible diminue.
Avantages des codages guidés par la cible
- Saisir des informations dans la catégorie, ce qui permet de créer des caractéristiques plus prédictives
- Créer une relation monotone entre la variable et la cible, donc adaptée aux modèles linéaires
- Ne pas étendre l’espace de la rubrique
Limitations
- Tendance à provoquer un sur-ajustement
- Difficile de faire une validation croisée avec les bibliothèques actuelles
Note
Les méthodes abordées dans ce notebook et dans les trois suivants peuvent également être utilisées sur des variables numériques, après discrétisation. Cela crée une relation monotone entre la variable numérique et la cible, et améliore donc les performances des modèles linéaires. Je reviendrai plus en détail sur ce sujet dans la section “Discrétisation”.
===============================================================================
Encodage des entiers ordonnés
Ordonner les catégories en fonction de la cible signifie attribuer un numéro à la catégorie de 1 à k, où k est le nombre de catégories distinctes dans la variable, mais cette numérotation est informée par la moyenne de la cible pour chaque catégorie.
Par exemple, nous avons la variable ville avec les valeurs Londres, Manchester et Bristol ; si le taux par défaut est de 30% à Londres, 20% à Bristol et 10% à Manchester, alors nous remplaçons Londres par 1, Bristol par 2 et Manchester par 3.
Dans cette démo :
Nous allons voir comment effectuer un encodage avec :
- Feature-Engine
Encodage important
Nous sélectionnons le chiffre à attribuer à chaque catégorie à l’aide de l’ensemble d’entraînement, puis nous utilisons ces mappings dans l’ensemble de test.
Notez que pour réaliser cette technique avec pandas, nous devons conserver la cible dans l’ensemble d’entraînement.
Explorer la relation originale entre les variables catégorielles et la cible
Vous pouvez voir que la relation entre la cible et les catégories des variables catégorielles va de haut en bas, selon la catégorie.
Encodage des nombres entiers avec le Feature-Engine
Si nous utilisons le Feature-Engine, nous n’avons pas besoin de garder la variable cible dans l’ensemble de données de formation.
**Note
Si la variable argument est laissée à None, le codeur identifiera automatiquement toutes les variables catégorielles.
Le codeur ne codera pas les variables numériques. Donc, si certaines de vos variables numériques sont en fait des catégories, vous devrez les reformuler en tant qu’objet avant d’utiliser le codeur.
Enfin, s’il y a une étiquette dans le jeu de test qui n’était pas présente dans la rame, le codeur passera et se trompera, pour vous alerter de ce comportement.
Je télécharge mon guide gratuit
Thank you!
You have successfully joined our subscriber list.
Vous recevrez votre guide par email sans aucun engagement de votre part.