Sous-échantillonnage (Undersampling) des classes majoritaires avec RandomUnderSampler de imblearn

Le sous-échantillonnage (undersampling) des classes majoritaires avec RandomUnderSampler de la bibliothèque imblearn est une méthode permettant de rééquilibrer un dataset en réduisant le nombre d’exemples dans la classe majoritaire. Ce processus consiste à sélectionner aléatoirement une sous-partie des exemples de la classe majoritaire afin de la rendre plus petite et ainsi équilibrer la distribution des classes.

Fonctions :

  • RandomUnderSampler()

    Le RandomUnderSampler est utilisé pour effectuer un sous-échantillonnage aléatoire des classes majoritaires dans un jeu de données déséquilibré. L'objectif est de réduire le nombre d'exemples dans la classe majoritaire pour équilibrer la distribution des classes, ce qui peut aider à améliorer la performance du modèle en réduisant le biais vers la classe majoritaire.

    Importation :

    from imblearn.under_sampling import RandomUnderSampler

    Attributs :

    Paramètre Description
    sampling_strategy Stratégie de sous-échantillonnage. Peut être 'auto' pour équilibrer les classes, ou un nombre pour spécifier un ratio.
    random_state Contrôle la reproductibilité de l'échantillonnage aléatoire. Par défaut, None.
    replacement Détermine si l'échantillonnage est effectué avec ou sans remplacement. Par défaut, False.

    Exemple de code :

    from imblearn.under_sampling import RandomUnderSampler
    
    # Initialisation du RandomUnderSampler
    undersampler = RandomUnderSampler()
    
    # Appliquer le sous-échantillonnage
    X_resampled, y_resampled = undersampler.fit_resample(X, y)
    
    # Afficher la distribution des classes avant et après
    print("Distribution des classes avant sous-échantillonnage :")
    print(y.value_counts())
    
    print("Distribution des classes après sous-échantillonnage :")
    print(pd.Series(y_resampled).value_counts())

    Explication du code :

    • Importation : RandomUnderSampler est importé depuis imblearn.under_sampling pour être utilisé dans le processus de sous-échantillonnage.
    • Initialisation de l'undersampler : Un objet undersampler est créé. Il peut être configuré pour ajuster la stratégie de sous-échantillonnage selon les besoins (ici, la stratégie par défaut est 'auto').
    • Application du sous-échantillonnage : La méthode fit_resample(X, y) applique le sous-échantillonnage sur les données d'entrée X et les labels y, générant ainsi des versions sous-échantillonnées X_resampled et y_resampled.
    • Affichage de la distribution des classes : Avant et après l'application de RandomUnderSampler, la distribution des classes est imprimée pour observer les changements.
     

    Remarques

    • Le sous-échantillonnage peut entraîner une perte d'information importante, car il réduit le nombre d'exemples disponibles pour la classe majoritaire. Cela peut potentiellement nuire à la performance du modèle, surtout si la classe majoritaire contient des informations utiles pour la tâche.
    • Ce type de sous-échantillonnage est particulièrement adapté lorsque la classe majoritaire est beaucoup plus grande que la classe minoritaire et lorsque l'on veut éviter que le modèle ne soit trop biaisé vers la classe majoritaire.