Precision-Recall Curve
A curva precisão-revocação representa a precisão em função da revocação em diferentes limiares, mostrando o desempenho do modelo e o equilíbrio entre falsos alarmes e casos não detectados.
Uma curva precisão-revocação é um gráfico que mostra como a precisão e a revocação de um modelo mudam conforme varia o limiar de decisão. A revocação aparece no eixo horizontal, e a precisão, no eixo vertical. Cada ponto operacional medido corresponde a um limiar: quantos casos positivos o modelo encontra e quão confiáveis são suas previsões positivas. A curva ajuda a avaliar classificadores e detectores quando falsos alarmes e casos não detectados têm custos diferentes.
Como funciona uma curva precisão-revocação#
Precisão é a fração de previsões positivas que estão corretas: TP / (TP + FP). Revocação, também chamada de sensibilidade, é a fração dos positivos reais encontrados: TP / (TP + FN). TP significa verdadeiros positivos, FP significa falsos positivos, e FN significa falsos negativos — os resultados contabilizados em uma matriz de confusão.
Variar um limiar de confiança entre as pontuações das previsões produz pares de precisão e revocação. Diminuir o limiar inclui mais previsões, portanto a revocação aumenta ou permanece igual. A precisão pode variar em qualquer direção conforme previsões corretas e incorretas entram no conjunto, formando uma curva em degraus.
Cyril Cleverdon introduziu gráficos de revocação versus relevância em seu relatório de Cranfield de 1962, estabelecendo as raízes da avaliação de precisão-revocação na recuperação de informação. Na busca de documentos, documentos relevantes recuperados são verdadeiros positivos; documentos irrelevantes recuperados são falsos positivos.
Interpretação da curva e sua linha de base#
Uma curva que mantém alta precisão à medida que a revocação se aproxima de 1 indica um desempenho sólido. Quando as curvas se cruzam, cada modelo tem melhor desempenho em uma região operacional diferente. Uma queda acentuada na precisão mostra onde previsões adicionais introduzem muitos falsos alarmes.
A linha de base para uma classificação aleatória sem informação é a prevalência da classe positiva — a fração de exemplos rotulados como positivos. Com 1% de positivos, a precisão da linha de base é 0,01. Alterar a prevalência muda a precisão, tornando a população de avaliação parte do resultado.
Uma curva característica de operação do receptor (ROC), por outro lado, representa a revocação em função da taxa de falsos positivos, FP / (FP + TN), em que TN significa verdadeiros negativos. A avaliação precisão-revocação expressa diretamente a proporção de alertas corretos, o que a torna útil para positivos raros. A acurácia pode ser dominada pela classe majoritária.
Escolha de um limiar operacional#
Selecione um ponto operacional nos dados de validação de acordo com os custos dos erros. Para uma revocação mínima exigida, selecione o ponto viável com a maior precisão; para uma precisão mínima, selecione o ponto viável com a maior revocação. Maximizar a pontuação F1, a média harmônica entre precisão e revocação, atribui o mesmo peso às duas métricas. Os valores dos limiares vêm das pontuações subjacentes ou dos gráficos de precisão-confiança e revocação-confiança.
A inferência do Ultralytics YOLO oferece essa opção por meio de conf, que filtra detecções com pontuação. Em uma avaliação da Academy do YOLO26n em quatro imagens de validação do COCO8, com IoU 0.50, aumentar conf de 0.10 para 0.25 alterou a precisão/revocação interpolada da classe pessoa de 0.63/0.80 para 1.00/0.54: houve menos falsos alarmes, mas mais pessoas não detectadas.
Mantenha o limiar selecionado fixo ao avaliar dados de teste separados.
Como plotar uma curva precisão-revocação em Python#
Este exemplo distingue o dígito manuscrito 9 dos outros dígitos usando imagens incluídas e regressão logística. Instale as dependências com pip install scikit-learn matplotlib e use a API de plotagem de precisão-revocação do scikit-learn.
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import PrecisionRecallDisplay
from sklearn.model_selection import train_test_split
X, digits = load_digits(return_X_y=True)
y = digits == 9
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=42)
model = LogisticRegression(max_iter=2000)
model.fit(X_train, y_train)
PrecisionRecallDisplay.from_estimator(model, X_test, y_test)
plt.savefig("precision_recall_curve.png", bbox_inches="tight")O gráfico salvo mostra a precisão em cada nível de revocação alcançável para imagens de dígitos reservadas para teste.
Detecção de objetos e precisão média#
Na detecção de objetos, uma caixa delimitadora prevista conta como verdadeiro positivo quando corresponde a um objeto anotado ainda não associado, da mesma classe, com um limiar de interseção sobre união (IoU) igual ou superior ao especificado. Previsões sem correspondência, incluindo duplicatas, contam como falsos positivos. Cada classe tem uma curva própria, com o requisito de IoU fixo.
A precisão média (AP) resume a curva ao longo dos níveis de revocação. A PR-AUC trapezoidal e a AP não interpolada usam regras de integração diferentes. A precisão média (mAP) calcula a média dos valores de AP por classe. Nas métricas de desempenho de detecção, mAP50 usa IoU 0.50, enquanto mAP50–95 calcula a média em dez limiares de IoU, de 0.50 a 0.95, em incrementos de 0.05.










