Matriz de Confusão, como implementá-la em Python

Neste artigo, abordaremos o que é uma matriz de confusão, alguns termos e métricas chave.

Qualquer pessoa pode construir um modelo de aprendizado de máquina com algumas linhas de código, mas construir um bom modelo de aprendizado de máquina é uma história totalmente diferente.

O que quero dizer com um bom modelo de aprendizado de máquina?

Depende, mas geralmente, você avaliará seu modelo de aprendizado de máquina com base em algumas métricas predeterminadas que você decide usar.

Quando se trata de modelos de classificação, você provavelmente usará uma matriz de confusão e métricas relacionadas para avaliar seu modelo. As matrizes de confusão não são apenas úteis na avaliação do modelo, mas também no monitoramento de modelos e gerenciamento de modelos!

Conteúdo:

1. O que é uma Matriz de Confusão?

Uma matriz de confusão, também conhecida como matriz de erros, é uma tabela resumida usada para avaliar o desempenho de um modelo de classificação.

O número de previsões corretas e incorretas são resumidas com valores de contagem e divididas por cada classe.

Abaixo está uma imagem da estrutura de uma matriz de confusão 2x2. Para dar um exemplo, digamos que houve dez casos em que um modelo de classificação previu ‘Sim’ em que o valor real era ‘Sim’. Em seguida, o número dez iria no canto superior esquerdo no quadrante True Positive. Isso nos leva a alguns termos-chave:

Termos-Chave:

  • Positivo (P): A observação é positiva (por exemplo. é um cachorro).
  • Negativo (N): A observação não é positiva (por exemplo. não é um cachorro).
  • True Positive (TP): Resultado em que o modelo prevê corretamente a classe positiva.
  • True Negative (TN): Resultado em que o modelo prevê corretamente a classe negativa.
  • False Positivo (FP): Também chamado de erro tipo 1, um resultado em que o modelo prevê incorretamente a classe positiva quando ele é realmente negativo.
  • Falso Negativo (FN): Também chamado de erro tipo 2, um resultado em que o modelo prevê incorretamente a classe negativa quando ele é realmente positivo.

2. Métricas da Matriz de Confusão

Agora que vimos a estrutura geral de uma matriz de confusão, bem como os termos-chave associados, podemos mergulhar em algumas das principais métricas que você pode calcular a partir de uma matriz de confusão.

a. Acuracy

Isso é simplesmente igual à proporção de previsões que o modelo classificou corretamente.

b. Precision

A precisão também é conhecida como valor preditivo positivo e é a proporção de instâncias relevantes entre as instâncias recuperadas. Em outras palavras, responde à pergunta “Que proporção de identificações positivas estava realmente correta?”

c. Recall

O recall, também conhecido como sensibilidade, taxa de acerto,ou a taxa positiva real (TPR), é a proporção da quantidade total de instâncias relevantes que foram realmente recuperadas. Ele responde à pergunta “Que proporção de positivos reais foi identificada corretamente?”

O diagrama a seguri é uma ótima maneira de lembrar a diferença entre precisão e recall (certamente me ajudou)!

d. Specifity

A especificidade, também conhecida como taxa negativa real (TNR), mede a proporção de negativos reais que são corretamente identificados como tal. É o oposto de recordação.

e. F1 score

A pontuação da F1 é uma medida da precisão de um teste — é a média harmônica de precisão e recall. Ele pode ter uma pontuação máxima de 1 (precisão perfeita e recall) e um mínimo de 0. No geral, é uma medida da precisão e robustez do modelo.

Exemplo de Matriz de Confusão 2x2

Imagine que criamos um modelo de aprendizado de máquina que prevê se um paciente tem câncer ou não. A tabela à esquerda mostra doze previsões que o modelo fez, bem como o resultado real de cada paciente. Com nossos dados emparelhados, uma vez preenchida a matriz, podemos aprender uma série de coisas sobre o nosso modelo:

  • modelo: pacientes 4/12 (vermelho + amarelo) tinham câncer quando havia na verdade 3/12 (vermelho + azul) pacientes com câncer
  • modelo: tem uma precisão de 12/9 ou 75% ((vermelho + verde)/(total))

O recall do nosso modelo é igual a 2/(2+1) = 66%

Na realidade, você gostaria que o recall de um modelo de detecção de câncer fosse o mais próximo possível de 100%. É muito pior se um paciente com câncer é diagnosticado como livre de câncer, em oposição a um paciente livre de câncer sendo diagnosticado com câncer apenas para perceber mais tarde com mais testes que ele/ela não tem.

Código Python com Scikit-learn

Abaixo está um resumo das métricas do scikit-learn:

# Confusion Matrixfrom sklearn.metrics import confusion_matrix
confusion_matrix(y_true, y_pred)# Accuracy
from sklearn.metrics import accuracy_score
accuracy_score(y_true, y_pred)# Recall
from sklearn.metrics import recall_score
recall_score(y_true, y_pred, average=None)# Precision
from sklearn.metrics import precision_score
precision_score(y_true, y_pred, average=None)

Existem três maneiras de calcular a pontuação da F1 em Python:

# Method 1: sklearn
from sklearn.metrics import f1_score
f1_score(y_true, y_pred, average=None)
# Method 2: Manual Calculation
F1 = 2 * (precision * recall) / (precision + recall)
# Method 3: Classification report [BONUS]
from sklearn.metrics import classification_report
print(classification_report(y_true, y_pred, target_names=target_names))

Agora que sabemos o que é uma matriz de confusão, bem como suas métricas associadas, podemos avaliar efetivamente os modelos de ML de classificação.

Obrigado.

Composing a repository of books (i bought), authors (i follow) & blogs (direct ones) for my own understanding.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store