Что такое 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=2PrecisionRecallPrecision+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 (важна полнота)

=(1+β2)PrecisionRecallβ2Precision+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 — это фундаментальные инструменты анализа качества в задачах классификации, особенно когда важны не просто "угаданные" ответы, а цена ошибки в одном или другом направлении.