Cet article est le septième de notre série consacrée aux métriques de classification, dans le cadre de notre formation : Evaluer la performance des modèles de Machine Learning et de Deep Learning.
Qu’est-ce que l’accuracy ?
L’accuracy est une métrique pour évaluer la performance des modèles de classification à 2 classes ou plus. L’accuracy peut être traduite par “précision” en français mais on risque alors de la confondre avec la métrique Precision (voir l’article Precision & Recall).
Comme les autres métriques, l’accuracy est basée sur la matrice de confusion. Pour rappel, la matrice de confusion est composée de 4 valeurs :
Figure 1. Matrice de confusion
L’accuracy permet de décrire la performance du modèle sur les individus positifs et négatifs de façon symétrique. Elle mesure le taux de prédictions correctes sur l’ensemble des individus :
\begin{equation*} \frac{TP+TN}{TP+TN+FP+FN} \end{equation*}
La figure ci-dessous permet de bien visualiser cet indicateur :
Figure 2. Calcul de l’accuracy.
L’accuracy répond à la question : combien d’individus ont été correctement prédits ? ([1] modifiée)
Prenons le cas d’un diagnostic de grossesse pour mieux comprendre à quoi correspondent ces valeurs :
Figure 3. Matrice de confusion et Accuracy. Adapté de 2 photos de National Cancer Institute sur Unsplash.
Les 4 cas présents dans la matrice de confusion affectent l’accuracy :
- Vrai positif : l’accuracy augmente.
Le médecin a fait une prédiction positive et elle est bonne.
- Vrai négatif : l’accuracy augmente.
Le médecin a fait une prédiction négative et elle est bonne.
- Faux positif : l’accuracy diminue.
Le médecin a fait une prédiction positive et s’est trompé.
- Faux négatif : l’accuracy diminue.
Le médecin a fait une prédiction négative et s’est trompé.
Avec ces 4 cas, on identifie bien la symétrie des individus négatifs et des individus positifs dans la définition de l’accuracy.
Calcul sur un exemple simple
Comment calcule-t-on l’accuracy à partir des prédictions d’un modèle ? Faisons le calcul à la main sur un petit nombre d’individus.
Accuracy pour un seuil de classification
Supposons qu’à partir de réponses à un questionnaire ou d’analyses médicales, un modèle de machine learning donne une probabilité d’être enceinte à chaque patiente. Le médecin convertit ces probabilités en labels enceinte / pas enceinte en prenant en compte un seuil de classification (classification threshold) à partir duquel il considère que la probabilité est significative. Pour plus de détails, consulter l’article sur la matrice de confusion.
En comparant les labels prédits à la réalité, on construit la matrice de confusion afin d’évaluer la qualité des prédictions issues du modèle, et on calcule l’accuracy :
Figure 4. Calcul de l’Accuracy pour le diagnostic de grossesse. Ici avec un seuil de classification à 30%.
Pour un même modèle, on obtient différentes matrices de confusion en fonction du choix du seuil fait par le médecin. On obtient donc aussi différentes accuracy.
Courbe de l’Accuracy
L’animation suivante montre différentes valeurs d’accuracy obtenues pour les mêmes probabilités issues du modèle mais avec différents seuils de classification.
Figure 5. Evolution du seuil de classification et courbe de l’accuracy
A travers cet exemple basique, il est difficile de comprendre l’influence du seuil sur l’accuracy. Mais intuitivement, on perçoit que deux tendances s’opposent :
- Si l’on choisit un seuil faible, les individus seront tous prédits positifs. Alors le nombre de vrais positifs sera maximal, ce qui influence l’accuracy à la hausse. Mais le nombre de faux positifs sera lui aussi élevé, ce qui réduit l’accuracy.
- Si l’on choisit un seuil élevé, les individus seront tous prédits négatifs. Alors le nombre de vrais négatifs sera maximal, ce qui influence l’accuracy à la hausse. Mais le nombre de faux négatifs sera lui aussi élevé, ce qui réduit l’accuracy.
Lorsqu’on s’intéresse uniquement à l’accuracy pour évaluer la performance d’un modèle, on retient généralement le seuil qui la maximise.
Calcul sur des données réelles
Appliquons à présent le calcul de l’accuracy à de vraies données. Pour cela, nous utilisons le jeu de données Telco Customer Churn [2]. Ces données permettent de prédire les résiliations des clients d’une agence de télécommunication en fonction de leurs offres, de leurs tarifs et des autres informations associées aux contrats.
Modèle de prédiction de la résiliation (churn) des clients
Calculons l’accuracy du modèle sur nos données, à partir du modèle xgboost entraîné (code dans le premier article). L’Accuracy peut être calculée grâce à la fonction de scikit-learn : sklearn.metrics.accuracy_score [3].
En utilisant les labels prédits par la méthode predict du modèle, on peut calculer l’accuracy de notre modèle :
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_true=y_test, y_pred=label_pred)
print(accuracy)
Sous R, on peut utiliser la fonction confusionMatrix() du package caret.
Attention, l’accuracy dépend du seuil de classification! En l’utilisant directement sur les labels prédits on peut oublier qu’il y a dans la méthode predict() un choix implicite du seuil de classification (à 50%). Pour connaître l’ensemble des valeurs d’accuracy possibles, le code suivant permet de calculer l’accuracy à partir des probabilités du modèle, sur une grille de seuils :
# Définition des seuils de classification pour lesquels on va calculer
# les scores d'accuracy
threshold_array = np.linspace(0, 1, 100)
accuracy_list = []
for threshold in threshold_array:
# Labels prédits pour un seuil donné
label_pred_threshold = (probas_pred > threshold).astype(int)
# Calcul de l'accuracy pour un seuil donné
accuracy_threshold = accuracy_score(
y_true=y_test, y_pred=label_pred_threshold
)
accuracy_list.append(accuracy_threshold)
plt.plot(threshold_array, accuracy_list)
plt.show()
En examinant cette courbe point par point, on observe qu’à chaque seuil de classification choisi, la matrice de confusion et l’accuracy évoluent :
Figure 6. Courbe Accuracy d’un modèle de Machine Learning
Graphe supérieur gauche : distribution des probabilités de résiliation prédites. 1 point = 1 client, coloré en orange s’il a effectivement résilié (churn), en bleu s’il n’a pas résilié (no churn). Graphe inférieur gauche : matrice de confusion pour chaque seuil de classification. Graphe droite : courbe de l’Accuracy en fonction du seuil.
On confirme à la lecture du graphique l’intuition précédemment expliquée :
- Si le seuil est trop faible alors l’accuracy est basse. Pour un seuil à 0%, l’accuracy correspond au taux de positifs, dans l’exemple ci-dessus 27%.
- Si le seuil est trop élevé alors l’accuracy baisse aussi. Pour un seuil à 100%, l’accuracy correspond au taux de négatifs, dans l’exemple ci-dessus 73%.
Le seuil qui maximise l’accuracy dans notre exemple est égal à 16%. L’accuracy vaut alors 80%.
Accuracy d’un modèle non-informatif et d’un modèle parfait
Observons l’accuracy pour les modèles non-informatif et parfait définis dans le premier article de cette série.
Modèle parfait
Un modèle parfait (perfect model/classifier) est un modèle qui sépare parfaitement les individus positifs des individus négatifs.
Nous pouvons prévoir théoriquement l’accuracy d’un modèle parfait. Selon le seuil de classification utilisé, 3 cas sont possibles :
- Seuil trop faible : on prédit correctement les positifs mais on se trompe sur les négatifs : l’accuracy est sous-optimale et croît à mesure que le seuil augmente.
- Seuil optimal (zone de séparation parfaite des deux classes) : on ne se trompe ni sur les positifs ni sur les négatifs : l’accuracy est maximale (100%).
- Seuil trop élevé : on prédit correctement les négatifs mais on se trompe sur les positifs : l’accuracy est à nouveau sous-optimale et décroît à mesure que le seuil augmente.
Traçons cette courbe à partir des données Telco et d’un modèle parfait :
Figure 7. Courbe Accuracy d’un modèle parfait.
Les lignes en pointillés violet délimitent l’intervalle des seuils de classification optimaux.
On observe bien les trois phases que nous venons de décrire théoriquement.
Modèle non-informatif
Un modèle non-informatif est un modèle dans lequel les individus positifs ont la même distribution de probabilités que les individus négatifs.
Calcul théorique de l’Accuracy :
Pour comprendre ce calcul, considérons un modèle non-informatif et un jeu de données contenant un taux de positifs noté p. Nous avons fixé un seuil de classification et obtenons un taux de prédictions positives noté q.
En repartant de la matrice de confusion du modèle non-informatif, calculons la formule de l’accuracy :
Figure 8. Accuracy d’un modèle non-informatif.
Composantes de la matrice exprimées en %. p est le taux de positifs dans le jeu de données et q est le taux de prédictions positives.
Les formules obtenues sont valables pour tout modèle non-informatif. L’accuracy dépend à la fois du taux de positifs et du taux de prédictions positives.
On obtient l’équation d’une droite par rapport à q qui vaut (1-p) quand q=0 (seuil=100%) et p quand q=1 (seuil=0%).
Calcul empirique de l’Accuracy :
Traçons cette courbe à partir des données Telco et d’un modèle prédisant des probabilités aléatoirement selon une loi uniforme :
Figure 9. Courbe Accuracy d’un modèle non-informatif.
Dans un modèle non-informatif, l’accuracy maximale dépend du taux de positifs des données :
- Si il y a plus d’individus positifs que négatifs (p > 1-p) : la performance maximale du modèle vaut p et est atteinte pour le seuil 0% (tous les individus sont prédits positifs).
- Si il y a moins d’individus positifs que négatifs (p < 1-p) : la performance maximale du modèle vaut 1-p et est atteinte pour un seuil à 100% (tous les individus sont prédits négatifs).
Les limites de l’accuracy : accuracy et imbalanced data
L’accuracy est une métrique fréquemment utilisée pour évaluer les modèles de classification car :
- Elle est facile à calculer.
- Elle est facile à interpréter, c’est la proportion d’individus correctement prédits.
- Elle résume la performance du modèle avec une valeur unique.
L’accuracy présente cependant de fortes limites en présence de données déséquilibrées (imbalanced data). Des données sont dites déséquilibrées lorsqu’une des classes est plus fréquente que l’autre (par exemple plus d’individus négatifs que positifs). L’utilisation de l’accuracy dans le cas où les données sont fortement déséquilibrées est une erreur fréquente chez les débutants en classification.
Prenons l’exemple de données pour lesquelles seulement 10% des individus sont positifs. Il suffit de prédire tous les individus comme négatifs pour atteindre une accuracy de 90%, ce qui est généralement considéré comme une très bonne performance. Les valeurs obtenues avec l’accuracy en présence de données déséquilibrées sont donc à utiliser avec précaution. Cette situation courante est appelée l’“accuracy paradox”.
Si l’on veut tout de même avoir recours à l’accuracy avec des données déséquilibrées, il vaut mieux utiliser la Balanced Accuracy Weigthed.
Conclusion
L’accuracy est une métrique de performance qui évalue la capacité d’un modèle de classification à bien prédire à la fois les individus positifs et les individus négatifs. Comme la plupart des métriques, elle est calculée à partir de la matrice de confusion et dépend donc du seuil de classification utilisé pour convertir les probabilités en labels.
Pour un modèle parfait, l’accuracy maximale est de 100% lorsque le seuil est optimal. Pour un modèle non-informatif elle est égale à max(taux de positifs, taux de négatifs).
Du fait de sa simplicité et son caractère synthétique, l’accuracy est une métrique populaire. Elle n’est cependant pas la métrique la plus exploitable pour mesurer l’intérêt opérationnel d’un modèle, et doit être interprétée avec prudence en présence de données déséquilibrées.
Pour explorer d’autres métriques de classification, consultez les articles de cette série.
- 2 jours
- 950€
- 2 jours
- 1 200€
Références :
- Walber, English: Precision and recall. 2014. [En ligne]. Disponible sur: https://commons.wikimedia.org/wiki/File:Precisionrecall.svg
- « Telco Customer Churn ». https://kaggle.com/blastchar/telco-customer-churn
- « sklearn.metrics.balanced_accuracy_score », scikit-learn. https://scikit-learn/stable/modules/generated/sklearn.metrics.balanced_accuracy_score.html
Crédit image : Nikolos N – Dribbble