[PYTHON] Résumé des fonctions d'évaluation utilisées dans l'apprentissage automatique

introduction

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.

Qu'est-ce qu'une fonction d'évaluation?

La fonction d'évaluation est ** un indice qui mesure la qualité du modèle entraîné **.

Différence avec la fonction objective

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.)

Revenir

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))

Coefficient de décision

\textrm{R}^{2}。 Il montre la bonté de l'ajustement de l'analyse de régression.

\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)

Classification binaire (lors de la prédiction des cas positifs ou négatifs)

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.

Matrice mixte

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)

Classification binaire (lors de la prédiction de la probabilité d'être un exemple positif)

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)

Qu'est-ce que la courbe ROC?

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é.

image.png

Classification multi-classes

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)

référence

Postscript

** Ajouté le 25 juin 2020 ** Le tableau de la matrice mixte était incorrect, je l'ai donc corrigé. Merci, @Fizunimo.

Recommended Posts

Résumé des fonctions d'évaluation utilisées dans l'apprentissage automatique
Divulgation complète des méthodes utilisées dans l'apprentissage automatique
Utilisé en EDA pour l'apprentissage automatique
Apprentissage automatique ③ Résumé de l'arbre de décision
Résumé des méthodes fréquemment utilisées chez les pandas
Résumé des commandes fréquemment utilisées dans matplotlib
[python] Techniques souvent utilisées dans l'apprentissage automatique
[Apprentissage automatique] Liste des packages fréquemment utilisés
Résumé du didacticiel d'apprentissage automatique
Apprentissage automatique ⑤ Résumé AdaBoost
Résumé de ce qui a été utilisé dans 100 coups de Pandas (# 1 ~ # 32)
Utilisation des fonctions récursives utilisées chez les pros de la compétition
Résumé des outils utilisés dans la ligne de commande vol.8
Résumé des outils utilisés dans la ligne de commande vol.5
Touchons une partie de l'apprentissage automatique avec Python
Liste des principales distributions de probabilité utilisées en apprentissage automatique et statistiques et code en python
Un mémorandum de méthode souvent utilisé dans l'apprentissage automatique utilisant scikit-learn (pour les débutants)
À propos des tests dans la mise en œuvre de modèles d'apprentissage automatique
Résumé du flux de base de l'apprentissage automatique avec Python
Bases de l'apprentissage automatique (mémoire)
Apprentissage automatique ② Résumé Naive Bayes
Résumé de l'article sur l'apprentissage automatique (auto-écrit)
Importance des ensembles de données d'apprentissage automatique
Apprentissage automatique ④ Résumé du K-plus proche voisin
Le résultat de l'apprentissage automatique des ingénieurs Java avec Python www
Enquête sur l'utilisation du machine learning dans les services réels
Résumé de l'écriture des fichiers .proto utilisés dans gRPC
Un résumé de l'apprentissage automatique Python pour débutant est très concis.
Résumé de l'apprentissage automatique par les débutants de Python
Automatisez les tâches de routine dans l'apprentissage automatique
Résumé des différentes opérations dans Tensorflow
Classification et régression dans l'apprentissage automatique
Résumé de la grammaire fréquemment utilisée dans les pandas
Apprentissage automatique dans Delemas (acquisition de données)
Python: prétraitement dans l'apprentissage automatique: présentation
Prétraitement dans l'apprentissage automatique 2 Acquisition de données
[Anaconda3] Résumé des commandes fréquemment utilisées
Recherche de semences aléatoires dans l'apprentissage automatique
Prétraitement dans l'apprentissage automatique 4 Conversion de données
Défis de Coursera Machine Learning en Python: ex5 (ajustement des paramètres de régularisation)
Algorithme d'apprentissage automatique (généralisation de la régression linéaire)
scikit-learn Comment utiliser le résumé (apprentissage automatique)
Résumé des commandes fréquemment utilisées de django (débutant)
[Linux] Liste des commandes Linux utilisées dans la pratique
Résumé de diverses instructions for en Python
Note récapitulative sur la programmation d'apprentissage automatique Python (Jupyter)
20 sélections recommandées en 2020 de livres d'introduction à l'apprentissage automatique
Résumé des fonctions numpy que je ne connaissais pas
Python: prétraitement en machine learning: acquisition de données
Algorithme d'apprentissage automatique (implémentation de la classification multi-classes)
Modules de fonctions fréquemment utilisées en Python (comme la lecture de fichiers externes)
Résumé des pierres d'achoppement lors de l'installation de CaboCha
Résumé de la classification et de la mise en œuvre des algorithmes d'apprentissage automatique
Résumé des modules et des classes dans Python-TensorFlow2-
Résumé des méthodes intégrées, etc. de la liste Python
[Python] Enregistrement des résultats d'apprentissage (modèles) dans l'apprentissage automatique
Python: prétraitement dans l'apprentissage automatique: conversion de données
[Résumé des livres et cours en ligne utilisés pour l'apprentissage de la programmation et de la science des données]
Algorithme d'apprentissage automatique (résumé de régression linéaire et régularisation)
Python: prétraitement en machine learning: gestion des données manquantes / aberrantes / déséquilibrées