🏢 Ситуация
Стажёр из соседней команды хвастается в общем чате: «Обучил антифрод-модель, accuracy 99.2%!» Игорь присылает вам личное сообщение:
«Посмотри его ноутбук и найди подвох. Подсказка: фрода в данных 0.8%. Потом расскажешь на демо — это лучший урок про метрики, который можно получить.»
Вы открываете ноутбук: модель предсказывает «не фрод» всегда. Accuracy = 99.2%, потому что честных транзакций 99.2%. Модель бесполезна — она не поймала ни одного мошенника.
🎯 Ваша задача
- Разобраться в матрице ошибок и метриках: precision, recall, F1.
- Понять ROC-AUC и PR-AUC.
- Научиться выбирать метрику под цену ошибки в бизнесе.
📚 Теория
Матрица ошибок
Для бинарной классификации (фрод = позитивный класс):
| Предсказано: фрод | Предсказано: не фрод | |
|---|---|---|
| Реально фрод | TP (поймали) | FN (пропустили мошенника) |
| Реально не фрод | FP (заблокировали честного) | TN |
Две ошибки — два разных ущерба:
- FN — пропущенный фрод: компания теряет деньги напрямую.
- FP — заблокированный честный клиент: испорченный опыт, звонки в поддержку, отток.
Основные метрики
| Метрика | Формула | Отвечает на вопрос |
|---|---|---|
| Accuracy | (TP+TN)/все | «Какая доля предсказаний верна?» — обманчива при дисбалансе |
| Precision | TP/(TP+FP) | «Из помеченных как фрод — сколько реально фрод?» |
| Recall | TP/(TP+FN) | «Из всего фрода — сколько поймали?» |
| F1 | гарм. среднее P и R | компромисс, когда важны оба |
Precision и recall всегда в противоречии: снижаем порог → ловим больше фрода (recall ↑), но чаще блокируем честных (precision ↓).
ROC-AUC и PR-AUC
- ROC-кривая: TPR (recall) против FPR при всех порогах. AUC — площадь под ней: вероятность, что случайный фрод получит скор выше случайной честной транзакции. 0.5 — монетка, 1.0 — идеал.
- ROC-AUC не зависит от порога и удобна для сравнения моделей, но при сильном дисбалансе может выглядеть оптимистично.
- PR-AUC (precision-recall) честнее при редком позитивном классе — используйте её для фрода, дефектов, редких болезней.
Как выбирать метрику: от цены ошибки
Алгоритм зрелого инженера:
- Выписать цену FP и цену FN в деньгах/последствиях.
- Понять операционное ограничение (сколько кейсов может разобрать команда ручной проверки?).
- Выбрать метрику: например, «recall при precision ≥ 90%» или «precision в топ-1000 алертов в день».