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é depuisimblearn.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éeX
et les labelsy
, générant ainsi des versions sous-échantillonnéesX_resampled
ety_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.
- Importation :