Matriz de confusão em aprendizado de máquina com EXEMPLO

⚡ Resumo Inteligente

A matriz de confusão é uma tabela de medição de desempenho para modelos de classificação que compara os rótulos previstos com os rótulos reais conhecidos, revelando exatamente quais classes um classificador acerta e quais ele erra.

  • 🔘 Quatro resultados: Os termos "verdadeiro positivo", "verdadeiro negativo", "falso positivo" e "falso negativo" preenchem todas as células de uma matriz binária.
  • ☑️ Tipos de erro: Um falso positivo é um erro do Tipo I, enquanto um falso negativo é um erro do Tipo II.
  • Métricas derivadas: Acurácia, precisão, recall, especificidade e pontuação F1 são todos derivados das mesmas quatro métricas.
  • 🧪 Além da precisão: Em dados desbalanceados, a precisão favorece um modelo, enquanto a matriz revela em qual classe ele realmente falha.
  • 🛠️ Visão de múltiplas classes: N classes produzem uma grade N×N onde a diagonal contém todas as previsões corretas.
  • ⚙️ Python rota: O scikit-learn constrói a mesma tabela em duas linhas com confusion_matrix() e classification_report().

Matriz de Confusão em Aprendizado de Máquina com Exemplo

O que é Matriz de Confusão?

A matriz de confusão é uma técnica de medição de desempenho para aprendizado de máquina Matriz de confusão. É uma tabela que mostra o desempenho de um modelo de classificação em um conjunto de dados de teste cujos valores reais já são conhecidos. O termo matriz de confusão é bastante simples, mas a terminologia que o acompanha pode ser confusa; portanto, cada parte é explicada abaixo em linguagem simples.

A matriz se aplica a qualquer classificador supervisionado — regressão logística, uma árvore de decisão, uma Modelo Naive Bayes rede neural profunda — porque compara apenas duas colunas de rótulos: o que o modelo previu e o que era realmente verdade.

Quatro resultados da matriz de confusão

A matriz de confusão visualiza a precisão de um classificador comparando as classes reais e previstas. A matriz de confusão binária é composta por quadrados:

Tabela de confusão binária mostrando os quadrantes TP, FP, FN e TN.
Tabela de confusão

A tabela acima mapeia os quatro quadrados que toda matriz de confusão binária contém:

  • TP: Verdadeiro Positivo: Os valores previstos foram corretamente previstos como valores positivos reais.
  • FP: Falso Positivo: Valores previstos incorretamente como positivos, ou seja, valores negativos previstos como positivos.
  • FN: Falso Negativo: Valores positivos previstos como negativos
  • TN: Verdadeiro Negativo: Os valores previstos foram corretamente previstos como um valor negativo real.

As estatísticas atribuem nomes diferentes às duas células com erro. Um falso positivo é um Erro tipo I — o modelo gerou um alarme que nunca deveria ter sido gerado. Um falso negativo é um Erro tipo II — o modelo permaneceu em silêncio quando deveria ter soado o alarme. Saber qual dos dois é mais custoso para o seu problema determina qual métrica você ajustará posteriormente.

Você pode calcular o teste de precisão a partir da matriz de confusão, conforme mostra a fórmula abaixo:

Fórmula de precisão derivada dos quatro resultados da matriz de confusão

Exemplo de matriz de confusão

A Matriz de Confusão é um método útil de aprendizado de máquina que permite medir a revocação (Recall), a precisão (Precision), a acurácia (Accuracy) e a curva AUC-ROC. O exemplo de futebol abaixo mostra o significado dos termos Verdadeiro Positivo (True Positive), Verdadeiro Negativo (True Negative), Falso Positivo (False Positive) e Falso Negativo (False Negative) na linguagem cotidiana.

Verdadeiro positivo:

Você fez uma previsão positiva e ela se confirmou. Por exemplo, você previu que a França ganharia a Copa do Mundo, e ela ganhou.

Verdadeiro Negativo:

Você previu o resultado negativo, e isso também se confirmou. Você previu que a Inglaterra não venceria, e ela perdeu.

Falso positivo:

Sua previsão é positiva e falsa.

Você havia previsto que a Inglaterra venceria, mas ela perdeu.

Falso negativo:

Sua previsão é negativa, e o resultado a torna falsa.

Você previu que a França não venceria, mas venceu.

Você deve se lembrar que a primeira palavra descreve se a previsão estava certa ou errada (Verdadeiro ou Falso) e a segunda palavra descreve o que o modelo previu (Positivo ou Negativo).

Como calcular uma matriz de confusão

Aqui está o processo passo a passo para calcular uma matriz de confusão em mineração de dados:

  • Passo 1) Primeiro, você precisa de um conjunto de dados de teste juntamente com os valores de resultado esperados.
  • Passo 2) Preveja todas as linhas do conjunto de dados de teste.
  • Passo 3) Compare os resultados esperados com as previsões e a contagem:
    1. O total de previsões corretas de cada classe.
    2. O total de previsões incorretas de cada classe.

Depois disso, esses números são organizados nos métodos abaixo:

  • Cada linha da matriz corresponde a uma classe social específica.
  • Cada coluna da matriz está associada a uma classe prevista.
  • As contagens totais de classificação correta e incorreta são inseridas na tabela.
  • A soma das previsões corretas para uma classe é inserida na célula onde a linha real dessa classe encontra sua própria coluna prevista — a diagonal.
  • A soma das previsões incorretas para uma classe é inserida na linha correspondente ao valor dessa classe e na coluna da classe prevista que o modelo escolheu em vez da correta.

Os papéis das linhas e colunas são uma convenção, não uma regra, e algumas ferramentas de plotagem invertem o layout; portanto, sempre leia os rótulos dos eixos antes de interpretar uma matriz. A orientação usada aqui — real nas linhas, prevista nas colunas — é a produzida pelo scikit-learn.

Outros termos importantes usando uma matriz de confusão

Uma vez estabelecidas as quatro contagens, uma família de termos secundários descreve diferentes fatias da mesma tabela:

  • Valor preditivo positivo (VPP): Isso é muito próximo da precisão. Uma diferença significativa entre os dois termos é que o VPP leva em consideração a prevalência. Em uma situação em que as classes estão perfeitamente balanceadas, o valor preditivo positivo é o mesmo que a precisão.
  • Taxa de erro nulo: Este termo define a frequência com que sua previsão estaria errada se você sempre previsse a classe majoritária. Você pode considerá-lo como uma métrica de referência para comparar seu classificador.
  • Pontuação F: A pontuação F1 é uma média ponderada da taxa de verdadeiros positivos (recall) e da precisão.
  • Curva ROC: A curva ROC representa a taxa de verdadeiros positivos em função da taxa de falsos positivos em vários pontos de corte. Ela também demonstra uma relação inversa entre sensibilidade (recall) e especificidade, que é a taxa de verdadeiros negativos.
  • Precisão: A métrica de precisão mostra a precisão da classe positiva. Ele mede a probabilidade de a previsão da classe positiva estar correta.

Fórmula de precisão: verdadeiros positivos divididos por verdadeiros positivos mais falsos positivos

A pontuação máxima é 1 quando o classificador classifica perfeitamente todos os valores positivos. A precisão sozinha não é muito útil porque ignora a classe negativa. Essa métrica geralmente é usada em conjunto com a métrica de recall. O recall também é chamado de sensibilidade ou taxa de verdadeiros positivos e é escrito como mostrado abaixo.

  • Sensibilidade: A sensibilidade calcula a proporção de classes positivas detectadas corretamente. Essa métrica mostra o quão bom o modelo é em reconhecer uma classe positiva.

Fórmula de sensibilidade: verdadeiros positivos divididos por verdadeiros positivos mais falsos negativos

Métricas e fórmulas da matriz de confusão

Todas as métricas acima são calculadas com base nos mesmos quatro critérios, por isso é útil visualizá-las lado a lado com a pergunta que cada uma responde.

métrico Fórmula Pergunta que responde Use-o quando
Precisão (TP + TN) / (TP + TN + FP + FN) Quantas previsões estavam corretas no total? As turmas estão mais ou menos equilibradas.
Precisão TP / (TP + FP) Quando o modelo indica um resultado positivo, com que frequência ele está correto? Alarmes falsos são caros.
Rechamada (Sensibilidade) TP / (TP + FN) De todos os aspectos realmente positivos, quantos foram detectados? Os resultados positivos não detectados são caros.
Especificidade TN / (TN + FP) De todos os casos realmente negativos, quantos foram resolvidos? A classe negativa também importa.
Pontuação F1 2 × (Precisão × Revocação) / (Precisão + Revocação) Qual é o equilíbrio entre os dois? Você precisa de um único número para ambos.

Considere um filtro de spam testado em 100 e-mails que produz TP = 45, FN = 5, FP = 10 e TN = 40. A acurácia é (45 + 40) / 100 = 0.85. A precisão é 45 / (45 + 10) = 0.82, a revocação é 45 / (45 + 5) = 0.90 e a especificidade é 40 / (40 + 10) = 0.80. A pontuação F1 é de 0.86.

Esses números contam uma história que um único indicador de precisão esconde: o filtro detecta 90% dos spams legítimos, mas coloca em quarentena erroneamente um e-mail legítimo a cada cinco sinalizados. Se essa troca é aceitável depende do custo de cada erro, e é exatamente por isso que a matriz é apresentada em vez de apenas a precisão.

Matriz de Confusão para Classificação Multiclasse

Os problemas de classificação raramente se limitam a dois rótulos, e a matriz se expande sem alterar sua forma. Para N classes, a tabela se torna uma grade N×N: a diagonal principal contém todas as previsões corretas, e cada célula fora da diagonal registra exatamente qual classe foi confundida com qual outra.

Um modelo de três classes que classifica imagens em gato, cachorro e coelho produz uma grade 3×3. Se a célula na linha “gato”, coluna “cachorro” contém 12, então doze imagens de gatos foram rotuladas como cachorros. Esse nível de detalhe é o que torna a matriz mais útil do que uma pontuação: ela nomeia o par específico de classes que o modelo não consegue separar.

Precisão, recall e F1 são definidos por classe usando uma perspectiva "um contra todos", onde a classe em questão é a classe positiva e todas as outras são negativas. Os valores por classe são então combinados de uma das três maneiras a seguir:

  • Média macroeconômica: Calcula a métrica para cada classe independentemente e, em seguida, obtém a média não ponderada. Todas as classes têm o mesmo peso, de modo que as classes raras não são mascaradas.
  • Média micro: Agrupa as contagens de verdadeiros positivos (TP), falsos positivos (FP) e falsos negativos (FN) em todas as classes antes de calcular a métrica. Classes grandes predominam e, para problemas de rótulo único, a microprecisão, a microrevocação e a acurácia são idênticas.
  • Média ponderada: Calcula a média das pontuações por classe usando o número de ocorrências reais de cada classe como peso, o que mantém o desequilíbrio entre as classes visível.

Escolha a opção macro quando todas as classes tiverem a mesma importância e a opção ponderada quando a distribuição das classes refletir o tráfego real.

Como criar uma matriz de confusão em Python

A biblioteca scikit-learn constrói a tabela inteira a partir de duas matrizes de rótulos, portanto, nenhuma contagem manual é necessária. O exemplo abaixo compara dez rótulos verdadeiros com dez previsões.

from sklearn.metrics import confusion_matrix

y_true = [1, 0, 1, 1, 0, 1, 0, 0, 1, 0]
y_pred = [1, 0, 1, 0, 0, 1, 1, 0, 1, 0]

cm = confusion_matrix(y_true, y_pred)
print(cm)

A chamada retorna uma matriz NumPy 2×2 na qual a linha 0 representa a classe negativa e a linha 1 representa a classe positiva:

[[4 1]
 [1 4]]

A leitura do array seguindo a convenção do scikit-learn resulta em TN = 4 (canto superior esquerdo), FP = 1 (canto superior direito), FN = 1 (canto inferior esquerdo) e TP = 4 (canto inferior direito). Descompactando esses quatro valores em uma única linha, obtemos o mapa.ping explícito:

tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()

Para obter precisão, recall e F1 para todas as classes simultaneamente, incluindo as médias macro e ponderadas descritas acima, faça a seguinte chamada: classification_report() em vez de calcular cada métrica manualmente:

from sklearn.metrics import classification_report

print(classification_report(y_true, y_pred))

Para uma versão plotada, ConfusionMatrixDisplay.from_predictions(y_true, y_pred) renderiza a mesma tabela que um mapa de calor rotulado. A lista completa de argumentos, incluindo o labels e normalize opções, está documentado no referência da matriz de confusão do scikit-learnA mesma etapa de avaliação se aplica a modelos construídos com TensorFlow, porque a métrica depende apenas dos rótulos previstos.

Por que você precisa da matriz de confusão?

Aqui estão as vantagens e os benefícios de usar uma matriz de confusão.

  • Isso mostra como um modelo de classificação se confunde ao fazer previsões.
  • A matriz de confusão fornece informações não apenas sobre os erros cometidos pelo classificador, mas também sobre os tipos de erros que ele comete.
  • Essa análise ajuda você a superar a limitação de usar apenas a precisão da classificação.
  • Cada coluna da matriz de confusão representa as instâncias dessa classe prevista.
  • Cada linha da matriz de confusão representa as instâncias da classe real.
  • Isso transforma a avaliação do modelo em um diagnóstico, apontando para o par de classes específico que precisa de mais dados ou de uma característica melhor.

Esse valor diagnóstico é o motivo pelo qual a matriz de confusão ocupa um lugar central na fase de avaliação em qualquer sistema. ciência de dados fluxo de trabalho e por que geralmente é a primeira tabela revisada antes que um classificador seja promovido para produção.

Perguntas Frequentes

Se apenas 2% dos registros forem fraudulentos, um modelo que prevê "não é fraude" em todos os casos atinge 98% de precisão sem detectar nada. A matriz expõe imediatamente a célula vazia de verdadeiros positivos, e é por isso que a revocação (recall) é mais importante do que a precisão em dados enviesados.

Uma matriz normalizada mostra proporções em vez de contagens brutas, geralmente dividindo cada célula pelo total da linha. Isso permite comparar classes de tamanhos muito diferentes à primeira vista, embora oculte os tamanhos das amostras — portanto, apresente ambas as versões quando as classes estiverem desbalanceadas.

Reconstrua a matriz em vários limiares de probabilidade e observe a troca. Diminuir o limiar move registros da célula de falsos negativos para a célula de verdadeiros positivos, aumentando a revocação, mas também aumentando os falsos positivos. Escolha o limiar onde a mistura de erros restante tenha o menor custo.

Não. A matriz contabiliza correspondências de rótulos discretos, portanto, precisa de categorias. Os resultados da regressão são contínuos e são avaliados com medidas de erro como o erro médio absoluto ou o R². Agrupar um alvo contínuo em faixas é a única maneira de tornar uma matriz significativa.

Geralmente, a confirmação diagnóstica é o fator mais importante, pois um diagnóstico perdido custa muito mais do que um exame de acompanhamento desnecessário. Portanto, as ferramentas de triagem são ajustadas para manter os falsos negativos próximos de zero e aceitar falsos positivos adicionais, que são filtrados posteriormente por um teste confirmatório.

As ferramentas automatizadas de avaliação de modelos agora examinam cada célula fora da diagonal principal, classificam as confusões mais custosas e sugerem quais classes precisam de mais dados de treinamento ou de um rótulo combinado. Elas também ajustam os limiares automaticamente, transformando uma comparação manual de matrizes em uma lista classificada.

Copiloto do GitHub O rascunho gera a importação, a chamada da métrica e um gráfico de mapa de calor a partir de um breve comentário. Considere o rascunho como um ponto de partida — sempre confirme a ordem dos eixos e o argumento do rótulo positivo por conta própria, pois uma matriz transposta inverte todas as conclusões.

O conjunto de dados deve ser grande o suficiente para que a classe mais rara ainda ocupe sua linha com uma contagem viável — um pequeno número de amostras produz métricas que oscilam drasticamente entre as execuções. A validação cruzada, que soma as matrizes em todas as partições, oferece uma visão mais estável do que uma pequena divisão de teste.

Resuma esta postagem com: