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.
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:

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:
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:
- O total de previsões corretas de cada classe.
- 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.
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.
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.


