Évaluation et visualisation du modèle

Apprentissage Machine de bout en bout

Joshua Stapleton

Machine Learning Engineer

Justesse

  • De bons indicateurs de justesse sont essentiels pour évaluer un modèle
  • Résultats faciles à mal interpréter ou à brouiller

Justesse standard :

  • Justesse standard = nb de bonnes réponses / nb de réponses
  • La justesse standard peut être peu utile

Exemple :

# atteint ~99% de justesse pour un jeu de données déséquilibré avec 99 positifs et 1 négatif
for patient_datapoint in heart_disease_dataset:
    model.prediction(patient_datapoint) = 'positive'
Apprentissage Machine de bout en bout

Matrice de confusion

Vrais positifs (VP)

  • Prédiction du modèle = classe réelle = positif
  • Le modèle a prédit une maladie cardiaque, le patient en avait une

Faux positifs (FP)

  • Prédiction du modèle = positif, classe réelle = négatif
  • Le modèle a prédit une maladie cardiaque, le patient n'en avait pas

Faux négatifs (FN)

  • Prédiction du modèle = négatif, classe réelle = positif
  • Le modèle a prédit aucune maladie cardiaque, le patient en avait une

Vrais négatifs (VN)

  • Prédiction du modèle = classe réelle = négatif
  • Le modèle a prédit aucune maladie cardiaque, le patient n'en avait pas
Apprentissage Machine de bout en bout

Justesse équilibrée

  • Meilleur indicateur que la justesse brute pour la plupart des modèles binaires
  • Donne une moyenne pondérée sur les deux classes
  • Justesse équilibrée = (TP + TN) / 2
from sklearn.metrics import balanced_accuracy_score

# Supposons que y_test sont les étiquettes réelles et y_pred les étiquettes prédites
y_pred = model.predict(X_test)
bal_accuracy = balanced_accuracy_score(y_test, y_pred)
print(f"Balanced Accuracy: {bal_accuracy:.2f}")
Balanced Accuracy: 0.85
Apprentissage Machine de bout en bout

Utilisation d'une matrice de confusion

Matrice de confusion

Apprentissage Machine de bout en bout

Validation croisée

Validation croisée

  • Procédure de rééchantillonnage
  • Assure la robustesse des résultats

 

Validation croisée en k plis

  • Paramètre « k » = nb de divisions du jeu de données
  • Nouveau découpage entraînement/test à chaque exécution

Schéma de la validation croisée

Apprentissage Machine de bout en bout

Utilisation de la validation croisée

  • Mise en œuvre simple de la validation croisée en k plis avec sklearn
  • Évaluation indépendante du modèle

Utilisation :

from sklearn.model_selection import cross_val_score, KFold

# diviser les données en 10 parties égales
kfold = KFold(n_splits=5, shuffle=True, random_state=42)

# obtenir la justesse en validation croisée pour un modèle donné cv_results = cross_val_score(model, heart_disease_X, heart_disease_y, cv=kfold, scoring='balanced_accuracy')
Apprentissage Machine de bout en bout

Réglage des hyperparamètres

Hyperparamètre :

  • Paramètre global du modèle (ne change pas pendant l'entraînement)
  • À ajuster pour améliorer la performance
# Hyperparamètres à tester
C_values = [0.001, 0.01, 0.1, 1, 10, 100, 1000]

# Itérer manuellement sur les hyperparamètres
for C in C_values:
    model = LogisticRegression(max_iter=200, C=C)
    model.fit(X_train, y_train)
    accuracy = cross_val_score(model, X, y, cv=kfold, scoring='balanced_accuracy')
    print(f"C = {C}: Bal Acc: {accuracy.mean():.4f} (+/- {accuracy.std():.4f})")
Apprentissage Machine de bout en bout

Exemple de réglage des hyperparamètres

Exemple de sortie pour le réglage des hyperparamètres :

 

C = 0.001: Bal Acc: 0.6200 (+/- 0.0215)
C = 0.01: Bal Acc: 0.7325 (+/- 0.0234)
C = 0.1: Bal Acc: 0.7923 (+/- 0.0202)
C = 1: Bal Acc: 0.8050 (+/- 0.0191)
C = 10: Bal Acc: 0.8034 (+/- 0.0185)
C = 100: Bal Acc: 0.8021 (+/- 0.0187)
C = 1000: Bal Acc: 0.8017 (+/- 0.0188)
Apprentissage Machine de bout en bout

Passons à la pratique !

Apprentissage Machine de bout en bout

Preparing Video For Download...