Como calcular precisão, Recall e F-Measure para classificação desequilibrada

Tweet Share

última atualização em 2 de agosto de 2020

precisão da classificação é o número total de previsões corretas dividido pelo número total de previsões feitas para um conjunto de dados.como medida de desempenho, a precisão é inadequada para problemas de classificação desequilibrados.,

A principal razão é que o número esmagador de exemplos da classe maioritária (ou classes) irá sobrecarregar o número de exemplos na classe minoritária, o que significa que até mesmo modelos pouco habilidosos podem alcançar pontuações de precisão de 90 por cento, ou 99 por cento, dependendo de quão grave o desequilíbrio de classe acontece ser.

uma alternativa ao uso da precisão de classificação é usar métricas de precisão e de recolha.

neste tutorial, você vai descobrir como calcular e desenvolver uma intuição para precisão e recall para classificação desequilibrada.,

Após completar este tutorial, você saberá:

  • precisão quantifica o número de predições de classe positiva que realmente pertencem à classe positiva.
  • Recall quantifies the number of positive class predictions made out of all positive examples in the dataset.
  • F-Measure provides a single score that balances both the concerns of precision and recall in one number.

kick-start o seu projecto com a minha nova classificação desequilibrada do livro em Python, incluindo tutoriais passo-a-passo e os ficheiros de código-fonte em Python para todos os exemplos.,vamos começar.

  • Update Jan / 2020: Improved language about the objective of precision and recall. Erros fixos sobre o que a precisão e a recolha procuram minimizar (obrigado pelos comentários!).atualização Fev/2020: erro tipográfico fixo em nome da variável para recall e f1.

Como Calcular com Precisão, Recall e F-Measure para Desequilibrado Classificação
Foto por Waldemar Fusão, alguns direitos reservados.,

Tutorial Visão geral

Este tutorial é dividido em cinco partes, quais sejam:

  1. Matriz de Confusão para Desequilibrado Classificação
  2. Precisão para Desequilibrado Classificação
  3. Recall para Desequilibrado Classificação
  4. Precisão vs. Recall para Desequilibrado Classificação
  5. F-Measure para Desequilibrado Classificação

Matriz de Confusão para Desequilibrado Classificação

Antes de mergulhar de precisão e recall, é importante rever a matriz de confusão.,

para problemas de classificação desequilibrados, a classe maioritária é normalmente referida como o resultado negativo (por exemplo, “sem alteração” ou “resultado negativo do teste”), e a classe minoritária é tipicamente referida como o resultado positivo (por exemplo, “alteração” ou “resultado positivo do teste”).

a matriz de confusão fornece mais informações sobre não só o desempenho de um modelo preditivo, mas também Quais classes estão sendo previstas corretamente, que incorretamente, e que tipo de erros estão sendo feitos.,

A matriz de confusão mais simples é para um problema de classificação de duas classes, com classes negativas (Classe 0) e positivas (classe 1).

neste tipo de matriz de confusão, cada célula da tabela tem um objetivo específico e bem compreendido, nome, resumidos da seguinte forma:

a precisão e O recall métricas são definidas em termos das células na matriz de confusão, especificamente termos como verdadeiros positivos e falsos negativos.

Agora que temos escovado a matriz de confusão, vamos dar uma olhada mais de perto na métrica de precisão.,

precisão para classificação desequilibrada

precisão é uma métrica que quantifica o número de previsões positivas corretas feitas.

precisão, portanto, calcula a precisão para a classe minoritária.

é calculado como a razão de exemplos positivos corretamente previstos divididos pelo número total de exemplos positivos que foram previstos.

a precisão avalia a fração de instâncias classificadas corretas entre as classificadas como positivas …

— Página 52, aprendendo com conjuntos de dados desequilibrados, 2018.,

precisão para a classificação binária

num problema de classificação desequilibrado com duas classes, a precisão é calculada como o número de verdadeiros positivos divididos pelo número total de verdadeiros positivos e falsos positivos.

  • Precisão = TruePositives / (TruePositives + FalsePositives)

O resultado é um valor entre 0.0 para nenhuma precisão e 1.0 total ou precisão perfeita.

vamos fazer este cálculo concreto com alguns exemplos.,

considere um conjunto de dados com uma proporção minoritária de 1:100 para a maioria, com 100 exemplos de minoria e 10 000 exemplos de classe maioritária.

a model makes predictions and predicts 120 examples as belonging to the minority class, 90 of which are correct, and 30 of which are incorrect.

A precisão para este modelo é calculado como:

  • Precisão = TruePositives / (TruePositives + FalsePositives)
  • Precisão = 90 / (90 + 30)
  • Precisão = 90 / 120
  • Precisão = 0.75

O resultado é de uma precisão de 0,75, o que é um valor razoável, mas não excepcional.,

Você pode ver que a precisão é simplesmente a razão de previsões positivas corretas de todas as previsões positivas feitas, ou a precisão de previsões de classes minoritárias.

considere o mesmo conjunto de dados, onde um modelo prevê 50 exemplos pertencentes à classe minoritária, 45 dos quais são verdadeiros positivos e cinco dos quais são falsos positivos. Podemos calcular a precisão para este modelo da seguinte forma:

  • Precisão = TruePositives / (TruePositives + FalsePositives)
  • Precisão = 45 / (45 + 5)
  • Precisão = 45 / 50
  • Precisão = 0.,90

neste caso, embora o modelo previu muito menos exemplos como pertencentes à classe minoritária, a razão de exemplos positivos corretos é muito melhor.

isto destaca que, embora a precisão é útil, não conta toda a história. Não comenta quantos exemplos reais de classes positivas foram previstos como pertencendo à classe negativa, os chamados falsos negativos.

deseja começar com a classificação de desequilíbrio?

tome o meu curso livre de estoiro de e-mail de 7 dias agora (com o código de exemplo).,

Clique para se inscrever e também obter uma versão ebook PDF livre do curso.

baixe o seu Mini-curso gratuito

precisão para classificação Multi-classes

a precisão não se limita a problemas de classificação binária.

em um problema de classificação desequilibrado com mais de duas classes, a precisão é calculada como a soma dos verdadeiros positivos em todas as classes divididas pela soma dos verdadeiros positivos e falsos positivos em todas as classes.,

  • Precisão = Soma de c em C TruePositives_c / Soma c em C (TruePositives_c + FalsePositives_c)

Por exemplo, podemos ter um desequilibrado multiclass classificação problema onde a maioria da classe é o negativo de classe, mas há duas positivo minoria classes: classe 1 e classe 2. A precisão pode quantificar a proporção de previsões corretas em ambas as classes positivas.,

considere um conjunto de dados com uma proporção de 1:1:100 minoria para maioria, que é uma proporção de 1:1 para cada classe positiva e uma proporção de 1:100 para as classes minoritárias para a classe maioria, e temos 100 exemplos em cada classe minoritária, e 10.000 exemplos na classe maioria.

a model makes predictions and predicts 70 examples for the first minority class, where 50 are correct and 20 are incorrect. Prevê 150 para a segunda classe com 99 correto e 51 incorreto., A precisão pode ser calculada para este modelo da seguinte forma:

Podemos ver que as escalas de cálculo métrico de precisão à medida que aumentamos o número de classes minoritárias.

Calcule a precisão com Scikit-Learn

a pontuação de precisão pode ser calculada usando a função precision_score () scikit-learn.

Por exemplo, podemos usar esta função para calcular a precisão para os cenários na seção anterior.

primeiro, o caso em que existem 100 exemplos positivos a 10.000 negativos, e um modelo prevê 90 positivos verdadeiros e 30 falsos positivos. O exemplo completo está listado abaixo.,

Running the example calculates the precision, matching our manual calculation.

1
Precision: 0.,750

em seguida, podemos usar a mesma função para calcular com precisão para o multiclass problema com 1:1:100, com 100, exemplos em cada uma minoria de classe e 10.000 na maioria de classe. Um modelo prevê 50 positivos verdadeiros e 20 falsos positivos para a classe 1 e 99 positivos verdadeiros e 51 falsos positivos para a classe 2.,

ao usar a função precision_score () para a classificação multiclass, é importante especificar as classes minoritárias através do argumento “labels” e executar definir o argumento “médio” para ‘micro’ para garantir que o cálculo é realizado como esperamos.

O exemplo completo está listado abaixo.

novamente, executando o exemplo calcula a precisão para o exemplo multiclass correspondente ao nosso cálculo manual.,

1
Precisão: 0.,677

Recall para Desequilibrado Classificação

Recall é uma medida que quantifica o número de corrigir positivo previsões feitas fora de todas as previsões positivas que poderia ter sido feito.

Ao contrário da precisão que apenas comentários sobre as previsões positivas corretas de todas as previsões positivas, recall fornece uma indicação de previsões positivas falhadas.

desta forma, recall fornece alguma noção da cobertura da classe positiva.,

para a aprendizagem desequilibrada, a recolha é normalmente usada para medir a cobertura da classe minoritária.

— Page 27, unbalanced Learning: Foundations, Algorithms, and Applications, 2013.

Recall para Binário Classificação

Em um desequilibrado classificação problema com duas classes, relembrar é calculado como o número de verdadeiros positivos, dividido pelo número total de verdadeiros positivos e falsos negativos.

  • Recall = TruePositives / (TruePositives + FalseNegatives)

O resultado é um valor entre 0.,0 sem recall e 1.0 Para recall completo ou perfeito.

vamos fazer este cálculo concreto com alguns exemplos.

Como na secção anterior, considere um conjunto de dados com uma proporção minoritária para a maioria de 1:100, com 100 exemplos de minorias e 10 000 exemplos de classe maioritária.

a model makes predictions and predicts 90 of the positive class predictions correctly and 10 incorretamente. Podemos calcular o recall para este modelo da seguinte forma:

  • Recall = TruePositives / (TruePositives + FalseNegatives)
  • Recall = 90 / (90 + 10)
  • Recall = 90 / 100
  • Recall = 0.,9

Este modelo tem uma boa memória.

Recall for Multi-Class Classification

Recall is not limited to binary classification problems.

em um problema de classificação desequilibrado com mais de duas classes, a recolha é calculada como a soma dos verdadeiros positivos em todas as classes divididas pela soma dos verdadeiros positivos e falsos negativos em todas as classes.,

  • Recall = Soma de c em C TruePositives_c / Soma c em C (TruePositives_c + FalseNegatives_c)

Como na seção anterior, considere um conjunto de dados com um 1:1:100 minoria de maioria de classe de relação, que é uma relação 1:1 para cada positiva de classe e uma de 1:100 proporção para a minoria de classes para a maioria de classe, e temos 100 exemplos em cada uma minoria de classe, e 10.000 exemplos na maioria de classe.

Um modelo prevê 77 exemplos corretamente e 23 incorretamente para a classe 1, e 95 corretamente e cinco incorretamente para a classe 2., Podemos calcular recall para este modelo da seguinte forma:

calcular Recall com Scikit-Learn

a pontuação recall_score() scikit-learn função.

Por exemplo, podemos usar esta função para calcular a recall para os cenários acima.

Primeiro, podemos considerar o caso de um desequilíbrio de 1:100 com 100 e 10.000 exemplos respectivamente, e um modelo prevê 90 positivos verdadeiros e 10 negativos falsos.

O exemplo completo está listado abaixo.

executando o exemplo, podemos ver que a pontuação corresponde ao cálculo manual acima.,

1
Lembre-se: 0.,900

também podemos usar o recall_score() para desequilibrado multiclass problemas de classificação.neste caso, o conjunto de dados tem um desequilíbrio de 1:1:100, com 100 em cada classe minoritária e 10 000 na classe maioritária. Um modelo prevê 77 positivos verdadeiros e 23 negativos falsos para as classes 1 e 95 positivos verdadeiros e cinco negativos falsos para a classe 2.

O exemplo completo está listado abaixo.

novamente, executando o exemplo calcula a recolha para o exemplo multiclass correspondente ao nosso cálculo manual.,

1
Lembre-se: 0.860

Precisão vs., Recordar para classificação desequilibrada

pode decidir usar precisão ou recordar o seu problema de classificação desequilibrado.

maximizar a precisão irá minimizar o número de falsos positivos, enquanto que maximizar a recolha irá minimizar o número de falsos negativos.

  • precisão: Apropriado ao minimizar falsos positivos é o foco.Recall: apropriado quando minimizar falsos negativos é o foco.

às vezes, queremos excelentes predições da classe positiva. Queremos alta precisão e alta recall.,

isto pode ser um desafio, pois muitas vezes os aumentos na recolha muitas vezes vêm à custa de diminuições na precisão.

em conjuntos de dados desequilibrados, o objetivo é melhorar a recolha sem prejudicar a precisão. Estes objetivos, no entanto, são muitas vezes conflitantes, uma vez que, a fim de aumentar o TP para a classe minoritária, o número de FP também é muitas vezes aumentado, resultando em precisão reduzida.

— Page 55, unbalanced Learning: Foundations, Algorithms, and Applications, 2013.,

no entanto, em vez de escolher uma medida ou outra, podemos escolher uma nova métrica que combina precisão e recolha em uma partitura.

F-Measure for balanced Classification

Classification accuracy is widely used because it is one single measure used to summarize model performance.

F-Measure provides a way to combinate both precision and recall into a single measure that captures both properties.

sozinho, nem precisão ou recall conta toda a história., Podemos ter uma excelente precisão com uma péssima memória, ou alternadamente, uma precisão terrível com uma excelente memória. F-measure fornece uma maneira de expressar ambas as preocupações com uma única pontuação.

Uma vez que a precisão e a recolha foram calculadas para um problema de classificação binário ou multiclass, as duas pontuações podem ser combinadas no cálculo da medida F.

a medida f tradicional é calculada do seguinte modo:

  • F-medida = (2 * Precisão * recolha) / (precisão + recolha)

esta é a média harmónica das duas fracções., Isto é às vezes chamado de pontuação F ou pontuação F1 e pode ser a métrica mais comum usada em problemas de classificação desequilibrados.

… a medida F1, que pesa precisão e recall igualmente, é a variante mais usada quando se aprende a partir de dados desequilibrados.

— Page 27, unbalanced Learning: Foundations, Algorithms, and Applications, 2013.

Como precisão e recall, uma má Pontuação de F-Measure é 0.0 e uma melhor ou perfeita pontuação de f-Measure é 1.,0

Por exemplo, com uma perfeita precisão e recall de pontuação, o resultado seria um perfeito F-Medida pontuação:

  • F-Measure = (2 * Precisão * Recall) / (Precisão + Recall)
  • F-Medida = (2 * 1.0 * 1.0) / (1.0 + 1.0)
  • F-Medida = (2 * 1.0) / 2.0
  • F-Measure = 1.0

Vamos fazer esse cálculo de concreto com um exemplo trabalhado.

considere um conjunto de dados de classificação binária com uma proporção minoritária de 1: 100 para a maioria, com 100 exemplos de minoria e 10 000 exemplos de classe maioritária.,

considere um modelo que prevê 150 exemplos para a classe positiva, 95 são corretos( positivos verdadeiros), significando que cinco foram perdidos (negativos falsos) e 55 são incorretos (falsos positivos).

podemos calcular a precisão da seguinte forma:

  • Precisão = TruePositives / (TruePositives + FalsePositives)
  • Precisão = 95 / (95 + 55)
  • Precisão = 0.633

podemos calcular o recall da seguinte forma:

  • Recall = TruePositives / (TruePositives + FalseNegatives)
  • Recall = 95 / (95 + 5)
  • Recall = 0.,95

isto mostra que o modelo tem pouca precisão, mas excelente recolha.

finalmente, podemos calcular a F-Measure da seguinte forma:

Podemos ver que os bons níveis de recolha-para fora da má precisão, dando uma pontuação de f-measure OK ou razoável.

Calcule F-Measure With Scikit-Learn

a pontuação de f-measure pode ser calculada usando a função f1_score () scikit-learn.

Por exemplo, usamos esta função para calcular F-Measure para o cenário acima.,

Este é o caso de um desequilíbrio de 1:100 com 100 e 10.000 exemplos respectivamente, e um modelo prevê 95 positivos verdadeiros, cinco negativos falsos, e 55 falsos positivos.

O exemplo completo está listado abaixo.

executando o exemplo, calcula a medida-F, correspondendo ao nosso cálculo manual, dentro de alguns pequenos erros de arredondamento.,

1
F-Medida: 0.,760

Ler Mais

Esta seção fornece mais recursos sobre o tema, se você está olhando para ir mais fundo.

Tutoriais

  • Como Calcular com Precisão, Recall, F1, e Mais Profunda dos Modelos de Aprendizagem
  • Como Usar Curvas ROC e Precision-Recall Curvas para a Classificação em Python

Artigos

  • Uma Análise Sistemática das Medidas De Desempenho Para Classificação de Tarefas, 2009.

Books

  • aprendizagem desequilibrada: fundações, algoritmos e aplicações, 2013.,aprendizagem a partir de Conjuntos de dados desequilibrados, 2018.

API

  • sklearn.metrica.precision_score API.sklearn.metrica.recall_score API.sklearn.metrica.f1_score API.

Articles

  • Confusion matrix, Wikipedia.
  • Precision and recall, Wikipedia.
  • F1 score, Wikipedia.

resumo

neste tutorial, descobriu como calcular e desenvolver uma intuição para precisão e recolha para uma classificação desequilibrada.,

especificamente, você aprendeu:

  • A precisão quantifica o número de predições de classe positivas que realmente pertencem à classe positiva.
  • Recall quantifies the number of positive class predictions made out of all positive examples in the dataset.
  • F-Measure provides a single score that balances both the concerns of precision and recall in one number.tem alguma pergunta?Faça suas perguntas nos comentários abaixo e farei o meu melhor para responder.,

    obter uma pega na classificação desequilibrada!

    desenvolver modelos de aprendizagem desequilibrados em minutos

    …com apenas algumas linhas de código python

    Descubra como no meu novo e-Book:
    Desequilibrado Classificação com Python

    Ele fornece auto-estudo tutoriais e end-to-end projetos:
    Métricas de Desempenho, Undersampling Métodos, FERIU, Limite de Movimento, a Probabilidade de Calibração, Sensíveis ao Custo Algoritmos
    e muito mais…,

    trazer Métodos de classificação desequilibrados para os seus projectos de aprendizagem com máquinas

    ver o que está dentro de

    Tweet Share

Share

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *