29. Stratégies pour gérer les données déséquilibrées

Dans de nombreux problèmes d'apprentissage automatique et d'apprentissage profond, nous sommes confrontés à des ensembles de données déséquilibrés. Un ensemble de données est considéré comme déséquilibré lorsque les classes cibles sont représentées de manière disproportionnée. Cela peut entraîner des problèmes importants pour la performance des modèles d’apprentissage, car ils peuvent devenir biaisés en faveur de la classe majoritaire. Heureusement, il existe plusieurs techniques et stratégies que nous pouvons utiliser pour atténuer ce problème. Dans ce chapitre, nous explorerons certaines des approches les plus efficaces pour gérer les données déséquilibrées lorsque vous travaillez avec Python.

Comprendre le problème

Avant de se lancer dans les stratégies, il est essentiel de comprendre l'impact des données déséquilibrées. Les modèles d'apprentissage automatique et d'apprentissage profond sont formés pour minimiser les erreurs pendant le processus d'apprentissage. Lorsqu'une classe domine l'ensemble de données, le modèle peut simplement toujours prédire la classe majoritaire tout en atteignant une grande précision. Cependant, cela ne signifie pas que le modèle fonctionne bien dans la classification des classes minoritaires, qui sont souvent les plus importantes.

Mesurer le déséquilibre

Avant d'appliquer une technique, il est important de mesurer le degré de déséquilibre. Cela peut être fait simplement en comptant les instances de chaque classe. En Python, nous pouvons utiliser des bibliothèques comme Pandas pour obtenir facilement ce décompte :

importer des pandas en tant que PD # Charger les données données = pd.read_csv('seu_dataset.csv') # Compter les instances de chaque classe class_counts = data['target_class'].value_counts() imprimer (class_counts)

Une fois que nous avons compris le degré de déséquilibre, nous pouvons choisir la stratégie la plus appropriée pour résoudre le problème.

Rééchantillonnage des données

L'une des approches les plus courantes consiste à rééchantillonner les données. Cela peut être fait de deux manières : en suréchantillonnant la classe minoritaire ou en sous-échantillonnant la classe majoritaire.

  • Suréchantillonnage : le suréchantillonnage implique la duplication d'instances de la classe minoritaire ou la génération de nouvelles instances synthétiques. Une technique populaire est la SMOTE (Synthetic Minority Over-sampling Technique), qui crée des exemples synthétiques à partir d'exemples existants de la classe minoritaire.
  • Sous-échantillonnage : le sous-échantillonnage, en revanche, implique la suppression d'instances de la classe majoritaire. Cela peut être effectué de manière aléatoire ou en fonction de certains critères, tels que la suppression des instances les plus proches de la limite de décision.

En Python, la bibliothèque déséquilibred-learn propose des implémentations prêtes à l'emploi pour ces techniques :

depuis imblearn.over_sampling importer SMOTE depuis imblearn.under_sampling importer RandomUnderSampler # Suréchantillonnage avec SMOTE frapper = SMOTE() X_resampled, y_resampled = smote.fit_resample(X, y) # Sous-échantillonnage avec RandomUnderSampler under_sampler = RandomUnderSampler() X_resampled, y_resampled = under_sampler.fit_resample(X, y)

Algorithmes sensibles au déséquilibre

Certains algorithmes de machine learning sont plus robustes face aux ensembles de données déséquilibrés. Par exemple, les arbres de décision et les forêts aléatoires peuvent mieux gérer les déséquilibres en raison de leur structure de partitionnement d'espace. De plus, nous pouvons ajuster la pondération des classes pendant la formation du modèle pour la rendre plus sensible à la classe minoritaire.

à partir de sklearn.ensemble importer RandomForestClassifier # Ajustement des poids des classes rf = RandomForestClassifier (class_weight = 'équilibré') rf.fit(X_train, y_train)

Changement de perspective : évaluation du modèle

Lorsque nous traitons de données déséquilibrées, les mesures d'évaluation traditionnelles, telles que l'exactitude, peuvent ne pas être adéquates. Des mesures telles que la précision, le rappel et le score F1 offrent une vue plus équilibrée des performances du modèle entre les classes. La matrice de confusion est également un outil précieux pour comprendre les performances du modèle en termes de vrais positifs, de faux positifs, de vrais négatifs et de faux négatifs.

à partir de sklearn.metrics import classification_report, confusion_matrix # Prédictions du modèle y_pred = modèle.predict(X_test) # Rapport de classement print(classification_report(y_test, y_pred)) # Matrice de confusion print(confusion_matrix(y_test, y_pred))

Ensemble modèle

Une autre stratégie efficace consiste à utiliser des ensembles de modèles. Des techniques telles que le bagging et le boosting peuvent améliorer la classification des ensembles de données déséquilibrés. AdaBoost, par exemple, ajuste de manière itérative les pondérations des instances, en accordant plus d'importance aux exemples mal classés lors des itérations précédentes.

à partir de sklearn.ensemble importer AdaBoostClassifier #AdaBoost ada_boost = AdaBoostClassifier(n_estimators=100) ada_boost.fit(X_train, y_train)

Conclusion

Travailler avec des données déséquilibrées est un défi courant dans les projets de machine learning et de deep learning. Cependant, avec les bonnes stratégies, nous pouvons construire des modèles plus justes et plus efficaces pour classer toutes les classes. La clé est de choisir la technique appropriée pour le contexte spécifique du problème et de toujours valider les performances du modèle avec des métriques appropriées pour les données déséquilibrées.

En résumé, le traitement des données déséquilibrées nécessite une combinaison de techniques de rééchantillonnage, le choix d'algorithmes appropriés, le réglage des hyperparamètres et une évaluation minutieuse du modèle. En appliquant ces stratégies, nous pouvons garantir que nos modèles d'apprentissage automatique et d'apprentissage profond effectuent des prédictions précises et équilibrées, quel que soit le déséquilibre des données.

Répondez maintenant à l’exercice sur le contenu :

Laquelle des techniques suivantes est recommandée pour traiter des ensembles de données déséquilibrés dans les problèmes d'apprentissage automatique et d'apprentissage profond ?

Tu as raison! Félicitations, passez maintenant à la page suivante

Vous avez raté! Essayer à nouveau.

Image de l'article Interprétabilité des modèles d'apprentissage automatique

Page suivante de lebook gratuit :

107Interprétabilité des modèles d'apprentissage automatique

0 minutes

Obtenez votre certificat pour ce cours gratuitement ! en téléchargeant lapplication Cursa et en lisant lebook qui sy trouve. Disponible sur Google Play ou App Store !

Get it on Google Play Get it on App Store

+ 6,5 millions
d'étudiants

Certificat gratuit et
valide avec QR Code

48 mille exercices
gratuits

Note de 4,8/5 dans les
magasins d'applications

Cours gratuits en
vidéo, audio et texte