Matrizes de Confusão em Machine Learning
Em machine learning, uma matriz de confusão é uma tabela quadrada que fornece um detalhamento visual do desempenho de um modelo. Matrizes de confusão são normalmente usadas para analisar modelos de classificação. Ou seja, modelos que preveem um rótulo categórico para cada ponto de dados. As matrizes de confusão possuem um layout de tabela com linhas representando classificações reais e colunas representando classificações previstas. Com essa estrutura, elas fornecem uma visão mais sutil do desempenho de um modelo do que apenas a precisão.
Para entender melhor como uma matriz de confusão permite a visualização do desempenho de um modelo, analisaremos um exemplo. Suponha que você tenha um modelo que classifica transações financeiras como fraudulentas ou não. Uma matriz de confusão irá mostrar:
- As transações classificadas corretamente como fraudulentas (verdadeiros positivos).
- Transações classificadas incorretamente como fraudulentas (falsos positivos).
- As transações classificadas corretamente como regulares (verdadeiros negativos).
Transações classificadas incorretamente como regulares (falsos negativos).
Ao revelar as falhas do modelo para classificar corretamente as diferentes classes presentes, a matriz de confusão indica em quais aspectos seu desempenho é pior. Com isso, obtemos uma visão valiosa sobre quais áreas do modelo precisam de melhorias.
Aprenda a Plotar uma Matriz de Confusão em Python
Abaixo, a biblioteca Scikit-learn é usada para plotar uma matriz de confusão usando dados hipotéticos.
import numpy as np
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
# Cria dados apenas ilustrativos
actual = np.random.randint(0, 2, size=500)
predicted = np.random.randint(0, 2, size=500)
# Cria objeto da matriz de confusão
cm = confusion_matrix(actual, predicted)
# Plota a matriz de confusão
plt.imshow(cm, cmap="Blues")
plt.colorbar()
plt.title("Matrizes de confusão")
plt.xlabel("Classe Prevista")
plt.ylabel("Classe Real")
plt.xticks(np.arange(len(np.unique(actual))), np.unique(actual))
plt.yticks(np.arange(len(np.unique(predicted))), np.unique(predicted))
plt.show()
A matriz obtida é mostrada abaixo.
Como Interpretar uma Matriz de Confusão?
A interpretação de uma matriz de confusão envolve a compreensão da interação entre suas linhas e colunas. As linhas representam as classes reais presentes nos dados, enquanto as colunas representam as classes previstas pelo modelo. Idealmente, as células diagonais devem conter os valores mais altos. Eles representam o número de pontos de dados onde o modelo classificou corretamente a classe (Verdadeiros Positivos para a classe prevista e Verdadeiros Negativos para os outros). Elementos fora da diagonal indicam erros cometidos pelo modelo.
Existem dois tipos principais de erros que um modelo pode cometer durante a classificação:
Falsos Positivos: ocorrem quando o modelo prevê uma classe que não está presente. Eles residem na linha correspondente à classe real e na coluna da classe prevista incorretamente.
Falsos Negativos: acontecem quando o modelo perde uma classe específica (por exemplo, não reconhecer um e-mail de spam). Eles se localizam na linha da classe real que foi perdida e na coluna que representa a classe prevista.
Embora seja tentador se concentrar apenas no número total de previsões corretas (soma dos elementos nas células diagonais), esse valor não conta toda a história. Portanto, ao analisar uma matriz de confusão, procure valores altos na diagonal para cada classe, indicando um bom desempenho para aquela classe específica. Mas identifique também os elementos fora da diagonal para saber onde o modelo tem problemas.
Veja também:
O que é machine learning (aprendizado de máquina)?
Como machine learning (aprendizado de máquina) funciona?
Como machine learning (aprendizado de máquina) aprende?
Como implementar um modelo de machine learning?
Como escolher um bom modelo de machine learning?
Classificação e regressão em machine learning
O que é conjunto de dados (dataset) em machine learning?
Onde conseguir conjuntos de dados para machine learning?
Salve localmente conjuntos de dados para machine learning
Pré-processamento de dados em machine learning
Regressão Linear e Machine Learning
Conjuntos de treinamento e teste em machine learning
Função de perda em machine learning
Scikit-learn para machine learning
Matrizes de Confusão em Machine Learning
Floresta aleatória com Scikit-learn
Detecção de anomalias com Isolation Forest
Máquinas de vetores de suporte (SVMs)
Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.