Matriz de Confusão: nunca mais se confunda utilizando esse exemplo

Lui Magno
comunidadeds
Published in
5 min readDec 8, 2023

Aprenda o que é Matriz de Confusão e como essa tabela ajuda na visualização do desempenho de um algoritmo de Classificação

O que é Matriz de Confusão?

No campo do Machine Learning e no campo dos algoritmos de Classificação, a matriz de confusão ou matriz de erro, é uma tabela específica que tem como intuito permitir a visualização da performance do algoritmo de classificação.

Cada linha da matriz corresponde a uma instância da classe que representa, enquanto cada coluna representa uma previsão de cada classe, ou vice-versa (a depender de quem faz a matriz).

Vamos a um exemplo mais claro: suponha que estamos realizando um projeto que detecta animais na floresta amazônica. Para começar, decidimos diminuir o escopo e começar classificando apenas duas espécies: macaco e sapo.

Nosso dataset inicial fica definido assim, 10 sapos e 10 macacos:

Veja como a tabela se comporta na hora de classificar cada predição em relação aos valores reais:

Tabela 1 — Matriz de Confusão

Agora o significado de cada região (quadrado), tomando a ideia de que a classe positiva é a de macacos (poderia também ser a de sapos, mas vamos de macacos por enquanto):

  1. True Positive (TP): Previu positivo e é da classe positiva. O algoritmo disse que era um macaco e de fato era um.
  2. False Positive (FP): Previu positivo mas é da classe negativa. Ou seja, o algoritmo previu que era um macaco, mas era um sapo.
  3. True Negative (TN): Previu negativo e é da classe negativa. Ou seja, o algoritmo disse que não era um macaco, e de fato não era, era um sapo.
  4. False Negative (FN): Previu negativo e era da classe positiva. Ou seja, o algoritmo disse que não era um macaco, mas era.

É importante entender aqui: escolhendo a classe positiva como macaco, o algoritmo quando faz uma previsão negativa, não diz que as imagens são de um sapo, e sim de que aquilo não representa sua classe positiva, ou seja, não são de um macaco. Mas como estamos trabalhando somente com 2 variáveis, podemos admitir que não ser macaco implica que é um sapo.

Vamos ver como a tabela 1 fica agora com essas novas informações:

Entenderam agora? Vamos revisar:

True Positive: 8 macacos foram previstos como macacos.

False Positive: 3 sapos foram previstos como macacos.

True Negative: 7 sapos foram previstos como não macacos.

False Negative: 2 macacos foram previstos como não macacos.

Agora, podemos tirar algumas informações e métricas importantes dessa tabela.

Métricas da Matriz de Confusão: Precisão, Acurácia, Recall e F-Score

Para entendermos melhor o contexto, podemos tirar algumas métricas de matriz, como por exemplo:

  1. Acurácia: A acurácia é definida como a proporção de previsões corretas em relação ao número total de exemplos no conjunto de dados (total de previsões). Em outras palavras: Quantos macacos e sapos foram previstos de forma correta em relação ao total de previsões feitas? Olhando para a matriz de confusão da tabela 1, calcularemos a Acurácia assim:

Logo, no caso dos Macacos e Sapos, temos:

75% de Acurácia.

2. Precisão: Representa a proporção de verdadeiros positivos em relação ao total de previsões positivas do modelo. Ou seja, qual a porcentagem de macacos previstos corretamente em relação a todas as previsões positivas?

No caso dos Macacos e Sapos, temos:

73% de Precisão.

3. Recall: Indica a proporção de verdadeiros positivos em relação ao total de exemplos positivos reais. No nosso exemplo real, indica a relação das previsões de macacos corretas com o número real de macacos.

Agora no nosso caso exemplo:

Temos 80% de Recall.

4. F-Score: É a média harmônica entre Precisão e o Recall, proporcionando uma medida mais equilibrada do desempenho de um modelo de classificação. Essa métrica é particularmente útil quando há um desequilíbrio nas classes do conjunto de dados.

Agora no caso exemplo, temos:

Nosso F-score é de 76%.

Mas é lógico que não precisamos fazer isso todas as vezes nas nossas próprias calculadoras. O Python já tem uma biblioteca incrível que nos fornece todas essas métricas: utilizando o Scikit Learn, nós temos acessos a várias métricas que podem nos ajudar a entender melhor nossos conjunto de dados e a matriz de confusão. Você pode ler mais sobre ela aqui.

Importando a Sklearn Metrics

Utilizando o método “classification_report” da biblioteca sklearn.metrics, temos acesso a esses dados:

Você pode ver que todas as métricas estão presentes nesse resultado do método. Temos a acurácia, precisão, recall e f1-score, ou seja, você não precisa calcular sempre todas as métricas, mas sim fornecer as informações para o método e receber todo o relatório detalhado sobre seus dados.

Agora vendo nosso classification_report, nós podemos concluir que o nosso modelo tem um desempenho bem legal! Com uma acurácia de 75%, se 10 macacos passaram pelas nossas câmeras, pelo menos 7 deles serão classificados corretamente!

Conclusão

A Matriz de Confusão pode ser uma aliada poderosa na hora de entender melhor como os seus dados de classificação se comportam, e quais são as lacunas que o seu algoritmo pode atacar.

Chegamos ao final! Não deixe de compartilhar o artigo e dizer nos comentários se existe algum possível erro ou algo a melhorar! Obrigado por ler até aqui!

Eu sou o Lui Magno, Cientista de Dados na Comunidade DS. Criador de Conteúdo que desejaria ter mais tempo para criar mais conteúdo, e não só sobre Ciência de Dados. Você pode me encontrar no LinkedIn, no Github ou pelo meu email.

Até a próxima!

--

--

Lui Magno
comunidadeds

Cientista de Dados/Backend Developer. Gosto de Ciência, gosto de Cultura Pop em geral e tento criar conteúdo sobre os 2.