J'avais une compréhension vague de la fonction d'évaluation (indice d'évaluation), j'ai donc résumé les fonctions d'évaluation typiques. Voici un bref résumé de ce que sont les fonctions d'évaluation, de la signification de chaque fonction d'évaluation et de l'exemple de code lors de son utilisation réelle.
La fonction d'évaluation est ** un indice qui mesure la qualité du modèle entraîné **.
Lorsque vous étudiez l'apprentissage automatique, vous verrez différents noms tels que la fonction objectif, la fonction de perte et la fonction de coût. Commençons par vérifier la différence avec la fonction objectif.
--Fonction objective --Fonctions optimisées pour la formation des modèles
En d'autres termes, la fonction objectif est optimisée pendant l'apprentissage, et la fonction d'évaluation est l'indice pour confirmer la bonté après l'apprentissage.
On dit que la fonction de perte, la fonction de coût et la fonction d'erreur font partie de la fonction objectif. (Il semble y avoir une certaine controverse, mais il semble que vous puissiez y penser comme presque identique.)
Tout d'abord, je résumerai la fonction d'évaluation du problème de régression.
MAE(Mean Absolute Error)
Erreur absolue moyenne. Représente la moyenne des valeurs absolues de la différence entre la valeur vraie et la valeur prédite.
\textrm{MAE} = \frac{1}{N}\sum_{i=1}^{N}|y_{i}-\hat{y}_{i}|
N :Nombre d'enregistrements\\
y_{i} :Vraie valeur du i-ème enregistrement\\
\hat{y}_{i} :Valeur prédite du i-ème enregistrement
from sklearn.metrics import mean_absolute_error
mean_absolute_error(y_true, y_pred)
MSE(Mean Squared Error)
Erreur quadratique moyenne. Représente la moyenne quadratique de la différence entre la valeur vraie et la valeur prévue.
\textrm{MSE} = \frac{1}{N}\sum_{i=1}^{N}(y_{i}-\hat{y}_{i})^{2}
from sklearn.metrics import mean_squared_error
mean_squared_error(y_true, y_pred)
RMSE(Root Mean Squared Error)
Erreur quadratique moyenne. Représente la moyenne quadratique de la différence entre la valeur vraie et la valeur prévue.
\textrm{RMSE} = \sqrt{\frac{1}{N}\sum_{i=1}^{N}(y_{i}-\hat{y}_{i})^{2}}
Il ne peut pas être calculé directement avec le module scikit-learn, il doit donc être calculé à partir de mean_squared_error
.
from sklearn.metrics import mean_squared_error
from numpy as np
np.sqrt(mean_squared_error(y_true, y_pred))
RMSLE(Root Mean Squared Logarithmic Error)
Il représente la moyenne de la différence au carré après avoir pris la valeur logarithmique de la valeur vraie et la valeur prédite.
\textrm{RMSLE} = \sqrt{\frac{1}{N}\sum_{i=1}^{N}(\log (1+y_{i})-\log (1+\hat{y}_{i}))^{2}}
from sklearn.metrics import mean_squared_log_error
from numpy as np
np.sqrt(mean_squared_log_error(y_true, y_pred))
\textrm{R}^{2} = 1 - \frac{\sum_{i=1}^{N}(y_{i}-\hat{y_{i}})^{2}}{\sum_{i=1}^{N}(y_{i}-\bar{y_{i}})^{2}}
\bar{y} = \frac{1}{N}\sum_{i=1}^{N}y_{i}
from sklearn.metrics import r2_score
r2_score(y_true, y_pred)
Dans le problème de classification, nous résumerons les fonctions d'évaluation traitées dans le problème de prédiction s'il s'agit d'un exemple positif ou d'un exemple négatif.
Bien qu'il ne s'agisse pas d'un indice d'évaluation, il est utilisé comme indice d'évaluation pour prédire les cas positifs et négatifs, je vais donc l'expliquer en premier.
La matrice mixte compile les résultats de classification suivants.
--TP (True Positive): prédire correctement l'exemple correct --TN (True Negative): prédire correctement les exemples négatifs --FP (faux positif): prédit comme un exemple positif --FN (False Negative): faussement prédit comme un exemple négatif
from sklearn.metrics import confusion_matrix
confusion_matrix(y_true, y_pred)
Il est émis dans le format suivant.
La valeur prédite est négative | La valeur prédite est un exemple positif | |
---|---|---|
La vraie valeur est un exemple négatif | TN | FP |
La vraie valeur est un exemple positif | FN | TP |
Accuracy
Taux de réponse correct. La prévision représente le pourcentage correct du résultat total de la prévision.
Taux de réponse correct(\textrm{Accuracy}) = \frac{TP + TN}{TP + TN + FP + FN}
from sklearn.metrics import accuracy_score
accuracy_score(y_true, y_pred)
Precision
Taux de conformité. Affiche le pourcentage d'exemples corrects prédit.
Taux de conformité(\textrm{Precision}) = \frac{TP}{TP + FP}
from sklearn.metrics import precision_score
precision_score(y_true, y_pred)
Recall
Rappel. Représente le pourcentage d'exemples corrects prédit.
Rappel(\textrm{Recall}) = \frac{TP}{TP + FN}
from sklearn.metrics import recall_score
recall_score(y_true, y_pred)
F1-score
Valeur F. Représente un indice équilibré de précision et de rappel.
Il est calculé par la moyenne harmonisée de précision et de rappel.
\textrm{F1-score} = \frac{2 \times \textrm{recall} \times \textrm{precision}}{\textrm{recall} + \textrm{precision}}
from sklearn.metrics import f1_score
f1_score(y_true, y_pred)
Ensuite, nous résumerons les fonctions d'évaluation traitées dans le problème de la prédiction de la probabilité, qui est un exemple positif dans le problème de classification.
logloss
Parfois appelé entropie croisée. Il montre à quel point la distribution de probabilité prédite et la distribution de probabilité correcte sont identiques.
\begin{align}
\textrm{logloss} &= -\frac{1}{N}\sum_{i=1}^{N}(y_{i}\log p_{i} + (1 - y_{i} \log (1 - p_{i}))) \\
&=-\frac{1}{N}\sum_{i=1}^{N} \log \acute{p}_{i}
\end{align}
y_{i} :Étiquette indiquant s'il s'agit d'un exemple correct\\
p_{i} :Probabilité prédictive qui est un exemple positif\\
\acute{p}_{i} :Probabilité de prédire la vraie valeur
from sklearn.metrics import log_loss
log_loss(y_true, y_prob)
AUC
Représente la zone en bas de la courbe ROC.
from sklearn.metrics import roc_auc_score
roc_acu_score(y_true, y_prob)
C'est un graphique qui trace la relation entre le taux de vrais positifs et les taux de faux positifs lorsque la valeur de seuil avec la valeur prédite comme exemple positif est déplacée de 0 à 1. Il montre comment le taux de vrais positifs et les taux de faux positifs changent lorsque le seuil est modifié.
Multi-class accuracy
C'est un index qui étend la précision de la classification binaire à la classification multi-classes. Représente le pourcentage d'enregistrements correctement prédits.
from sklearn.metrics import accuracy_score
accuracy_score(y_true, y_pred)
mean-F1/macro-F1/micro-F1
C'est un indice qui étend le score F1 à la classification multi-classes.
--mean-F1: Moyenne du score F1 par enregistrement --macro-F1: Moyenne du score F1 pour chaque classe --micro-F1: Calculez TP / TN / FP / FN pour chaque paire record x classe pour calculer le score F1
from sklearn.metrics import f1_score
f1_score(y_true, y_pred, average='samples')
f1_score(y_true, y_pred, average='macro')
f1_score(y_true, y_pred, average='micro')
Multi-class logloss
Il s'agit d'un index qui étend la perte logarithmique de la classification binaire à la classification multi-classes.
\textrm{multiclass logloss} = -\frac{1}{N}\sum_{i=1}^{N}\sum_{m=1}^{M}y_{i,m}\log p_{i,m}
M :Nombre de cours\\
y_{i,m} :Étiquette indiquant si l'enregistrement i appartient à la classe m\\
p_{i,m} :Probabilité prédite que l'enregistrement i appartienne à la classe m\\
from sklearn.metrics import log_loss
log_loss(y_true, y_prob)
** Ajouté le 25 juin 2020 ** Le tableau de la matrice mixte était incorrect, je l'ai donc corrigé. Merci, @Fizunimo.
Recommended Posts