Встречается на 42% собеседований по Data

Что такое precision

Precision (точность) — это метрика качества классификации, которая показывает, какая доля объектов, предсказанных моделью как положительные, действительно является положительными. Она вычисляется как отношение истинно положительных результатов (True Positives, TP) к сумме истинно положительных и ложно положительных результатов (False Positives, FP): Precision = TP / (TP + FP).

Как это работает

Precision отвечает на вопрос: «Когда модель говорит "положительный класс", насколько можно ей верить?». Высокая точность означает, что модель редко ошибается, помечая отрицательные объекты как положительные. Низкая точность, наоборот, говорит о большом количестве ложных срабатываний.

Метрика особенно важна в задачах, где цена ложноположительного срабатывания высока. Например, в детектировании спама: если система пометит важное письмо как спам, пользователь может его не увидеть. Высокая precision гарантирует, что среди писем, отнесённых к спаму, почти все действительно спам, и риск потери важной корреспонденции минимален.

Precision часто рассматривают в паре с полнотой (recall). Полнота показывает, какую долю всех истинно положительных объектов модель нашла. Эти метрики связаны: увеличение precision обычно снижает recall, и наоборот. Выбор баланса зависит от конкретной задачи.

Пример

Пусть система классификации предсказала 100 писем как спам. Из них 90 действительно оказались спамом, а 10 — обычными письмами. Тогда precision = 90 / 100 = 0.9, или 90%.

В Python для расчёта precision можно использовать функцию precision_score из библиотеки sklearn.metrics:

python
from sklearn.metrics import precision_score

# Истинные метки: 1 — спам, 0 — не спам
y_true = [0, 1, 1, 0, 1, 0, 1, 1, 0, 1]

# Предсказания модели
y_pred = [0, 1, 0, 0, 1, 0, 0, 1, 1, 0]

# Расчёт precision
precision = precision_score(y_true, y_pred)
print("Precision:", precision)

В этом примере модель предсказала 4 положительных объекта (индексы 1, 4, 7, 8), из них 3 действительно положительные (индексы 1, 4, 7), а один — ложноположительный (индекс 8). Precision = 3 / 4 = 0.75.

Подводные камни

  • Дисбаланс классов: precision не учитывает количество истинно отрицательных объектов, поэтому при сильном дисбалансе (например, 99% отрицательных) она может быть высокой даже у слабой модели, если она редко предсказывает положительный класс.
  • Зависимость от порога: precision меняется при изменении порога классификации. Понижая порог, мы увеличиваем число положительных предсказаний, что обычно снижает precision.
  • Интерпретация: precision сама по себе не говорит о полноте. Модель может иметь высокую precision, но пропускать большинство положительных объектов. Поэтому всегда оценивайте precision вместе с recall и, возможно, F1-мерой.

Когда использовать

Precision — ключевая метрика в задачах, где ложные срабатывания дороги:

  • детектирование спама (ложное срабатывание — потерянное письмо);
  • медицинская диагностика (ложный положительный диагноз — лишний стресс и лечение);
  • поиск вредоносного ПО (ложное срабатывание — блокировка легитимного файла);
  • рекомендательные системы (нерелевантная рекомендация — потеря доверия пользователя).

В этих случаях модель должна быть уверена в положительном прогнозе, даже если это приведёт к пропуску части истинных положительных объектов.

Коротко

  • Precision = TP / (TP + FP) — доля верных положительных предсказаний среди всех положительных предсказаний.
  • Метрика важна, когда цена ложноположительного срабатывания высока.
  • Всегда рассматривайте precision в связке с recall и F1-мерой.
  • В Python используйте precision_score из sklearn.metrics.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы