É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-échantillonnageauto
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 sur5
. - Application de ADASYN : La méthode
fit_resample(X, y)
applique ADASYN sur les données d'entréeX
et les labelsy
pour obtenir les versions sur-échantillonnéesX_resampled
ety_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) etthreshold_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.
- Importation : ADASYN est importé depuis