Données déséquilibrées

Un ensemble de données de classification avec des proportions de classe asymétriques est appelé déséquilibré. Les classes qui constituent une grande partie de l'ensemble de données sont appelées classes de majorité. Ceux qui en représentent une plus petite sont des classes de minorité.

Qu'est-ce qui est considéré comme déséquilibré ? La réponse peut être légère à extrême, comme le montre le tableau ci-dessous.

Niveau de déséquilibre Proportion de minorités
Niveau modéré 20 à 40% de l'ensemble de données
Modérée 1 à 20% de l'ensemble de données
Extrême Moins de 1% de l'ensemble de données

Pourquoi faire attention aux données déséquilibrées ? Vous devrez peut-être appliquer une technique d'échantillonnage particulière si vous avez une tâche de classification dont l'ensemble de données est déséquilibré.

Prenons l'exemple suivant d'un modèle qui détecte une fraude. Les instances de fraude se produisent une fois pour 200 transactions dans cet ensemble de données.Dans la distribution réelle, environ 0,5% des données sont positives.

Graphique à barres comportant deux barres. Une barre présente environ 200 transactions négatives, tandis que l'autre barre affiche une transaction positive.

Pourquoi cela ? Avec si peu de positifs par rapport aux négatifs, le modèle d'entraînement passera la majeure partie de son temps sur des exemples négatifs et ne tirera pas suffisamment de leçons des exemples positifs. Par exemple, si votre taille de lot est de 128, de nombreux lots n'auront pas d'exemples positifs. Les gradients seront donc moins informatifs.

Si votre ensemble de données est déséquilibré, commencez par entraîner le modèle sur la véritable distribution. Si le modèle fonctionne bien et se prête bien à la généralisation, vous avez terminé. Si ce n'est pas le cas, essayez la technique suivante de sous-échantillonnage et de surpondération.

Sous-échantillonnage et surpondération

Un moyen efficace de gérer les données déséquilibrées consiste à sous-échantillonner et à surpondérer la classe de majorité. Commençons par définir ces deux nouveaux termes:

  • Le sous-échantillonnage (dans ce contexte) consiste à effectuer un entraînement sur un sous-ensemble extrêmement faible des exemples de classes majoritaires.
  • La surpondération correspond à l'ajout d'un exemple de pondération à la classe sous-échantillonnée par rapport au facteur de sous-échantillonnage.

Étape 1: Sous-échantillonnez la classe majoritaire Revenons à notre exemple d'ensemble de données de fraude, avec 1 à 200 négatifs. Le sous-échantillonnage d'un facteur de 10 réduit le solde à 1 pour être positif à 20 (5%). Bien que l'ensemble d'entraînement résultant soit toujours déséquilibré modérément, la proportion de positifs par rapport aux négatifs est bien meilleure que la proportion d'origine extrêmement déséquilibrée (0,5%).

Graphique à barres comportant deux barres. L'une présente 20 transactions négatives, l'autre
1.

Étape 2: Effectuez une augmentation de la classe sous-échantillonnée: la dernière étape consiste à ajouter des exemples de pondérations à la classe sous-échantillonnée. Puisque nous avons effectué un sous-échantillonnage avec un facteur de 10, l'exemple de pondération doit être de 10.

Schéma conceptuel du sous-échantillonnage et de la surpondération. L'étape 1, le sous-échantillonnage, extrait un exemple sélectionné aléatoirement à partir d'un bloc représentant l'ensemble de données de la classe majoritaire. L'étape 2, surpondération, ajoute une pondération à chaque exemple sélectionné aléatoirement.

Vous avez peut-être l'habitude d'entendre le terme pondération lorsqu'il fait référence à des paramètres de modèle, tels que des connexions dans un réseau de neurones. Nous parlons ici des exemples de pondérations, ce qui signifie qu'un exemple individuel est plus important à prendre en compte pendant l'entraînement. Avec un exemple de pondération de 10, le modèle considère l'exemple comme 10 fois plus important (lors du calcul de la perte) qu'avec un exemple de pondération de 1.

La pondération doit être égale au facteur utilisé pour le sous-échantillonnage:

\[\text{ \{example weight\} = \{original example weight\} × \{downsampling factor\} }\]

Pourquoi sous-échantillonner et augmenter la taille ?

Il peut sembler étrange d'ajouter des exemples de pondérations après le sous-échantillonnage. Nous avons essayé d'améliorer notre modèle sur la classe minoritaire. Pourquoi augmenter la pondération de la majorité ? Voici les modifications apportées:

  • Convergence plus rapide: pendant l'entraînement, la classe minoritaire est plus souvent représentée, ce qui accélère la convergence du modèle.
  • Espace disque: en consolidant la classe majoritaire dans moins d'exemples avec des pondérations plus importantes, nous consacrons moins d'espace disque à leur stockage. Cette économie permet à la classe minoritaire d'augmenter son espace disque, ce qui nous permet de collecter un plus grand nombre et un plus grand nombre d'exemples à partir de cette classe.
  • Calibrage: la surpondération garantit que notre modèle est toujours calibré. Les résultats peuvent toujours être interprétés comme des probabilités.