Что такое precision, recall, F1-score и когда какую метрику использовать?
Precision, Recall и F1-score — это метрики качества, которые применяются в задачах классификации и обнаружения объектов, особенно в случаях, когда классы несбалансированы, и accuracy не отражает реальную эффективность модели. Эти метрики основаны на понятиях True Positive (TP), False Positive (FP), False Negative (FN) и (опционально) True Negative (TN). Они используются не только в бинарной классификации, но и в многоклассовых и многометочных задачах.
1. Основные определения
True Positive (TP)
Количество объектов, правильно предсказанных как позитивные.
Пример: модель предсказала, что на картинке есть кошка, и кошка там действительно есть.
False Positive (FP)
Модель предсказала положительный класс, но на самом деле объект принадлежит другому.
Пример: модель нашла кошку, но это была собака.
False Negative (FN)
Объект был пропущен: на изображении есть кошка, но модель её не предсказала.
True Negative (TN)
Корректно предсказанные отрицательные классы (чаще используется в бинарной классификации).
2. Precision (точность, положительная прогностическая способность)
Precision=TPTP+FP\text{Precision} = \frac{TP}{TP + FP}
-
Показывает, сколько из всех предсказанных положительных классов действительно оказались положительными.
-
Высокое значение precision означает, что ложных срабатываний мало.
-
Особенно важно, если ложноположительные ошибки критичны.
Пример применения:
-
В спам-фильтре — если письмо помечено как спам, оно действительно должно быть спамом.
-
В медицине — диагноз "рак" не должен ставиться здоровым (лучше не ставить диагноз вообще, чем поставить неверный).
3. Recall (полнота, чувствительность)
Recall=TPTP+FN\\text{Recall} = \\frac{TP}{TP + FN}
-
Показывает, сколько из всех настоящих положительных объектов были найдены моделью.
-
Высокий recall означает, что модель находит почти все нужные объекты, пусть даже с ошибками.
-
Важен, когда пропуски критичны.
Пример применения:
-
В диагностике — пропустить болезнь хуже, чем поставить лишнюю проверку.
-
В поисковых системах — важно показать как можно больше релевантных результатов.
4. F1-score (гармоническое среднее между precision и recall)
F1-score=2⋅Precision⋅RecallPrecision+Recall\\text{F1-score} = 2 \\cdot \\frac{\\text{Precision} \\cdot \\text{Recall}}{\\text{Precision} + \\text{Recall}}
-
Представляет собой компромисс между precision и recall.
-
Гармоническое среднее сильнее penalизирует крайние значения (например, если одно из них близко к нулю).
-
Полезно, когда нужно балансировать точность и полноту.
5. Дополнительные модификации F-метрики
-
F0.5-score: больше вес precision (важна точность)
-
F2-score: больше вес recall (важна полнота)
Fβ=(1+β2)⋅Precision⋅Recallβ2⋅Precision+Recall\\text{F}\_\\beta = (1 + \\beta^2) \\cdot \\frac{Precision \\cdot Recall}{\\beta^2 \\cdot Precision + Recall}
6. Accuracy vs. Precision/Recall
- Accuracy:
python TP+TNTP+TN+FP+FN\\frac{TP + TN}{TP + TN + FP + FN}
— может быть обманчивой при несбалансированных классах.
Пример:
-
Есть 1000 изображений, 990 из них — «не кошка», и только 10 — «кошка».
-
Модель всегда говорит "не кошка".
-
Accuracy = 990 / 1000 = 99%, но модель никогда не находит кошек → recall = 0.
7. Когда использовать какую метрику
Задача или цель | Что важно | Метрика |
---|---|---|
Модель не должна делать ложных срабатываний | Precision важнее | Precision |
--- | --- | --- |
Модель не должна ничего пропускать | Recall важнее | Recall |
--- | --- | --- |
Нужно равновесие между точностью и полнотой | Баланс | F1-score |
--- | --- | --- |
Сильно несбалансированные классы (редкие классы важны) | Надёжность предсказаний | F1-score, Precision, Recall |
--- | --- | --- |
Поиск объектов в изображениях | Не пропустить ни одного объектa | Recall |
--- | --- | --- |
Медицинская диагностика | Снижение ложноотрицательных результатов | Recall, F2 |
--- | --- | --- |
Модерация контента (блокировать запрещённое точно) | Избегать ложных блокировок | Precision |
--- | --- | --- |
Системы безопасности | Найти всё подозрительное | Recall |
--- | --- | --- |
Сегментация/классификация с высоким дисбалансом классов | Учёт редких случаев | F1-score (или Macro-F1) |
--- | --- | --- |
8. Многоклассовые и многометочные задачи
В случае нескольких классов, precision/recall/F1 можно усреднять:
Macro-усреднение
-
Считается precision/recall/F1 по каждому классу отдельно, затем усредняется.
-
Все классы имеют одинаковый вес, независимо от частоты.
-
Полезно, если важны все классы одинаково, даже редкие.
Micro-усреднение
-
Суммируются TP, FP, FN по всем классам, затем считаются общие precision и recall.
-
Подходит, если важна общая производительность, а не отдельно по классам.
-
Частые классы имеют больший вес.
Weighted-усреднение
-
Как macro, но каждый класс взвешивается по числу его экземпляров.
-
Баланс между macro и micro.
9. Визуализация: PR-кривая и ROC
Precision-Recall кривая
-
Показывает, как изменяется precision и recall при разных порогах классификации.
-
Полезна при несбалансированных классах.
-
Площадь под кривой: **AUC-PR
**
ROC-кривая
-
Построена по осям TPR (recall) и FPR (ложноположительные).
-
Площадь под кривой: **AUC-ROC
** - Хорошо работает, когда классы сбалансированы.
10. Пример (Python, sklearn)
from sklearn.metrics import precision_score, recall_score, f1_score
y_true = \[0, 1, 1, 1, 0, 0, 1\]
y_pred = \[0, 0, 1, 1, 0, 1, 1\]
precision = precision_score(y_true, y_pred)
recall = recall_score(y_true, y_pred)
f1 = f1_score(y_true, y_pred)
print(f"Precision: {precision:.2f}")
print(f"Recall: {recall:.2f}")
print(f"F1-score: {f1:.2f}")
11. Ошибки при интерпретации
-
Высокая precision ≠ хорошая модель, если recall низкий — модель слишком осторожна и многое пропускает.
-
Высокая recall ≠ хорошая модель, если precision низкий — слишком много ложных срабатываний.
-
Высокий accuracy ≠ успех, особенно при сильном дисбалансе классов.
-
F1 не учитывает TN, поэтому в задачах, где важны отрицательные предсказания, её может быть недостаточно.
12. Примеры из практики
Спам-фильтр
- Precision важнее: если письмо помечено как спам, оно не должно быть легитимным.
Онкологическая диагностика
- Recall важнее: даже если ложно положительных много, нужно найти все реальные случаи.
Обнаружение вторжений (Intrusion Detection)
- Лучше предупредить лишний раз (высокий recall), чем пропустить реальную угрозу.
Поиск по документам
- Баланс между количеством найденных документов (recall) и их релевантностью (precision)
Метрики precision, recall и F1-score — это фундаментальные инструменты анализа качества в задачах классификации, особенно когда важны не просто "угаданные" ответы, а цена ошибки в одном или другом направлении.