Accuracy - самая популярная метрика в ML.
И одновременно - самая опасная.
Звучит провокационно? Давай разберёмся.
Почему все любят Accuracy?
Формула максимально простая:Accuracy =
(количество правильных предсказаний / общее количество объектов)
Если модель угадывает 90% объектов - кажется, что всё отлично.
Но есть одна проблема 👇
Когда Accuracy полностью врёт
Представим задачу:
👉 1000 клиентов
👉 950 — не уйдут (класс 0)
👉 50 — уйдут (класс 1)
Модель, которая всегда предсказывает «0», получит:
👉 950 правильных предсказаний
👉 Accuracy = 95%
95% — звучит круто. Но модель вообще не находит тех 50 клиентов, ради которых бизнес запускал проект. Она бесполезна.
Проблема №1 — дисбаланс классов
Accuracy не чувствительна к перекосу данных.
В задачах:
👉 Fraud detection
👉 Churn prediction
👉 Medical diagnosis
дисбаланс — это норма, а не исключение.
И accuracy начинает вводить в заблуждение.
Проблема №2 — разные ошибки стоят по-разному
В медицине:
👉 False Negative → пациент болен, модель сказала «здоров»
👉 False Positive → пациент здоров, модель сказала «болен»
Цена ошибок совершенно разная. Accuracy этого не учитывает.
Что использовать вместо Accuracy?
Зависит от задачи.
Если важен поиск редкого класса:
👉 Recall
👉 Precision
👉 F1-score
Если важен баланс:
👉 ROC-AUC
👉 PR-AUC
Если классы несбалансированы:
👉 Balanced Accuracy
Когда Accuracy всё-таки можно использовать?
👉 Когда классы сбалансированы
👉 Когда стоимость ошибок одинакова
👉 Когда это baseline
Во всех остальных случаях - это иллюзия качества.
Вывод
Accuracy - не плохая метрика.
Плохой - слепой выбор метрики.
Метрика должна соответствовать бизнес-задаче.
Иначе вы оптимизируете красивую цифру, а не реальную пользу.
