Partager via


SMOTE

Important

Le support de Machine Learning Studio (classique) prend fin le 31 août 2024. Nous vous recommandons de passer à Azure Machine Learning avant cette date.

À partir du 1er décembre 2021, vous ne pourrez plus créer de nouvelles ressources Machine Learning Studio (classique). Jusqu’au 31 août 2024, vous pouvez continuer à utiliser les ressources Machine Learning Studio (classique) existantes.

La documentation ML Studio (classique) est en cours de retrait et ne sera probablement plus mise à jour.

Augmente le nombre d'exemples de faible incidence dans un jeu de données à l'aide de la technique de suréchantillonnage minoritaire synthétique

Catégorie : transformation/manipulation des données

Notes

s’applique à: Machine Learning Studio (classic) uniquement

Des modules par glisser-déposer similaires sont disponibles dans Concepteur Azure Machine Learning.

Vue d’ensemble du module

cet article explique comment utiliser le module SMOTE dans Machine Learning Studio (classic) pour augmenter le nombre de cas underepresented dans un jeu de données utilisé pour Machine Learning. SMOTE représente un meilleur moyen d’augmenter le nombre de cas rares que la simple duplication de cas existants.

Le module SMOTE doit être connecté à un jeu de données qui se trouve être déséquilibré Il existe de nombreuses raisons pour lesquelles un jeu de données peut être déséquilibré : la catégorie que vous ciblez peut être très rare dans l’alimentation, ou les données peuvent simplement être difficiles à collecter. On utilise en général SMOTE lorsque la classe à analyser est sous-représentée.

Le module retourne un jeu de données contenant les échantillons d’origine, ainsi qu’un nombre supplémentaire d’échantillons minoritaires synthétiques, selon le pourcentage spécifié.

Informations complémentaires sur SMOTE

SMOTE signifie Synthetic Minority Oversampling Technique. Il s’agit d’une technique statistique permettant d’augmenter le nombre de cas d’un jeu de données de façon équilibrée. Le module fonctionne par génération de nouvelles instances à partir de cas minoritaires fournis en entrée. Cette implémentation de SMOTE ne modifie pas le nombre de cas majoritaires.

Les nouvelles instances ne sont pas seulement des copies des cas minoritaires existants ; en réalité, l’algorithme prend des échantillons de l’espace de caractéristiques pour chaque classe cible et ses plus proches voisins, et génère de nouveaux échantillons qui combinent les caractéristiques du cas cible avec des caractéristiques de ses voisins. Cette approche augmente le nombre de caractéristiques disponibles pour chaque classe et rend les échantillons plus généraux.

SMOTE prend en entrée l’ensemble du jeu de données, mais augmente le pourcentage des cas minoritaires uniquement. Supposons, par exemple, un jeu de données déséquilibré dans lequel 1 % des cas ont la valeur cible A (classe minoritaire) et 99 % des cas la valeur B. Pour multiplier par deux le pourcentage de cas minoritaires, on entre 200 comme Pourcentage SMOTE dans les propriétés du module.

Exemples

Nous vous recommandons d'essayer d'utiliser le module SMOTE avec un petit jeu de données pour voir comment il fonctionne. l’exemple suivant utilise le jeu de données de dons de sang disponible dans Machine Learning Studio (classic).

Si vous ajoutez le jeu de données à une expérience, puis cliquez sur visualiser sur la sortie du jeu de données, vous pouvez voir que, parmi les 748 lignes ou les cas du jeu de données, il y a 570 cas (76%) de classe 0 et 178 (24%) de classe 1. Bien le déséquilibre ne soit pas catastrophique, il se trouve que la classe 1 représente les personnes qui ont fait un don de sang : ce sont par conséquent ces lignes qui contiennent l’espace de caractéristiques que l’on souhaite modéliser.

Pour augmenter le nombre de cas, on peut définir ainsi la valeur du Pourcentage SMOTE, en utilisant des multiples de 100 :

Classe 0 Classe 1 total
Jeu de données d’origine

(équivalent à Pourcentage SMOTE = 0)
570

76 %
178

24 %
748
Pourcentage SMOTE = 100 570

62 %
356

38 %
926
Pourcentage SMOTE = 200 570

52 %
534

48 %
1104
Pourcentage SMOTE = 300 570

44 %
712

56 %
1 282

Avertissement

Le fait d’augmenter le nombre de cas avec SMOTE ne garantit pas des modèles plus précis. Vous devez essayer d'expérimenter différents pourcentages, différents ensembles de caractéristiques et différents nombres des voisins les plus proches pour voir comment l'ajout de cas influence votre modèle.

Configurer SMOTE

  1. Ajoutez le module SMOTE à votre expérience. Vous trouverez le module sous Modules de transformation de données, dans la catégorie Manipulation.

  2. Connectez le jeu de données que vous souhaitez enrichir. Si vous souhaitez spécifier l’espace de caractéristiques qui servira à générer les nouveaux cas, soit en utilisant seulement certaines colonnes, soit en en excluant d’autres, utilisez le module Sélectionner des colonnes dans le jeu de données pour isoler les colonnes à utiliser avant de vous servir de SMOTE.

    Dans le cas contraire, la création de nouveaux cas avec SMOTE se base sur toutes les colonnes fournies en entrée.

  3. Vérifiez que la colonne contenant l’étiquette, ou classe cible, est marquée comme telle.

    S’il n’existe aucune colonne d’étiquette, utilisez le module modifier les métadonnées pour sélectionner la colonne qui contient les étiquettes de classe, puis sélectionnez étiquette dans la liste déroulante champs .

  4. Le module SMOTE identifie automatiquement la classe minoritaire dans la colonne étiquette, puis obtient tous les exemples pour la classe minoritaire.

  5. Dans l’option Pourcentage SMOTE, tapez un nombre entier qui indique le pourcentage cible de cas minoritaires dans le jeu de données de sortie. Par exemple :

    • Vous tapez 0 (%). Le module SMOTE retourne exactement le même jeu de données que celui que vous avez fourni en entrée, en n’ajoutant aucun nouveau cas minoritaire. Dans ce jeu de données, la proportion des classes n’a pas changé.

    • Vous tapez 100 (%). Le module SMOTE génère de nouveaux cas minoritaires, en ajoutant le même nombre de cas minoritaires que dans le jeu de données d’origine. Étant donné que SMOTE n’augmente pas le nombre de cas majoritaires, la proportion des cas de chaque classe a été modifiée.

    • Vous tapez 200 (%). Le module double le pourcentage de cas minoritaires par rapport au jeu de données d’origine. Cela ne signifie pas obtenir deux fois plus de cas minoritaires qu’avant. Au lieu de cela, la taille du jeu de données est augmentée de manière à ce que le nombre de cas majoritaires reste le même, et le nombre de cas minoritaires augmente jusqu’à ce qu’il corresponde à la valeur de pourcentage souhaitée.

    Notes

    Utilisez uniquement des multiples de 100 comme pourcentage SMOTE.

  6. Utilisez l’option Nombre de plus proches voisins pour déterminer la taille de l’espace de caractéristiques utilisé par l’algorithme SMOTE lors de la génération de nouveaux cas. La ligne nearest neighbor est une ligne de données (un cas) très similaire à certains cas cibles. La distance entre deux cas se mesure en combinant les vecteurs pondérés de toutes les caractéristiques.

    • En augmentant le nombre de plus proches voisins, on obtient des caractéristiques à partir de plus de cas.
    • En conservant un petit nombre de plus proches voisins, on utilise des caractéristiques plus proches de celles de l’échantillon d’origine.
  7. Tapez une valeur dans la zone de texte Seed aléatoire si vous souhaitez vous assurer des résultats identiques sur les exécutions de la même expérience, avec les mêmes données. Dans le cas contraire, le module génère une valeur de départ aléatoire basée sur les valeurs d’horloge du processeur lorsque l’expérimentation est déployée, ce qui peut entraîner des résultats légèrement différents sur les exécutions.

  8. Exécutez l’expérience.

    La sortie du module est un jeu de données contenant les lignes d’origine ainsi qu’un certain nombre de lignes ajoutées avec des cas minoritaires.

Conseil

si vous souhaitez déterminer quelles nouvelles lignes ont été ajoutées, vous pouvez utiliser les modules appliquer SQL Transformation ou joindre les données .

Notes techniques

  • Lors de la publication d’un modèle qui utilise le module SMOTE , supprimez SMOTE de l’expérience prédictive avant qu’il ne soit publié en tant que service Web. En effet, SMOTE est destiné à l’amélioration d’un modèle pendant l’apprentissage et non à l’évaluation. Vous pouvez obtenir une erreur si une expérimentation prédictive publiée contient le module SMOTE.

  • On obtient souvent de meilleurs résultats en appliquant un nettoyage des valeurs manquantes ou d’autres transformations pour corriger les données avant d’appliquer SMOTE.

  • Certains chercheurs se sont demandé si SMOTE était efficace sur des données de grande dimension ou des données éparses, comme celles utilisées dans les jeux de données de classification de texte ou de génomique. Ce document présente un bon résumé des effets et de la validité théorique de l’application de SMOTE dans de tels cas : Blagus et Lusa : SMOTE pour les données de classe haute dimension-déséquilibrées

    Si SMOTE n’est pas efficace dans votre jeu de données, vous pouvez envisager d’autres approches, notamment différentes méthodes pour suréchantillonner les cas minoritaires ou sous-échantillonner les cas majoritaires, ainsi que des techniques d’ensemble qui aident directement l’apprenant, à l’aide du clustering, du bagging ou de l’adaptive boosting.

Entrée attendue

Name Type Description
Exemples Table de données Jeu de données d'échantillons

Paramètres du module

Nom Plage Type Default Description
Pourcentage SMOTE >=0 Integer 100 Quantité de suréchantillonnage en multiples de 100
Nombre de voisins les plus proches >=1 Integer 1 Nombre de voisins les plus proches à partir duquel dessiner des fonctionnalités pour les nouveaux cas
Valeur initiale aléatoire Quelconque Integer 0 Valeur de départ pour le générateur de nombres aléatoires

Output

Nom Type Description
Table de charge de travail Table de données Table de données contenant les exemples originaux et un nombre supplémentaire d’exemples de classes minoritaires synthétiques. Le nombre de nouveaux échantillons est (smotePercent/100)*T, où T est le nombre d'échantillons de classe minoritaires.

Voir aussi

Sample and Split
Liste alphabétique des modules