Ответ
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 упадёт (она кучу реального спама промолчит и пропустит). И наоборот. Баланс искать — это уже твоя, чувак, головная боль. Э, бошка, думай!