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.
Respostas:
Em um caso de 2 hipóteses, a matriz de confusão é geralmente:
onde eu usei algo semelhante à sua notação:
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:
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 é .i i i i
fonte
i
é indefinida se não houver instâncias em que o algoritmo declarei
. A rechamada da classei
é indefinida se o conjunto de testes não incluir classei
.Bom artigo de resumo, analisando essas métricas para problemas com várias classes:
O resumo diz:
fonte
Usando sklearn e numpy:
Para obter medidas gerais de precisão e recuperação, use
fonte