Статья Автор: Деникина Н.В., Деникин А.В.

Precision и Recall: два важных показателя

Когда Accuracy не хватает, используем две другие метрики/

Precision (Точность предсказаний)

Вопрос: Из тех, кого модель назвала положительными (класс 1), сколько действительно положительные?

Precision = TP / (TP + FP)

Простыми словами: Когда модель говорит "да", как часто она права?

Пример: Спам-фильтр отправил 100 писем в спам. Из них реально спама — 90, а 10 — нормальные письма.

Precision = 90 / (90 + 10) = 90 / 100 = 0.9 = 90%

Когда фильтр говорит "это спам", он прав в 90% случаев.
 

Recall (Полнота, Чувствительность)

Вопрос: Из всех реально положительных объектов, сколько модель нашла?

Recall = TP / (TP + FN)

Простыми словами: Из всех "да", сколько модель смогла найти?

Пример: Пришло 200 спам-писем. Спам-фильтр поймал 150, а 50 пропустил.

Recall = 150 / (150 + 50) = 150 / 200 = 0.75 = 75%

Фильтр находит 75% всего спама.
 

Как запомнить?

Precision — про качество положительных предсказаний
"Когда я говорю 'да', как часто я прав?"

Recall — про количество найденных положительных
"Сколько всех 'да' я смог найти?"
 

Медицинский пример

Тест на болезнь проверил 100 больных и 100 здоровых:

  • Нашёл 80 больных (TP = 80)
  • Пропустил 20 больных (FN = 20)
  • Правильно определил 90 здоровых (TN = 90)
  • Ошибочно "нашёл болезнь" у 10 здоровых (FP = 10)
Precision = 80 / (80 + 10) = 80 / 90 = 88.9%
Когда тест говорит "болен", он прав в 89% случаев

Recall = 80 / (80 + 20) = 80 / 100 = 80%
Тест находит 80% всех больных

Компромисс между Precision и Recall

Проблема: обычно нельзя одновременно улучшить обе метрики!

  • Хочешь повысить Recall (найти больше больных)? → будет больше FP (ложных тревог) → упадёт Precision
  • Хочешь повысить Precision (меньше ошибаться)? → будешь осторожнее → пропустишь больше (FN) → упадёт Recall
Печать