Matriz de Confusão: nunca mais se confunda utilizando esse exemplo
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:
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):
- True Positive (TP): Previu positivo e é da classe positiva. O algoritmo disse que era um macaco e de fato era um.
- False Positive (FP): Previu positivo mas é da classe negativa. Ou seja, o algoritmo previu que era um macaco, mas era um sapo.
- 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.
- 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:
- 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.
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!