Sur-échantillonnage avec SMOTE
Le sur-échantillonnage avec SMOTE (Synthetic Minority Over-sampling Technique) génère des exemples synthétiques en interpolant entre les instances de la classe minoritaire, au lieu de simplement dupliquer les données. Cela permet de mieux équilibrer les classes et d’améliorer la performance des modèles de machine learning sur des ensembles de données déséquilibrés.
Fonctions :
-
SMOTE (Synthetic Minority Over-sampling Technique)
SMOTE (Synthetic Minority Over-sampling Technique) est une méthode avancée de sur-échantillonnage des classes minoritaires. Contrairement à RandomOverSampler, qui duplique simplement les exemples existants, SMOTE génère de nouvelles instances synthétiques en créant des points de données intermédiaires entre les exemples minoritaires existants. Cette technique est particulièrement utile pour éviter l'overfitting et générer des données plus représentatives pour les classes minoritaires.
Importation :
from imblearn.over_sampling import SMOTE
Attributs :
Paramètre Type Description Valeur par défaut sampling_strategy
str, int ou dict Stratégie de sur-échantillonnage. Peut être 'auto'
pour équilibrer les classes ou un nombre pour spécifier un ratio.auto
random_state
int, optionnel Contrôle la reproductibilité de l'échantillonnage aléatoire. None
k_neighbors
int Le nombre de voisins pour la génération des nouveaux échantillons. 5
n_jobs
int, optionnel Le nombre de jobs parallèles à utiliser pour l'échantillonnage. None
Exemple de code :
from imblearn.over_sampling import SMOTE # Initialisation de SMOTE smote = SMOTE() # Appliquer SMOTE pour générer des données synthétiques X_resampled, y_resampled = smote.fit_resample(X, y) # Afficher la distribution des classes avant et après print("Distribution des classes avant SMOTE :") print(y.value_counts()) print("Distribution des classes après SMOTE :") print(pd.Series(y_resampled).value_counts())
Explication du code :
- Importation : SMOTE est importé depuis
imblearn.over_sampling
pour être utilisé dans le processus de sur-échantillonnage. - Initialisation de SMOTE : Un objet
smote
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 de SMOTE : La méthode
fit_resample(X, y)
applique le sur-échantillonnage sur les données d'entréeX
et les labelsy
, générant ainsi des versions sur-échantillonnésX_resampled
ety_resampled
. - Affichage de la distribution des classes : Avant et après l'application de SMOTE, la distribution des classes est imprimée pour observer les changements.
🟢 Remarques
- SMOTE peut être plus performant que le sur-échantillonnage aléatoire en générant des exemples synthétiques, ce qui évite la redondance et le sur-apprentissage.
- Cette méthode nécessite un calcul supplémentaire pour générer les points de données synthétiques, ce qui peut augmenter le temps de traitement, en particulier avec de grands jeux de données.
- SMOTE peut être sensible au nombre de voisins (
k_neighbors
) et il est important de tester différentes valeurs de ce paramètre pour obtenir les meilleurs résultats.
- Importation : SMOTE est importé depuis