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_curve retorna 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.