Что такое precision (точность)?

«Что такое precision (точность)?» — вопрос из категории Метрики и функции потерь, который задают на 53% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Precision (точность) — это метрика для задач классификации, которая отвечает на вопрос: «Среди всех объектов, которые модель предсказала как положительные, какая доля действительно является положительными?».

Формула: [ Precision = frac{TP}{TP + FP} ] где:

  • TP (True Positive) — верно предсказанные положительные классы.
  • FP (False Positive) — ложно предсказанные положительные классы (ошибка 1-го рода).

Практический пример: В задаче детекции спама в email, если наша модель пометила 100 писем как спам, и 90 из них действительно были спамом, то precision = 90/100 = 0.9.

Код для расчета:

from sklearn.metrics import precision_score

# Бинарная классификация
y_true = [1, 1, 0, 1, 0, 0]
y_pred = [1, 0, 1, 1, 0, 0] # Модель ошиблась на третьем примере (FP)

precision = precision_score(y_true, y_pred)
print(f'Precision: {precision:.2f}') # 0.67 (2 TP / (2 TP + 1 FP))

Когда precision критически важна? В задачах, где цена ложного срабатывания (FP) высока:

  • Медицинская диагностика: Объявить здорового человека больным (FP) — серьезная ошибка, ведущая к ненужному стрессу и лечению.
  • Поиск мошенничества: Блокировка легальной транзакции (FP) ухудшает пользовательский опыт.

Precision обычно находится в компромиссе (trade-off) с Recall. Увеличение порога классификации повышает precision (модель становится «увереннее»), но снижает recall (модель пропускает часть положительных примеров).