dernière mise à jour le 2 août 2020
la précision de la Classification est le nombre total de prédictions correctes divisé par le nombre total de prédictions effectuées pour un ensemble de données.
en tant que mesure du rendement, la précision est inappropriée pour les problèmes de classification déséquilibrés.,
la raison principale est que le nombre écrasant d’exemples de la classe majoritaire (ou des classes) va submerger le nombre d’exemples de la classe minoritaire, ce qui signifie que même les modèles peu habiles peuvent atteindre des scores de précision de 90 pour cent, ou 99 pour cent, selon la gravité du déséquilibre de classe.
Une alternative à l’utilisation de la précision de classification consiste à utiliser des mesures de précision et de rappel.
dans ce tutoriel, vous découvrirez comment calculer et développer une intuition pour la précision et le rappel pour la classification déséquilibrée.,
Après avoir terminé ce tutoriel, vous saurez:
- Precision quantifie le nombre de prédictions de classe positive qui appartiennent réellement à la classe positive.
- Recall quantifie le nombre de prédictions de classe positives faites à partir de tous les exemples positifs de l’ensemble de données.
- F-Measure fournit un score unique qui équilibre à la fois les préoccupations de précision et de rappel en un seul nombre.
lancez votre projet avec mon nouveau livre classification déséquilibrée avec Python, y compris des tutoriels étape par étape et les fichiers de code source Python pour tous les exemples.,
nous allons commencer.
- mise à jour Jan / 2020: amélioration du langage sur l’objectif de précision et de rappel. Correction de fautes de frappe sur ce que la précision et le rappel cherchent à minimiser (merci pour les commentaires!).
- mise à jour février/2020: correction d’une faute de frappe dans le nom de la variable pour recall et f1.
comment calculer la précision, le rappel et la mesure F pour une Classification déséquilibrée
Photo de Waldemar Merger, certains droits sont réservés.,
aperçu du tutoriel
Ce tutoriel est divisé en cinq parties:
- matrice de Confusion pour la Classification déséquilibrée
- précision pour la Classification déséquilibrée
- rappel pour la Classification déséquilibrée
- précision vs rappel pour la Classification déséquilibrée
- F-mesure pour la Classification déséquilibrée
matrice de Confusion pour la Classification déséquilibrée
avant de plonger dans la précision et le rappel, il est important de revoir la matrice de confusion.,
pour les problèmes de classification déséquilibrés, la classe majoritaire est généralement appelée résultat négatif (p. ex. « aucun changement” ou « résultat de test négatif »), et la classe minoritaire est généralement appelée résultat positif (p. ex. « changement” ou « résultat de test positif”).
la matrice de confusion fournit plus d’informations non seulement sur les performances d’un modèle prédictif, mais également sur les classes qui sont prédites correctement, lesquelles incorrectement et quel type d’erreurs sont commises.,
la matrice de confusion la plus simple concerne un problème de classification à deux classes, avec des classes négatives (Classe 0) et positives (classe 1).
dans ce type de matrice de confusion, chaque cellule du tableau a un nom spécifique et bien compris, résumé comme suit:
Les mesures de précision et de rappel sont définies en termes de cellules dans la matrice de confusion, en particulier des termes comme les vrais positifs et les faux négatifs.
maintenant que nous avons brossé la matrice de confusion, regardons de plus près la métrique de précision.,
précision pour la Classification déséquilibrée
La précision est une mesure qui quantifie le nombre de prédictions positives correctes faites.
la précision calcule donc la précision pour la classe minoritaire.
Il est calculé comme le rapport des exemples positifs correctement prédits divisé par le nombre total d’exemples positifs qui ont été prédits.
Précision évalue la fraction de corriger classés cas parmi ceux qui sont classés comme positifs …
— Page 52, l’Apprentissage du Déséquilibre des Ensembles de Données, en 2018.,
précision pour la Classification binaire
dans un problème de classification déséquilibrée avec deux classes, la précision est calculée comme le nombre de vrais positifs divisé par le nombre total de vrais positifs et de faux positifs.
- Precision = Truepositifs/(Truepositifs + Falsepositifs)
le résultat est une valeur comprise entre 0.0 pour aucune précision et 1.0 Pour une précision complète ou parfaite.
concrétisons ce calcul avec quelques exemples.,
considérons un ensemble de données avec un ratio minorité / majorité de 1:100, avec 100 exemples de minorités et 10 000 exemples de classes majoritaires.
un modèle fait des prédictions et prédit 120 exemples comme appartenant à la classe minoritaire, dont 90 sont corrects et 30 sont incorrects.
La précision de ce modèle est calculé comme suit:
- Précision = TruePositives / (TruePositives + FalsePositives)
- Précision = 90 / (90 + 30)
- Précision = 90 / 120
- Précision = 0.75
Le résultat est une précision de 0,75, ce qui est une valeur raisonnable, mais elle n’est pas exceptionnelle.,
Vous pouvez voir que la précision est simplement le rapport des prédictions positives correctes sur toutes les prédictions positives faites, ou la précision des prédictions de classe minoritaire.
considérons le même ensemble de données, où un modèle prédit 50 exemples appartenant à la classe minoritaire, dont 45 vrais positifs et cinq faux positifs. Nous pouvons calculer la précision de ce modèle comme suit:
- Precision = Truepositifs / (Truepositifs + Falsepositifs)
- Precision = 45 / (45 + 5)
- précision = 45/50
- Précision = 0.,90
dans ce cas, bien que le modèle ait prédit beaucoup moins d’exemples comme appartenant à la classe minoritaire, le rapport des exemples positifs corrects est bien meilleur.
cela souligne que bien que la précision soit utile, elle ne raconte pas toute l’histoire. Il ne commente pas le nombre d’exemples de classe positifs réels qui ont été prédits comme appartenant à la classe négative, ce qu’on appelle les faux négatifs.
vous Voulez commencer Avec le Déséquilibre de la Classification?
suivez mon cours intensif de messagerie gratuit de 7 jours maintenant (avec un exemple de code).,
Cliquez pour vous inscrire et obtenez également une version Ebook PDF gratuite du cours.
téléchargez Votre Mini-cours gratuit
précision pour la Classification multi-classes
La précision ne se limite pas aux problèmes de classification binaire.
dans un problème de classification déséquilibré avec plus de deux classes, la précision est calculée comme la somme des vrais positifs dans toutes les classes divisée par la somme des vrais positifs et des faux positifs dans toutes les classes.,
- Precision = Sum c dans C TruePositives_c/Sum c dans C (TruePositives_c + FalsePositives_c)
par exemple, nous pouvons avoir un problème de classification multiclasse déséquilibrée où la classe majoritaire est la classe négative, mais il existe deux classes minoritaires positives: la classe 1 et la classe 2. La précision peut quantifier le rapport des prédictions correctes entre les deux classes positives.,
considérons un ensemble de données avec un rapport de classe minoritaire à majoritaire de 1:1:100, c’est-à-dire un rapport de 1:1 pour chaque classe positive et un rapport de 1:100 pour les classes minoritaires à la classe majoritaire, et nous avons 100 exemples dans chaque classe minoritaire et 10 000 exemples dans la classe majoritaire.
un modèle fait des prédictions et prédit 70 exemples pour la première classe minoritaire, où 50 sont corrects et 20 sont incorrects. Il prédit 150 pour la deuxième classe avec 99 correct et 51 incorrect., La précision peut être calculée pour ce modèle comme suit:
Nous pouvons voir que le calcul de la métrique de précision évolue à mesure que nous augmentons le nombre de classes minoritaires.
calculer la précision avec Scikit-Learn
le score de précision peut être calculé en utilisant la fonction precision_score() scikit-learn.
par exemple, nous pouvons utiliser cette fonction pour calculer la précision des scénarios de la section précédente.
Tout d’abord, le cas où il y a 100 exemples positifs à 10 000 exemples négatifs, et un modèle prédit 90 vrais positifs et 30 faux positifs. L’exemple complet ci-dessous.,
Running the example calculates the precision, matching our manual calculation.
1
|
Precision: 0.,750
|
ensuite, nous pouvons utiliser la même fonction pour calculer la précision du problème multiclasse avec 1:1:100, avec 100 exemples dans chaque classe minoritaire et 10 000 dans la classe majoritaire. Un modèle prédit 50 vrais positifs et 20 faux positifs pour la classe 1 et 99 vrais positifs et 51 faux positifs pour la classe 2.,
lors de l’utilisation de la fonction precision_score() pour la classification multiclasse, il est important de spécifier les classes minoritaires via l’argument « labels” et de définir l’argument « average” sur « micro » pour s’assurer que le calcul est effectué comme prévu.
L’exemple complet ci-dessous.
encore une fois, l’exécution de l’exemple calcule la précision de l’exemple multiclasse correspondant à notre calcul manuel.,
1
|
Précision: 0.,677
|
rappel pour Classification déséquilibrée
rappel est une mesure qui quantifie le nombre de prédictions positives correctes faites à partir de toutes les prédictions positives qui auraient pu être faites.
contrairement à precision qui ne commente que les prédictions positives correctes parmi toutes les prédictions positives, recall fournit une indication des prédictions positives manquées.
de cette façon, recall fournit une certaine notion de la couverture de la classe positive.,
pour un apprentissage déséquilibré, le rappel est généralement utilisé pour mesurer la couverture de la classe minoritaire.
— Page 27, Déséquilibre de l’Apprentissage: les Bases, Algorithmes et Applications, 2013.
rappel pour la Classification binaire
dans un problème de classification déséquilibrée avec deux classes, le rappel est calculé comme le nombre de vrais positifs divisé par le nombre total de vrais positifs et de faux négatifs.
- Rappel = TruePositives / (TruePositives + FalseNegatives)
Le résultat est une valeur entre 0.,0 pour aucun rappel et 1.0 Pour rappel complet ou parfait.
concrétisons ce calcul avec quelques exemples.
comme dans la section précédente, considérons un ensemble de données avec un ratio minorité / majorité de 1:100, avec 100 exemples de minorités et 10 000 exemples de classes majoritaires.
un modèle fait des prédictions et prédit 90 des prédictions de classe positive correctement et 10 incorrectement. Nous pouvons calculer le rappel pour ce modèle comme suit:
- Rappel = TruePositives / (TruePositives + FalseNegatives)
- Rappel = 90 / (90 + 10)
- Rappel = 90 / 100
- Rappel = 0.,9
Ce modèle a un bon rappel.
rappel pour la Classification multiclasse
le rappel ne se limite pas aux problèmes de classification binaire.
dans un problème de classification déséquilibrée avec plus de deux classes, le rappel est calculé comme la somme des vrais positifs dans toutes les classes divisée par la somme des vrais positifs et des faux négatifs dans toutes les classes.,
- Recall = Sum C in C TruePositives_c/Sum c in C (TruePositives_c + FalseNegatives_c)
comme dans la section précédente, considérons un ensemble de données avec un rapport de classe minoritaire à majoritaire de 1:1:100, c’est-à-dire un rapport de 1:1 pour chaque classe positive et un rapport de 1:100 pour 10 000 exemples dans la classe majoritaire.
un modèle prédit 77 exemples correctement et 23 incorrectement pour la classe 1, et 95 correctement et cinq incorrectement pour la classe 2., Nous pouvons calculer le rappel pour ce modèle comme suit:
calculer le rappel avec Scikit-Learn
le score de rappel peut être calculé en utilisant la fonction recall_score() scikit-learn.
Par exemple, nous pouvons utiliser cette fonction pour calculer le rappel pour les scénarios ci-dessus.
tout d’abord, nous pouvons considérer le cas d’un déséquilibre 1:100 avec respectivement 100 et 10 000 exemples, et un modèle prédit 90 vrais positifs et 10 faux négatifs.
L’exemple complet ci-dessous.
en exécutant l’exemple, nous pouvons voir que le score correspond au calcul manuel ci-dessus.,
1
|
Rappel: 0.,900
|
Nous pouvons également utiliser recall_score() pour les problèmes de classification multiclasse déséquilibrés.
dans ce cas, l’ensemble de données présente un déséquilibre de 1:1:100, avec 100 dans chaque classe minoritaire et 10 000 dans la classe majoritaire. Un modèle prédit 77 vrais positifs et 23 de faux négatifs pour la classe 1 et 95 vrais positifs et cinq faux négatifs pour la classe 2.
L’exemple complet ci-dessous.
encore une fois, l’exécution de l’exemple calcule le rappel pour l’exemple multiclasse correspondant à notre calcul manuel.,
1
|
Rappel: 0.860
|
Précision vs, Rappel pour Classification déséquilibrée
Vous pouvez décider d’utiliser precision ou recall sur votre problème de classification déséquilibrée.
maximiser la précision minimisera le nombre de faux positifs, tandis que maximiser le rappel minimisera le nombre de faux négatifs.
- précision: L’accent est mis sur la minimisation des faux positifs.
- rappel: approprié lors de la réduction de faux négatifs est le focus.
Parfois, nous voulons d’excellentes prédictions positive de la classe. Nous voulons une haute précision et un rappel élevé.,
cela peut être difficile, car les augmentations de rappel se font souvent au détriment des diminutions de précision.
dans les jeux de données déséquilibrés, l’objectif est d’améliorer le rappel sans nuire à la précision. Ces objectifs, cependant, sont souvent contradictoires, car afin d’augmenter le TP pour la classe minoritaire, le nombre de PF est également souvent augmenté, ce qui entraîne une précision réduite.
— Page 55, apprentissage déséquilibré: fondements, algorithmes et Applications, 2013.,
néanmoins, au lieu de choisir une mesure ou l’autre, nous pouvons choisir une nouvelle métrique qui combine à la fois la précision et le rappel dans une partition.
F-mesure de Classification déséquilibrée
la précision de Classification est largement utilisée car il s’agit d’une seule mesure utilisée pour résumer la performance du modèle.
F-Measure permet de combiner la précision et le rappel en une seule mesure qui capture les deux propriétés.
seul, ni la précision ni le rappel ne racontent toute l’histoire., Nous pouvons avoir une excellente précision avec un rappel terrible, ou alternativement, une précision terrible avec un rappel excellent. F-measure fournit un moyen d’exprimer les deux préoccupations avec un seul score.
Une fois que la précision et le rappel ont été calculés pour un problème de classification binaire ou multiclasse, les deux scores peuvent être combinés dans le calcul de la mesure F.
La traditionnelle F-mesure est calculée comme suit:
- la F-Mesure = (2 * Précision * Rappel) / (Précision + Rappel)
C’est la moyenne harmonique des deux fractions., Ceci est parfois appelé le F-Score ou le F1-Score et pourrait être la mesure la plus courante utilisée sur les problèmes de classification déséquilibrés.
the la mesure F1, qui pondère également la précision et le rappel, est la variante la plus souvent utilisée lors de l’apprentissage à partir de données déséquilibrées.
— Page 27, Déséquilibre de l’Apprentissage: les Bases, Algorithmes et Applications, 2013.
comme la précision et le rappel, un score de mesure F médiocre est de 0,0 et un score de mesure F meilleur ou parfait est de 1.,0
Par exemple, une parfaite précision et le rappel score aurait pour résultat parfait F-Mesure de score:
- la F-Mesure = (2 * Précision * Rappel) / (Précision + Rappel)
- la F-Mesure = (2 * 1.0 * 1.0) / (1.0 + 1.0)
- la F-Mesure = (2 * 1.0) / 2.0
- la F-Mesure = 1.0
nous allons faire ce calcul en béton avec un exemple concret.
considérons un ensemble de données de classification binaire avec un rapport minorité / majorité de 1:100, avec 100 exemples de minorités et 10 000 exemples de classes majoritaires.,
considérons un modèle qui prédit 150 exemples pour la classe positive, 95 sont corrects (vrais positifs), ce qui signifie que cinq ont été manqués (faux négatifs) et 55 sont incorrects (faux positifs).
On peut calculer la précision comme suit:
- Précision = TruePositives / (TruePositives + FalsePositives)
- Précision = 95 / (95 + 55)
- Précision = 0.633
Nous pouvons calculer le rappel de la façon suivante:
- Rappel = TruePositives / (TruePositives + FalseNegatives)
- Rappel = 95 / (95 + 5)
- Rappel = 0.,95
cela montre que le modèle a une précision médiocre, mais un excellent rappel.
enfin, nous pouvons calculer la mesure F comme suit:
Nous pouvons voir que le bon rappel nivelle la mauvaise précision, donnant un score de mesure F correct ou raisonnable.
calculer la F-mesure avec Scikit-Learn
le score de la f-mesure peut être calculé à l’aide de la fonction f1_score() scikit-learn.
Par exemple, nous utilisons cette fonction pour calculer F-Mesure pour le scénario ci-dessus.,
c’est le cas d’un déséquilibre 1:100 avec respectivement 100 et 10 000 exemples, et un modèle prédit 95 vrais positifs, cinq faux négatifs et 55 faux positifs.
L’exemple complet ci-dessous.
L’exécution de l’exemple calcule la mesure F, correspondant à notre calcul manuel, dans quelques erreurs d’arrondi mineures.,
1
|
F-Mesure: 0.,760
|
Lecture
Cette section fournit plus de ressources sur le sujet si vous cherchez à aller plus loin.
tutoriels
- Comment calculer la précision, le rappel, F1 et plus pour les modèles D’apprentissage profond
- Comment utiliser les courbes ROC et les courbes de rappel de précision pour la Classification en Python
Papers
- A Systematic Analysis Of Performance Measures For Classification Tasks, 2009.
Livres
- Déséquilibre de l’Apprentissage: les Bases, Algorithmes et Applications, 2013.,
- apprendre des ensembles de données déséquilibrés, 2018.
API
- sklearn.métrique.API precision_score.
- sklearn.métrique.API recall_score.
- sklearn.métrique.F1_SCORE API.
Articles
- la Confusion de la matrice, Wikipedia.
- précision et rappel, Wikipedia.
- score F1, Wikipedia.
résumé
dans ce tutoriel, vous avez découvert comment calculer et développer une intuition pour la précision et le rappel pour la classification déséquilibrée.,
plus précisément, vous avez appris:
- La précision quantifie le nombre de prédictions de classe positive qui appartiennent réellement à la classe positive.
- Recall quantifie le nombre de prédictions de classe positives faites à partir de tous les exemples positifs de l’ensemble de données.
- F-Measure fournit un score unique qui équilibre à la fois les préoccupations de précision et de rappel en un seul nombre.
avez-vous des questions?
Posez vos questions dans les commentaires ci-dessous et je ferai de mon mieux pour y répondre.,
Obtenez une Poignée sur le Déséquilibre de Classement!
développez des modèles D’apprentissage déséquilibrés en quelques minutes
…avec seulement quelques lignes de code python
Découvrez comment dans mon nouvel Ebook:
classification déséquilibrée avec Python
Il fournit des tutoriels d’auto-étude et des projets de bout en bout sur:
métriques de Performance, méthodes de sous-échantillonnage, SMOTE, déplacement de seuil, étalonnage de probabilité, algorithmes sensibles aux coûts
et bien plus encore…,
apportez des méthodes de Classification déséquilibrées à vos projets D’apprentissage automatique
voir ce Qu’il y a à l’intérieur