Aprenda como as curvas ROC e AUC avaliam o desempenho do classificador em IA/ML, otimizando TPR vs. FPR para tarefas como detecção de fraudes e diagnóstico médico.
A curva ROC (Receiver Operating Characteristic) é uma representação gráfica utilizada para avaliar o desempenho de um modelo de modelo de classificação binária. Visualiza o compromisso entre a taxa de verdadeiros positivos (TPR) e a taxa de falsos positivos (FPR) em diferentes limiares de classificação. positiva (FPR) em diferentes limiares de classificação. Em aprendizagem automática (ML), esta curva é fundamental para avaliar a capacidade de um modelo distinguir entre duas classes, como "spam" versus "não spam" ou "doente" versus "saudável". Ao traçar estas taxas, a curva ROC fornece uma visão abrangente da capacidade de diagnóstico de um modelo, indo além de métricas de um único número, como precisão, que podem ser enganadoras isoladamente.
Para interpretar corretamente uma curva ROC, é essencial compreender as duas métricas representadas nos seus eixos:
A curva é gerada através da variação do limiar de confiança do classificador de 0 a 1. Cada ponto na curva ROC representa um par sensibilidade/especificidade correspondente a um determinado limiar de decisão. A Uma linha diagonal que vai do canto inferior esquerdo ao canto superior direito representa um classificador aleatório sem capacidade de previsão (lançamento de uma moeda ao ar), enquanto uma curva que se inclina para a esquerda (lançamento de moeda ao ar), enquanto uma curva que se inclina abruptamente para o canto superior esquerdo indica um modelo de elevado desempenho.
As curvas ROC são amplamente utilizadas em várias indústrias para otimizar os limiares de decisão para implementação de modelos.
Para traçar uma curva ROC, são necessárias as probabilidades previstas para a classe positiva em vez de apenas as etiquetas da classe final.
da classe final. O exemplo a seguir demonstra como extrair essas probabilidades usando um
YOLO11 modelo de classificação do
ultralytics pacote.
from ultralytics import YOLO
# Load a pretrained YOLO11 classification model
model = YOLO("yolo11n-cls.pt")
# Run inference on an image to get prediction results
results = model("path/to/image.jpg")
# Access the probability distribution for all classes
# These scores are necessary inputs for calculating ROC and AUC
probs = results[0].probs.data
print(f"Class probabilities: {probs}")
Quando estas probabilidades são obtidas para um conjunto de dados de teste, bibliotecas como Scikit-learn podem ser utilizadas para calcular os valores de FPR e TPR necessários para traçar a curva.
Embora a curva ROC seja uma ferramenta poderosa, é útil distingui-la de conceitos de avaliação relacionados:
Para tarefas que envolvem a deteção de objectos, métricas como precisão média média (mAP) são são normalmente utilizadas, embora as curvas ROC continuem a ser relevantes para a componente de classificação subjacente a estes modelos. A compreensão destas distinções garante que os programadores escolham a métrica correta para os seus desafios específicos de desafios específicos da visão computacional (CV).