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

Ответ

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 (модель пропускает часть положительных примеров).

Ответ 18+ 🔞

А, ну вот, precision! Это же та самая штука, когда твоя модель, такая вся из себя умная, начинает тыкать пальцем в небо и кричать «Нашёл!». А ты потом смотришь — и нихуя не нашла, обосралась просто.

Представь, ты ловишь спам. Твоя нейросетка, эта мартышлюшка, наковыряла из тысячи писем сотню и орёт: «Всё, ёпта, это спам, на хуй их!». А ты открываешь эту сотню, а там... овердохуища писем от начальства, от клиентов и от мамки. Вот это и есть ложные срабатывания, эти самые FP. А precision — это как раз мера того, насколько она не обосралась. Из всех, кого она назвала спамом, сколько реально спама? Если из ста писем реально спамных девяносто — ну, precision 0.9, ещё терпимо. А если пятьдесят — ну, пидарас шерстяной, а не модель, доверия ебать ноль.

Вот формула её, эту хитрожопую: [ Precision = frac{TP}{TP + FP} ]

Где TP — это когда она угадала (реальный спам и назвала спамом), а FP — это когда она облажалась по полной (нормальное письмо, а она на него с лаем кинулась). Делишь угаданное на сумму «угаданное + обосранное» — вот тебе и точность предсказаний.

В коде это выглядит проще простого, смотри:

from sklearn.metrics import precision_score

# Допустим, реальные ответы (1 — спам, 0 — не спам)
y_true = [1, 1, 0, 1, 0, 0]
# А вот что наворочала наша модель-бздун
y_pred = [1, 0, 1, 1, 0, 0] # Смотри, на третьем элементе обосралась: сказала 'спам' (1), а там 'не спам' (0)!

precision = precision_score(y_true, y_pred)
print(f'Precision: {precision:.2f}') # Выведет 0.67

Считаем: TP у нас два (первый и четвёртый элементы), FP — один (третий элемент). 2 / (2 + 1) = 0.67. Precision 67%, ядрёна вошь! То есть в каждой тройке писем, которые она заспамила, одно будет левое. Не айс.

А теперь главный вопрос: когда на эту метрику надо смотреть как на икону? Да тогда, когда цена ложной тревоги — просто пиздец какая высокая.

  • Медицина. Ну представим: алгоритм ставит диагноз «рак». А на самом деле его нет (FP). И человеку, этому чуваку, который просто чихнул, начинают химию-терапию литрами вливать. Ёперный театр! Тут precision должна быть под 100%, иначе будет вам хиросима.
  • Фрод-детекция в банке. Модель решила, что платёж левый, и блокирует карту. А это мужик просто жене на день рождения шубу купил. И он теперь стоит на кассе, красный как рак, карточкой шлёпает, а она не работает. Волнение ебать, терпения ноль ебать. Клиент ушёл нахуй, и правильно сделал.

Запомни одну важную вещь: precision всегда в драке с recall (полнотой). Это как качество против количества. Если ты закрутишь порог уверенности модели (чтоб она орала «спам» только когда на 99% уверена), то precision подрастёт (она меньше будет обсираться), но recall упадёт (она кучу реального спама промолчит и пропустит). И наоборот. Баланс искать — это уже твоя, чувак, головная боль. Э, бошка, думай!