Como você calcula a precisão e o recall para a classificação multiclasse usando a matriz de confusão?

92

Gostaria de saber como calcular precisão e recordar usando uma matriz de confusão para um problema de classificação de várias classes. Especificamente, uma observação só pode ser atribuída à sua classe / rótulo mais provável. Eu gostaria de calcular:

  • Precisão = TP / (TP + FP)
  • Rechamada = TP / (TP + FN)

para cada classe e depois calcule a F-medida micro-média.

daiyue
fonte
Este docx , Avaliar um modelo de classificação - O que significa precisão e lembrar-me dizer? , da Compumine fornece uma introdução simples à matriz de confusão e as medidas derivadas dela. Ajuda a criar a matriz de confusão, precisão, recall, especificidade e exatidão.
Jayran Choopan
4
encontre a resposta aqui. Explicação muito boa youtube.com/watch?v=FAr2GmWNbT0
O link Compumine está morto.
Trenton
Para o caso multiclasse, o que eu entendo é que ao longo das linhas (eixo = 0) é o recall e ao longo das colunas (eixo = 1) é a precisão. rxnlp.com/…
MD ZIA ULLAH

Respostas:

69

Em um caso de 2 hipóteses, a matriz de confusão é geralmente:

       | Declare H1  |  Declare H0 |
|Is H1 |    TP       |   FN        |
|Is H0 |    FP       |   TN        |

onde eu usei algo semelhante à sua notação:

  • TP = verdadeiro positivo (declarar H1 quando, na verdade, H1),
  • FN = falso negativo (declarar H0 quando, na verdade, H1),
  • FP = falso positivo
  • TN = verdadeiro negativo

A partir dos dados brutos, os valores na tabela normalmente seriam as contagens para cada ocorrência nos dados de teste. A partir disso, você deve poder calcular as quantidades necessárias.

Editar

A generalização para problemas de várias classes é somar sobre linhas / colunas da matriz de confusão. Dado que a matriz está orientada como acima, ou seja, que uma determinada linha da matriz corresponde a um valor específico para a "verdade", temos:

Precision i=MiijMji

Recall i=MiijMij

Ou seja, precisão é a fração de eventos em que declaramos corretamente de todas as instâncias em que o algoritmo declarou . Por outro lado, recordar é a fração de eventos em que declaramos corretamente de todos os casos em que o verdadeiro estado do mundo é .iiii

Dave
fonte
1
No meu caso, existem mais de 10 classes, então acho que o FN significará a contagem total de declarar classe H (i), i! = 1; e o mesmo é FP?
Daiyue
Oi, Gostaria de saber quais serão os valores para Precision e Recall, se TP + FP = 0 e TP + FN = 0 para alguma classe real na matriz de confusão.
daiyue 13/03
A precisão da classe ié indefinida se não houver instâncias em que o algoritmo declare i. A rechamada da classe ié indefinida se o conjunto de testes não incluir classe i.
31513 Dave
Meu objetivo final é calcular a Medida Macro F, portanto, preciso de valores de precisão e recuperação para cada classe i; então como calcular a medida Macro-F se os dois casos acima aparecerem em alguma classe i? Em particular, qual é o valor para Fi e a classe i conta como uma das classes M, que o número de elementos em M será contado como o denominador da fórmula para calcular a medida da Macro F.
daiyue 13/03/2013
1
sry, você poderia explicar sua ideia com mais clareza?
Daiyue
31

Bom artigo de resumo, analisando essas métricas para problemas com várias classes:

  • Sokolova, M. e Lapalme, G. (2009). Uma análise sistemática de medidas de desempenho para tarefas de classificação. Processamento e gerenciamento de informações, 45 , p. 427-437. ( pdf )

O resumo diz:

Este artigo apresenta uma análise sistemática de vinte e quatro medidas de desempenho usadas no espectro completo de tarefas de classificação de Aprendizado de Máquina, como binárias, multi-classe, multi-rotuladas e hierárquicas. Para cada tarefa de classificação, o estudo relaciona um conjunto de alterações em uma matriz de confusão a características específicas dos dados. Em seguida, a análise se concentra no tipo de alterações em uma matriz de confusão que não altera uma medida, portanto, preserva a avaliação de um classificador (invariância da medida). O resultado é a taxonomia de invariância da medida em relação a todas as alterações relevantes na distribuição de etiquetas em um problema de classificação. Essa análise formal é suportada por exemplos de aplicativos em que as propriedades de invariância das medidas levam a uma avaliação mais confiável dos classificadores.

James Taylor
fonte
2
Bem-vindo ao site, @JamesTaylor. Você se importaria em fornecer um resumo das informações no artigo vinculado para ajudar os leitores a decidir se é o que eles precisam e caso o link fique inoperante?
gung
8

Usando sklearn e numpy:

from sklearn.metrics import confusion_matrix
import numpy as np

labels = ...
predictions = ...

cm = confusion_matrix(labels, predictions)
recall = np.diag(cm) / np.sum(cm, axis = 1)
precision = np.diag(cm) / np.sum(cm, axis = 0)

Para obter medidas gerais de precisão e recuperação, use

np.mean(recall)
np.mean(precision)
Cristian Garcia
fonte