Узнайте, как ROC-кривые и AUC оценивают производительность классификаторов в AI/ML, оптимизируя TPR и FPR для таких задач, как обнаружение мошенничества и медицинская диагностика.
Кривая операционной характеристики получателя (Receiver Operating Characteristic, ROC) - это графическое представление, используемое для оценки эффективности бинарной модели классификации. Она визуализирует компромисс между показателями истинно положительных (TPR) и ложноположительных (False Positive Rate, FPR) при различных порогах классификации. В машинном обучении (ML) эта кривая является фундаментальной для оценки того, насколько хорошо модель может различать два класса, такие как "спам" и "не спам" или "больной" от "здорового". Построив график этих показателей, ROC-кривая дает полное представление о диагностических способностях модели, выходя за рамки таких показателей, как точность, которые сами по себе могут вводить в заблуждение.
Чтобы правильно интерпретировать ROC-кривую, необходимо понимать две метрики, нанесенные на ее оси:
Кривая строится путем изменения порога доверия классификатора от 0 до 1. Каждая точка на ROC-кривой представляет собой пару чувствительность/специфичность, соответствующую определенному порогу принятия решения. A Диагональная линия, проведенная снизу вверх слева направо, представляет случайный классификатор, не обладающий прогностическими способностями (монета В то время как кривая, круто склоняющаяся к левому верхнему углу, указывает на высокоэффективную модель.
ROC-кривые широко используются в различных отраслях промышленности для оптимизации порогов принятия решений для развертывания модели.
Чтобы построить ROC-кривую, вам нужны предсказанные вероятности для положительного класса, а не просто итоговые метки класса
метки. В следующем примере показано, как извлечь эти вероятности с помощью функции
YOLO11 модель классификации из
ultralytics пакет.
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}")
После того как эти вероятности получены для тестового набора данных, такие библиотеки, как Scikit-learn, можно для вычисления значений FPR и TPR, необходимых для построения кривой.
Хотя ROC-кривая является мощным инструментом, полезно отличать ее от смежных концепций оценки:
Для задач, связанных с обнаружением объектов, используются такие метрики, как средняя точность (mAP) хотя ROC-кривые остаются актуальными для классификационного компонента этих моделей. Понимание этих различий позволяет разработчикам выбрать правильную метрику для решения конкретных задач компьютерного зрения (КВ).