Sur-échantillonnage (Oversampling) des classes minoritaires avec RandomOverSampler de imblearn

Le sur-échantillonnage (oversampling) des classes minoritaires avec RandomOverSampler de la bibliothèque imblearn est une technique permettant de rééquilibrer un dataset en augmentant le nombre d’exemples dans la classe minoritaire. Cette méthode consiste à générer de nouvelles instances synthétiques de la classe minoritaire, généralement en répliquant aléatoirement les exemples existants.

Fonctions :

  • RandomOverSampler()

    Le RandomOverSampler est utilisé pour effectuer un sur-échantillonnage des classes minoritaires dans un jeu de données déséquilibré. L'objectif est d'augmenter le nombre d'exemples dans la classe minoritaire en répliquant certains exemples existants, ce qui aide à équilibrer la distribution des classes et à améliorer la performance du modèle, notamment pour la classe minoritaire.

    Importation :

    from imblearn.over_sampling import RandomOverSampler

    Attributs :

    Paramètre Description
    sampling_strategy Stratégie de sur-é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 le sur-échantillonnage est effectué avec ou sans remplacement. Par défaut, False.

    Exemple de code :

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

    Explication du code :

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

    Remarques

    • Le sur-échantillonnage peut conduire à un sur-apprentissage (overfitting), car les exemples minoritaires sont dupliqués, ce qui peut rendre le modèle trop spécialisé sur ces exemples et moins généralisable.
    • Il est important de tester différentes stratégies d'échantillonnage (sur-échantillonnage, sous-échantillonnage ou une combinaison des deux) pour identifier la meilleure approche pour un modèle spécifique.