Loading [MathJax]/jax/output/HTML-CSS/config.js

Équilibrage des classes en utilisant des poids

Fonctions :


    Warning: Trying to access array offset on value of type bool in /home/datacrt/www/wp-content/themes/knowledge-base-lite/single-sous-section.php on line 59
  • Équilibrage des classes avec class_weight='balanced'

    L'option class_weight='balanced' permet d'adapter les poids des classes dans un modèle, comme la régression logistique, afin de compenser l'impact des classes déséquilibrées. Cela peut être particulièrement utile lorsque vous avez un jeu de données avec une classe minoritaire fortement déséquilibrée par rapport à la classe majoritaire. Lorsqu'on utilise class_weight='balanced', l'algorithme ajuste automatiquement les poids des classes en fonction de leur fréquence dans le jeu de données. Plus une classe est sous-représentée, plus son poids est élevé. Cela permet au modèle de ne pas favoriser la classe majoritaire et de mieux prédire la classe minoritaire.

    Importation :

    from sklearn.linear_model import LogisticRegression
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import classification_report, confusion_matrix

    Attributs :

    Métrique Description
    classification_report Un rapport détaillé qui affiche la précision, le rappel, la f-mesure et le support pour chaque classe.
    accuracy La proportion de prédictions correctes parmi toutes les prédictions.
    confusion_matrix La matrice de confusion affiche les vrais positifs, les vrais négatifs, les faux positifs et les faux négatifs.

    Exemple de code :

    from sklearn.linear_model import LogisticRegression
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import classification_report, confusion_matrix
    
    # Exemple de données déséquilibrées
    X = ...  # Vos features
    y = ...  # Vos labels (avec une classe majoritaire et une classe minoritaire)
    
    # Diviser les données en ensembles d'entraînement et de test
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
    
    # Entraîner un modèle avec class_weight='balanced'
    model = LogisticRegression(class_weight='balanced', random_state=42)
    model.fit(X_train, y_train)
    
    # Prédictions
    y_pred = model.predict(X_test)
    
    # Affichage des résultats
    print("Classification Report :")
    print(classification_report(y_test, y_pred))
    
    print("Matrice de confusion :")
    print(confusion_matrix(y_test, y_pred))
    Résultat du code

    Explication du code :

    • Préparation des données : Le jeu de données est divisé en deux parties : un ensemble d'entraînement (X_train, y_train) et un ensemble de test (X_test, y_test).
    • Modèle avec équilibrage automatique des classes : La régression logistique est utilisée ici avec l'argument class_weight='balanced' pour ajuster les poids des classes en fonction de leur fréquence dans les données.
    • Prédictions : Le modèle est utilisé pour prédire les classes des données de test.
    • Métriques : Le rapport de classification (précision, rappel, f-mesure) et la matrice de confusion sont affichés pour évaluer la performance du modèle sur les données test.

    Remarques :

    • Ajustement des poids : L’algorithme affecte un poids inversement proportionnel à la fréquence des classes. Si une classe est sous-représentée, son poids sera plus élevé afin de donner plus d'importance à cette classe.
    • Avantages : Cette approche est moins susceptible de provoquer un sur-apprentissage comparée à des méthodes comme le sur-échantillonnage (SMOTE) ou le sous-échantillonnage (RandomUnderSampler).
    • Limites : Bien que cette méthode puisse aider à équilibrer les classes, elle ne garantit pas toujours une amélioration significative si le déséquilibre est extrême.

    Interprétation des Résultats

    • Précision et Rappel : Après l'application de class_weight='balanced', vous devriez observer un changement dans les métriques de précision et de rappel, en particulier pour la classe minoritaire. La précision peut diminuer légèrement si le modèle commence à donner plus de poids à la classe minoritaire, mais le rappel de cette classe devrait augmenter.
    • Matrice de confusion : Vous pouvez également analyser la matrice de confusion pour voir comment les faux positifs et les faux négatifs ont évolué après l'ajustement des poids des classes. Idéalement, les faux négatifs dans la classe minoritaire devraient être réduits.

    Conseils supplémentaires :

    • Ajustement des paramètres : Parfois, il peut être utile d'ajuster les poids manuellement si vous estimez que la méthode automatique balanced ne donne pas de bons résultats pour votre cas particulier.
    • Autres modèles : De nombreux autres modèles, comme les arbres de décision ou les SVM, supportent également l'argument class_weight='balanced' pour compenser le déséquilibre des classes.