Apprentissage automatique - Mesures de performance
Il existe différentes métriques que nous pouvons utiliser pour évaluer les performances des algorithmes de ML, de classification ainsi que des algorithmes de régression. Nous devons choisir soigneusement les métriques pour évaluer les performances du ML car -
La façon dont les performances des algorithmes ML sont mesurées et comparées dépendra entièrement de la métrique que vous choisissez.
La façon dont vous pondérez l'importance de diverses caractéristiques dans le résultat sera entièrement influencée par la métrique que vous choisissez.
Mesures de performance pour les problèmes de classification
Nous avons discuté de la classification et de ses algorithmes dans les chapitres précédents. Ici, nous allons discuter de diverses mesures de performance qui peuvent être utilisées pour évaluer les prédictions des problèmes de classification.
Matrice de confusion
C'est le moyen le plus simple de mesurer les performances d'un problème de classification où la sortie peut être de deux ou plusieurs types de classes. Une matrice de confusion n'est rien d'autre qu'un tableau à deux dimensions, à savoir. «Réel» et «Prévu» et en outre, les deux dimensions ont «Vrais positifs (TP)», «Vrais négatifs (TN)», «Faux positifs (FP)», «Faux négatifs (FN)» comme indiqué ci-dessous -
Les explications des termes associés à la matrice de confusion sont les suivantes -
True Positives (TP) - C'est le cas lorsque la classe réelle et la classe prévue du point de données sont 1.
True Negatives (TN) - C'est le cas lorsque la classe réelle et la classe prévue du point de données sont égales à 0.
False Positives (FP) - C'est le cas lorsque la classe réelle du point de données est 0 et la classe prévue du point de données est 1.
False Negatives (FN) - C'est le cas lorsque la classe réelle du point de données est 1 et la classe prévue du point de données est 0.
Nous pouvons utiliser la fonction confusion_matrix de sklearn.metrics pour calculer la matrice de confusion de notre modèle de classification.
Précision de la classification
Il s'agit de la mesure de performance la plus courante pour les algorithmes de classification. Il peut être défini comme le nombre de prédictions correctes faites comme un rapport de toutes les prédictions faites. Nous pouvons facilement le calculer par matrice de confusion à l'aide de la formule suivante -
$$ Précision = \ frac {TP + TN} {+++} $$Nous pouvons utiliser la fonction precision_score de sklearn.metrics pour calculer la précision de notre modèle de classification.
Rapport de classification
Ce rapport comprend les scores de Precisions, Recall, F1 et Support. Ils sont expliqués comme suit -
Précision
La précision, utilisée dans les extractions de documents, peut être définie comme le nombre de documents corrects renvoyés par notre modèle ML. Nous pouvons facilement le calculer par matrice de confusion à l'aide de la formule suivante -
$$ Précision = \ frac {TP} {TP + FP} $$Rappel ou sensibilité
Le rappel peut être défini comme le nombre de positifs renvoyés par notre modèle ML. Nous pouvons facilement le calculer par matrice de confusion à l'aide de la formule suivante -
$$ Recall = \ frac {TP} {TP + FN} $$Spécificité
La spécificité, contrairement au rappel, peut être définie comme le nombre de négatifs renvoyés par notre modèle ML. Nous pouvons facilement le calculer par matrice de confusion à l'aide de la formule suivante -
$$ Spécificité = \ frac {TN} {TN + FP} $$Soutien
La prise en charge peut être définie comme le nombre d'échantillons de la vraie réponse qui se trouve dans chaque classe de valeurs cibles.
Score F1
Cette partition nous donnera le moyen harmonique de précision et de rappel. Mathématiquement, le score F1 est la moyenne pondérée de la précision et du rappel. La meilleure valeur de F1 serait 1 et la pire serait 0. Nous pouvons calculer le score F1 à l'aide de la formule suivante -
= ∗ (∗) / (+)
Le score F1 a une contribution relative égale de précision et de rappel.
Nous pouvons utiliser la fonction classification_report de sklearn.metrics pour obtenir le rapport de classification de notre modèle de classification.
AUC (Aire sous la courbe ROC)
AUC (Area Under Curve) -ROC (Receiver Operating Characteristic) est une mesure de performance, basée sur des valeurs de seuil variables, pour les problèmes de classification. Comme son nom l'indique, ROC est une courbe de probabilité et l'ASC mesure la séparabilité. En termes simples, la métrique AUC-ROC nous renseignera sur la capacité du modèle à distinguer les classes. Plus l'AUC est élevée, meilleur est le modèle.
Mathématiquement, il peut être créé en traçant le TPR (True Positive Rate), c'est-à-dire la sensibilité ou le rappel par rapport au FPR (False Positive Rate), c'est-à-dire la spécificité 1, à différentes valeurs de seuil. Voici le graphique montrant ROC, AUC ayant TPR sur l'axe y et FPR sur l'axe x -
Nous pouvons utiliser la fonction roc_auc_score de sklearn.metrics pour calculer AUC-ROC.
LOGLOSS (perte logarithmique)
Elle est également appelée perte de régression logistique ou perte d'entropie croisée. Il se définit essentiellement sur des estimations de probabilité et mesure la performance d'un modèle de classification où l'entrée est une valeur de probabilité comprise entre 0 et 1. Il peut être compris plus clairement en le différenciant avec précision. Comme nous savons que la précision est le nombre de prédictions (valeur prédite = valeur réelle) dans notre modèle, tandis que la perte logarithmique est le degré d'incertitude de notre prédiction en fonction de son écart par rapport à l'étiquette réelle. Avec l'aide de la valeur Log Loss, nous pouvons avoir une vue plus précise des performances de notre modèle. Nous pouvons utiliser la fonction log_loss de sklearn.metrics pour calculer la perte de journal.
Exemple
Ce qui suit est une recette simple en Python qui nous donnera un aperçu de la façon dont nous pouvons utiliser les métriques de performance expliquées ci-dessus sur le modèle de classification binaire -
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report
from sklearn.metrics import roc_auc_score
from sklearn.metrics import log_loss
X_actual = [1, 1, 0, 1, 0, 0, 1, 0, 0, 0]
Y_predic = [1, 0, 1, 1, 1, 0, 1, 1, 0, 0]
results = confusion_matrix(X_actual, Y_predic)
print ('Confusion Matrix :')
print(results)
print ('Accuracy Score is',accuracy_score(X_actual, Y_predic))
print ('Classification Report : ')
print (classification_report(X_actual, Y_predic))
print('AUC-ROC:',roc_auc_score(X_actual, Y_predic))
print('LOGLOSS Value is',log_loss(X_actual, Y_predic))
Production
Confusion Matrix :
[
[3 3]
[1 3]
]
Accuracy Score is 0.6
Classification Report :
precision recall f1-score support
0 0.75 0.50 0.60 6
1 0.50 0.75 0.60 4
micro avg 0.60 0.60 0.60 10
macro avg 0.62 0.62 0.60 10
weighted avg 0.65 0.60 0.60 10
AUC-ROC: 0.625
LOGLOSS Value is 13.815750437193334
Mesures de performance pour les problèmes de régression
Nous avons discuté de la régression et de ses algorithmes dans les chapitres précédents. Ici, nous allons discuter de diverses mesures de performance qui peuvent être utilisées pour évaluer les prédictions des problèmes de régression.
Erreur absolue moyenne (MAE)
Il s'agit de la mesure d'erreur la plus simple utilisée dans les problèmes de régression. Il s'agit essentiellement de la somme de la moyenne de la différence absolue entre les valeurs prévues et réelles. En termes simples, avec MAE, nous pouvons avoir une idée de la fausseté des prédictions. MAE n'indique pas la direction du modèle, c'est-à-dire aucune indication sur la sous-performance ou la surperformance du modèle. Voici la formule pour calculer MAE -
$$ MAE = \ frac {1} {n} \ sum | Y - \ hat {Y} | $$Ici, = valeurs de sortie réelles
Et $ \ hat {Y} $ = Valeurs de sortie prévues.
Nous pouvons utiliser la fonction mean_absolute_error de sklearn.metrics pour calculer MAE.
Erreur quadratique moyenne (MSE)
MSE est comme le MAE, mais la seule différence est qu'il met au carré la différence des valeurs de sortie réelles et prévues avant de les additionner toutes au lieu d'utiliser la valeur absolue. La différence peut être remarquée dans l'équation suivante -
$$ MSE = \ frac {1} {n} \ sum (Y - \ hat {Y}) $$Ici, = valeurs de sortie réelles
Et $ \ hat {Y} $ = Valeurs de sortie prévues.
Nous pouvons utiliser la fonction mean_squared_error de sklearn.metrics pour calculer MSE.
R au carré (R 2 )
R La métrique au carré est généralement utilisée à des fins explicatives et fournit une indication de la qualité ou de l'ajustement d'un ensemble de valeurs de sortie prédites aux valeurs de sortie réelles. La formule suivante nous aidera à le comprendre -
$$ R ^ {2} = 1 - \ frac {\ frac {1} {n} \ sum_ {i {= 1}} ^ n (Y_ {i} - \ hat {Y_ {i}}) ^ 2} {\ frac {1} {n} \ sum_ {i {= 1}} ^ n (Y_ {i} - \ bar {Y_i) ^ 2}} $$Dans l'équation ci-dessus, le numérateur est MSE et le dénominateur est la variance des valeurs.
Nous pouvons utiliser la fonction r2_score de sklearn.metrics pour calculer la valeur R au carré.
Exemple
Ce qui suit est une recette simple en Python qui nous donnera un aperçu de la façon dont nous pouvons utiliser les mesures de performance expliquées ci-dessus sur le modèle de régression -
from sklearn.metrics import r2_score
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
X_actual = [5, -1, 2, 10]
Y_predic = [3.5, -0.9, 2, 9.9]
print ('R Squared =',r2_score(X_actual, Y_predic))
print ('MAE =',mean_absolute_error(X_actual, Y_predic))
print ('MSE =',mean_squared_error(X_actual, Y_predic))
Production
R Squared = 0.9656060606060606
MAE = 0.42499999999999993
MSE = 0.5674999999999999