Precisão e Revocação
O que são precisão e revocação?
Precisão e revocação são duas métricas fundamentais para avaliar modelos de classificação (classification), especialmente quando:
- as classes são desbalanceadas (ex.: detecção de fraude, triagem de doenças raras),
- a classe “positiva” é o foco principal,
- e falsos positivos e falsos negativos têm custos muito diferentes.
Elas respondem a perguntas diferentes:
- Precisão: Quando o modelo prevê positivo, com que frequência ele está certo?
- Revocação: De todos os positivos reais nos dados, quantos o modelo encontrou?
Ambas as métricas são definidas em termos da matriz de confusão (confusion matrix), que contabiliza os diferentes tipos de previsões corretas e incorretas.
Conceitos relacionados são abordados em Matriz de Confusão, Acurácia e Pontuação F1.
A conexão com a matriz de confusão
Para classificação binária, uma matriz de confusão contabiliza os resultados para uma classe positiva escolhida (o “evento” com o qual você se importa):
- TP (True Positives): previsto como positivo, realmente positivo
- FP (False Positives): previsto como positivo, realmente negativo
- TN (True Negatives): previsto como negativo, realmente negativo
- FN (False Negatives): previsto como negativo, realmente positivo
Definições (classificação binária)
[ \textbf{Precisão} = \frac{TP}{TP + FP} ]
[ \textbf{Revocação} = \frac{TP}{TP + FN} ]
Interpretação:
- A precisão depende de quantos positivos previstos estão errados (FP).
- A revocação depende de quantos positivos reais foram perdidos (FN).
Sinônimos que você pode encontrar
Em alguns domínios, revocação e precisão são conhecidas como:
- Revocação = Sensibilidade = Taxa de Verdadeiros Positivos (TPR)
- Precisão = Valor Preditivo Positivo (PPV)
Um exemplo concreto
Suponha que você construa um classificador para detectar transações fraudulentas (positivo = “fraude”). Em um conjunto de teste, você obtém:
- TP = 40 (fraudes corretamente sinalizadas)
- FP = 60 (transações legítimas incorretamente sinalizadas)
- FN = 10 (fraudes não detectadas)
- TN = 9,890 (transações legítimas corretamente ignoradas)
Agora calcule:
[ \text{Precisão} = \frac{40}{40 + 60} = 0.40 ]
[ \text{Revocação} = \frac{40}{40 + 10} = 0.80 ]
Então:
- Precisão = 40%: apenas 4 de 10 transações sinalizadas são realmente fraude.
- Revocação = 80%: o sistema captura 8 de 10 casos de fraude.
Se isso é “bom” depende do contexto operacional:
- Se investigar uma transação sinalizada é barato, você pode aceitar baixa precisão para obter alta revocação.
- Se alarmes falsos são caros (atrito com o cliente, carga de revisão manual), você pode precisar de maior precisão.
Por que a acurácia frequentemente falha em cenários de eventos raros
Com eventos raros, a acurácia pode ser enganosa. Imagine que a prevalência de fraude seja 0,5%. Um modelo que prevê “não fraude” para toda transação obtém:
- Acurácia ≈ 99,5%
- Revocação = 0 (ele nunca captura fraude)
- Precisão é indefinida (nenhum positivo previsto)
Por isso, em problemas desbalanceados você frequentemente prioriza precisão/revocação (e resumos relacionados como a Curva PR) em vez de acurácia ou até mesmo ROC-AUC.
O trade-off entre precisão e revocação
Precisão e revocação geralmente se movem em direções opostas, especialmente quando você pode ajustar o limiar de decisão (decision threshold) do modelo.
A maioria dos classificadores produz um escore (score) ou probabilidade (s(x)) para a classe positiva. Você escolhe um limiar (t):
- prever positivo se (s(x) \ge t)
- prever negativo caso contrário
Como o limiar afeta TP, FP, FN
- Diminuir o limiar prevê mais positivos:
- TP tende a aumentar (melhor revocação)
- FP tende a aumentar (pior precisão)
- Aumentar o limiar prevê menos positivos:
- FP tende a diminuir (melhor precisão)
- TP tende a diminuir (pior revocação)
Este é o núcleo do trade-off precisão–revocação: muitas vezes você pode “comprar” mais revocação ao custo de precisão, e vice-versa.
Exemplo: alterando o limiar
Suponha que um modelo de teste médico produza escores de risco. Compare dois limiares:
- Limiar 0,3 (triagem agressiva): captura quase todos os casos (alta revocação), mas com mais alarmes falsos (menor precisão)
- Limiar 0,8 (conservador): menos alarmes falsos (maior precisão), mas perde mais casos reais (menor revocação)
Não existe um limiar universalmente correto — escolhê-lo é um problema de decisão ligado a custo, risco e capacidade.
Curvas precisão–revocação e PR-AUC
Uma curva de precisão–revocação (PR) (precision–recall (PR) curve) plota:
- Revocação no eixo x
- Precisão no eixo y
varrendo o limiar de alto para baixo.
Propriedades principais:
- Curvas PR enfatizam o desempenho na classe positiva.
- Elas são especialmente informativas quando a classe positiva é rara.
Precisão de base e prevalência
Em uma curva PR, a precisão de base “sem habilidade” é aproximadamente a prevalência da classe positiva. Por exemplo:
- se apenas 1% dos exemplos são positivos, palpites aleatórios produzem precisão ≈ 1%
Isso torna as curvas PR intuitivas em cenários de eventos raros: um modelo com precisão de 20% em uma revocação relevante é dramaticamente melhor do que a linha de base de 1%.
Métricas-resumo: Precisão Média / PR-AUC
Resumos comuns em um único número incluem:
- Precisão Média (AP) (Average Precision (AP)) (amplamente usada em recuperação de informação e em muitas bibliotecas de aprendizado de máquina)
- Área sob a curva PR (PR-AUC) (Area under the PR curve (PR-AUC)) (às vezes usada de forma imprecisa para significar AP)
Ao contrário de ROC-AUC, resumos focados em PR podem ser mais sensíveis a mudanças em falsos positivos quando positivos são raros.
Para comparação com curvas ROC, veja ROC-AUC.
Orientação prática: escolhendo entre precisão e revocação
Quando priorizar revocação
Você prioriza revocação quando perder positivos é caro ou perigoso:
- triagem de doenças (perder um caso atrasa o tratamento)
- detecção de fraude (perder fraude custa dinheiro)
- detecção de ameaças de segurança
- detecção de defeitos críticos para segurança
Nesses casos, você pode aceitar mais falsos positivos e usar um processo a jusante (revisão humana, modelo de segunda etapa) para filtrá-los.
Quando priorizar precisão
Você prioriza precisão quando falsos positivos são caros:
- enviar ações de moderação de conteúdo abusivo para usuários
- reprovar automaticamente pedidos de empréstimo
- acionar intervenções caras (despachar um técnico)
- alertar engenheiros de plantão (fadiga de alertas)
Aqui, o sistema deve ser cauteloso: quando ele prevê positivo, normalmente precisa estar certo.
Quando você precisa de ambos
Muitos sistemas precisam de um equilíbrio:
- filtros de spam de e-mail (falsos positivos doem, mas perder spam reduz a confiança)
- sistemas de “bloqueio” em recomendadores
- suporte à decisão clínica (precisão importa, revocação também)
Nesses casos, você frequentemente usa uma métrica combinada como a pontuação F1 (média harmônica de precisão e revocação) ou ajusta limiares sob restrições.
Veja Pontuação F1 para detalhes.
Precisão/revocação em cenários desbalanceados e de eventos raros
A classificação desbalanceada é onde precisão e revocação se destacam, mas há armadilhas e boas práticas.
1) Defina corretamente a classe positiva
Sempre deixe claro qual classe é “positiva”:
- fraude vs. legítima
- doente vs. saudável
- defeito vs. normal
Precisão/revocação são assimétricas: trocar positivo/negativo muda os números.
2) Use divisões estratificadas para avaliação
Com poucos positivos, divisões aleatórias podem produzir partições com poucos positivos demais para estimar a revocação com confiabilidade. Prefira divisões estratificadas e validação cruzada:
Também reporte intervalos de confiança quando possível (bootstrapping é comum).
3) Cuidado com “inflação de precisão” por tamanhos de amostra pequenos
Se você tiver pouquíssimos positivos previstos, a precisão pode parecer alta por acaso. Sempre inspecione:
- contagens absolutas (TP/FP/FN)
- formato da curva PR
- desempenho em pontos operacionais (ex.: “precisão a 90% de revocação”)
4) Prefira curvas PR (frequentemente) a curvas ROC em eventos raros
Curvas ROC podem parecer enganosamente fortes quando negativos dominam, porque a taxa de falsos positivos (false positive rate) divide FP por (FP+TN), e TN é enorme em dados desbalanceados.
Curvas PR usam precisão (TP/(TP+FP)), que é diretamente impactada por falsos positivos mesmo quando TN é enorme.
Isso não significa que ROC-AUC seja inútil — apenas que PR frequentemente está mais alinhada com a realidade do negócio para eventos raros.
5) Escolha limiares usando custos e restrições
Em produção, a escolha do limiar deve refletir:
- capacidade de investigação (ex.: “podemos revisar 500 alertas/dia”)
- taxa aceitável de perdas (ex.: “revocação deve ser ≥ 95%”)
- tolerância a risco e exigências regulatórias
Estratégias comuns:
- Maximizar F1 (simples, mas nem sempre alinhado ao custo do negócio)
- Restringir revocação (ex.: escolher a maior precisão sujeita a revocação ≥ meta)
- Restringir precisão (ex.: escolher a maior revocação sujeita a precisão ≥ meta)
- Otimizar custo esperado usando uma matriz de custos (veja Aprendizado Sensível a Custo)
6) Considere “precisão em K” / avaliação top‑K
Em fluxos de trabalho de alerta e recuperação, você pode agir apenas sobre as poucas previsões do topo:
- revisar os K itens de maior risco a cada dia
- mostrar os N melhores resultados em uma busca
Então você se importa com:
- Precisão@K: entre os K itens do topo, quantos são realmente positivos?
- Revocação@K: que fração de todos os positivos aparece no top K?
Isso está intimamente relacionado a métricas de ranqueamento (frequentemente cobertas junto com avaliação de recuperação).
Precisão e revocação para problemas multiclasse e multirrótulo
Classificação multiclasse
Para múltiplas classes, você normalmente calcula precisão/revocação por classe usando uma matriz de confusão um-contra-o-resto (one-vs-rest):
- trate a classe (c) como positiva
- trate todas as outras classes como negativas
Depois agregue entre classes usando:
- Média macro (macro averaging): média das métricas igualmente entre classes (trata classes raras como importantes)
- Macro ponderada (weighted macro): ponderada pelo suporte (número de exemplos verdadeiros por classe)
- Média micro (micro averaging): agrega TP/FP/FN entre todas as classes, então calcula precisão/revocação (frequentemente dominada por classes frequentes)
Médias macro costumam ser mais informativas quando você se importa com o desempenho em classes minoritárias.
Classificação multirrótulo
Em configurações multirrótulo (cada exemplo pode ter vários rótulos verdadeiros), os mesmos esquemas de média se aplicam, e limiares podem ser por rótulo ou globais. Precisão/revocação são amplamente usadas aqui porque “acurácia” se torna menos significativa.
Exemplo prático de escolha de limiar (Python)
Abaixo está um padrão simples para computar precisão/revocação em diferentes limiares usando saídas no estilo scikit-learn:
import numpy as np
from sklearn.metrics import precision_recall_curve, classification_report
# y_true: 0/1 ground truth
# y_score: model scores/probabilities for class 1
precision, recall, thresholds = precision_recall_curve(y_true, y_score)
# Choose a threshold that achieves at least 90% recall with best precision
target_recall = 0.90
valid = np.where(recall >= target_recall)[0]
best_idx = valid[np.argmax(precision[valid])]
chosen_threshold = thresholds[best_idx] if best_idx < len(thresholds) else 1.0
y_pred = (y_score >= chosen_threshold).astype(int)
print("Chosen threshold:", chosen_threshold)
print(classification_report(y_true, y_pred, digits=3))
Notas:
precision_recall_curveretorna arrays ao longo de limiares, permitindo selecionar um ponto de operação com base em restrições.- Na prática, escolha o limiar em um conjunto de validação, depois reporte as métricas finais em um conjunto de teste.
Erros comuns e ressalvas
Precisão não é “probabilidade de estar correto” no vácuo
Precisão é condicional ao modelo prever positivo, e depende da prevalência. Se a prevalência mudar entre treinamento e implantação (deriva do conjunto de dados), a precisão pode mudar dramaticamente mesmo que a capacidade de ranqueamento do modelo permaneça semelhante.
Tópico relacionado: Mudança de Conjunto de Dados
Revocação ignora falsos positivos
Um modelo pode atingir alta revocação prevendo quase tudo como positivo. Isso pode ser operacionalmente inaceitável; sempre veja revocação junto com precisão (ou ao lado de contagens e custos).
Comparar modelos exige o mesmo protocolo de avaliação
Precisão e revocação dependem de:
- a distribuição do teste,
- o limiar escolhido,
- a definição da classe positiva,
- e potencialmente pós-processamento (calibração, filtragem).
Para comparar modelos de forma justa:
- avalie no mesmo conjunto de teste,
- reporte curvas PR ou métricas sob as mesmas restrições de revocação/precisão,
- e considere incerteza (intervalos de confiança).
Calibração afeta decisões de limiar
Se você interpreta escores como probabilidades e escolhe limiares por custo esperado, frequentemente precisa de probabilidades bem calibradas.
Veja Calibração de Probabilidade.
Resumo
- Precisão mede quão confiáveis são as previsões positivas: (TP/(TP+FP)).
- Revocação mede quantos positivos verdadeiros você captura: (TP/(TP+FN)).
- Elas vêm diretamente da matriz de confusão e são especialmente importantes quando a classe positiva é rara ou cara de perder.
- Ajustar o limiar de decisão cria um trade-off: maior revocação geralmente reduz a precisão, e vice-versa.
- Em problemas desbalanceados/de eventos raros, curvas PR e Precisão Média frequentemente são mais informativas do que acurácia e podem ser mais práticas do que visões baseadas em ROC.
- Em sistemas reais, escolha pontos de operação usando restrições, custos e capacidade, não apenas uma única métrica.
Artigos relacionados: Matriz de Confusão, Pontuação F1, ROC-AUC, Desbalanceamento de Classes, Aprendizado Sensível a Custo.