Équilibrage des classes avec ADASYN

ADASYN (Adaptive Synthetic Sampling) est une méthode de sur-échantillonnage qui génère des exemples synthétiques dans la classe minoritaire en fonction de la densité des exemples voisins. Contrairement à SMOTE, ADASYN se concentre sur les instances de la classe minoritaire qui sont mal classées ou difficiles à prédire, en créant plus d’exemples synthétiques près de ces points. Cela permet de mieux équilibrer les classes tout en améliorant les performances du modèle sur les instances difficiles.

Fonctions :

  • ADASYN ()

    ADASYN (Adaptive Synthetic Sampling) est une méthode de sur-échantillonnage qui génère des exemples synthétiques pour la classe minoritaire. Contrairement à SMOTE, qui génère des points synthétiques de manière uniforme dans l'espace des caractéristiques, ADASYN se concentre sur les échantillons de la classe minoritaire qui sont les plus difficiles à classifier (c'est-à-dire ceux qui se trouvent dans des régions de faible densité). Cela permet de générer plus de points autour des exemples difficiles et moins autour des exemples faciles. Le processus est adaptatif : il génère plus de nouveaux exemples pour les instances de la classe minoritaire qui sont les plus proches des instances de la classe majoritaire.

    Importation :

    from imblearn.over_sampling import ADASYN

    Attributs :

    Paramètre Description
    sampling_strategy Détermine la stratégie d'échantillonnage. 'auto' pour augmenter la classe minoritaire jusqu'à la taille de la classe majoritaire.
    n_neighbors Nombre de voisins pour générer des exemples synthétiques, par défaut 5.
    random_state Permet de contrôler la reproductibilité de l'échantillonnage, par défaut None.
    m_neighbors Nombre de voisins à utiliser pour calculer les plus proches voisins dans la classe minoritaire, par défaut 10.
    threshold_to_majority Seuil pour déterminer la quantité d'échantillons à générer pour chaque échantillon difficile.

    Exemple de code :

    from imblearn.over_sampling import ADASYN
    
    # Initialisation de l'ADASYN
    adasyn = ADASYN(sampling_strategy='auto', n_neighbors=5)
    
    # Appliquer ADASYN pour générer des exemples synthétiques pour la classe minoritaire
    X_resampled, y_resampled = adasyn.fit_resample(X, y)
    
    # Afficher la distribution des classes avant et après
    print("Distribution des classes avant ADASYN :")
    print(y.value_counts())
    
    print("Distribution des classes après ADASYN :")
    print(pd.Series(y_resampled).value_counts())

    Explication du code :

    • Importation : ADASYN est importé depuis imblearn.over_sampling pour être utilisé dans le processus de sur-échantillonnage.
    • Initialisation d'ADASYN : Un objet adasyn est créé avec une stratégie de sur-échantillonnage auto pour augmenter la classe minoritaire jusqu'à la taille de la classe majoritaire. Le nombre de voisins pour générer des échantillons synthétiques est défini sur 5.
    • Application de ADASYN : La méthode fit_resample(X, y) applique ADASYN sur les données d'entrée X et les labels y pour obtenir les versions sur-échantillonnées X_resampled et y_resampled.
    • Affichage de la distribution des classes : Avant et après l'application d'ADASYN, la distribution des classes est imprimée pour observer les changements.

    Remarques

    • Adaptabilité : ADASYN permet de générer plus de points autour des exemples difficiles à classifier, ce qui peut améliorer la performance de certains modèles, notamment les classificateurs complexes.
    • Complexité : En raison de la génération de points plus spécifiques, ADASYN peut entraîner un sur-apprentissage (overfitting) si la taille du dataset devient trop grande.
    • Paramétrage : Le paramètre m_neighbors (nombre de voisins pour générer les échantillons) et threshold_to_majority (seuil de majorité) permettent de mieux contrôler la distribution et la diversité des exemples générés.
    • Comparaison avec SMOTE : ADASYN se distingue de SMOTE en générant des échantillons supplémentaires spécifiquement autour des exemples minoritaires difficiles à classifier, contrairement à SMOTE qui génère des exemples de manière plus uniforme.