Encodage par la cible

Remporter une compétition Kaggle en Python

Yauhen Babakhin

Kaggle Grandmaster

Caractéristiques catégorielles à forte cardinalité

 

  • Le convertisseur d'étiquettes attribue un numéro distinct à chaque catégorie
  • Le one-hot encoder crée une nouvelle caractéristique pour chaque valeur de catégorie
  • L'encodage par la cible à la rescousse !
Remporter une compétition Kaggle en Python

Encodage moyen de la cible

ID entraînement Catégoriel Cible
1 A 1
2 B 0
3 B 0
4 A 1
5 B 0
6 A 0
7 B 1
ID test Catégoriel Cible
10 A ?
11 A ?
12 B ?
13 A ?
Remporter une compétition Kaggle en Python

Encodage moyen de la cible

 

  1. Calculer la moyenne sur l'ensemble d'entraînement, l'appliquer au test
  2. Diviser l'entraînement en K plis. Calculer la moyenne sur (K−1) plis, l'appliquer au Ke pli
  3. Ajouter la caractéristique encodée par la cible au modèle
Remporter une compétition Kaggle en Python

Calculer la moyenne sur l'entraînement

ID entraînement Catégoriel Cible
1 A 1
2 B 0
3 B 0
4 A 1
5 B 0
6 A 0
7 B 1
Remporter une compétition Kaggle en Python

Calculer la moyenne sur l'entraînement

ID entraînement Catégoriel Cible
1 A 1
2 B 0
3 B 0
4 A 1
5 B 0
6 A 0
7 B 1
Remporter une compétition Kaggle en Python

Calculer la moyenne sur l'entraînement

ID entraînement Catégoriel Cible
1 A 1
2 B 0
3 B 0
4 A 1
5 B 0
6 A 0
7 B 1
Remporter une compétition Kaggle en Python

Encodage du test

ID test Catégoriel Cible Encodage moyen
10 A ? 0,66
11 A ? 0,66
12 B ? 0,25
13 A ? 0,66
Remporter une compétition Kaggle en Python

Encodage d'entraînement hors pli

ID entraînement Catégoriel Cible Pli
1 A 1 1
2 B 0 1
3 B 0 1
4 A 1 1
5 B 0 2
6 A 0 2
7 B 1 2
Remporter une compétition Kaggle en Python

Encodage d'entraînement hors pli

ID entraînement Catégoriel Cible Pli Encodage moyen
1 A 1 1
2 B 0 1
3 B 0 1
4 A 1 1
5 B 0 2
6 A 0 2
7 B 1 2
Remporter une compétition Kaggle en Python

Encodage d'entraînement hors pli

ID entraînement Catégoriel Cible Pli Encodage moyen
1 A 1 1 0
2 B 0 1 0,5
3 B 0 1 0,5
4 A 1 1 0
5 B 0 2
6 A 0 2
7 B 1 2
Remporter une compétition Kaggle en Python

Encodage d'entraînement hors pli

ID entraînement Catégoriel Cible Pli Encodage moyen
1 A 1 1 0
2 B 0 1 0,5
3 B 0 1 0,5
4 A 1 1 0
5 B 0 2
6 A 0 2
7 B 1 2
Remporter une compétition Kaggle en Python

Encodage d'entraînement hors pli

ID entraînement Catégoriel Cible Pli Encodage moyen
1 A 1 1 0
2 B 0 1 0,5
3 B 0 1 0,5
4 A 1 1 0
5 B 0 2 0
6 A 0 2 1
7 B 1 2 0
Remporter une compétition Kaggle en Python

Guides pratiques

Remporter une compétition Kaggle en Python

Guides pratiques

Lissage

$$mean\_enc_i = \frac{target\_sum_i}{n_i}$$

$$smoothed\_mean\_enc_i = \frac{target\_sum_i + \alpha*global\_mean}{n_i + \alpha}$$

$$\alpha \in [5; 10]$$

Remporter une compétition Kaggle en Python

Guides pratiques

Lissage

$$mean\_enc_i = \frac{target\_sum_i}{n_i}$$

$$smoothed\_mean\_enc_i = \frac{target\_sum_i + \alpha*global\_mean}{n_i + \alpha}$$

$$\alpha \in [5; 10]$$

Nouvelles catégories

  • Remplir les nouvelles catégories dans les données de test avec la moyenne_globale
Remporter une compétition Kaggle en Python

Guides pratiques

 

ID entraînement Catégoriel Cible
1 A 1
2 B 0
3 B 0
4 A 0
5 B 1

 

ID test Catégoriel Cible Encodage moyen
10 A ? 0,43
11 B ? 0,38
12 C ? 0,40
Remporter une compétition Kaggle en Python

Passons à la pratique !

Remporter une compétition Kaggle en Python

Preparing Video For Download...