Машинное обучение: формула оценки точности модели
В отчёте по пилоту модели нередко появляется одна строка: Accuracy — 94%. Для бизнеса она звучит как почти готовое разрешение на внедрение.

Оценка точности моделей машинного обучения не сводится к одной формуле, хотя именно этого обычно ждут от аналитики и менеджеры продукта, и команды разработки. Метрика должна отвечать не на общий вопрос «насколько умна модель», а на более узкий и дорогой: какие ошибки она совершает, как часто это происходит и сколько такие ошибки стоят процессу. Следовательно, сначала определяется тип задачи — классификация или регрессия, — а уже затем выбирается способ измерения результата.
Ловушка Accuracy: правильных ответов много, пользы мало
Accuracy, или доля правильных ответов, — самая понятная и потому самая переиспользуемая метрика машинного обучения. Её формула выглядит так:
Accuracy = (TP + TN) / (TP + TN + FP + FN)
Здесь:
- TP, True Positive — истинно положительные ответы: модель обнаружила объект нужного класса, и он действительно относится к этому классу;
- TN, True Negative — истинно отрицательные: модель верно определила отсутствие нужного признака;
- FP, False Positive — ложноположительные ответы: модель сработала, хотя события в действительности не было;
- FN, False Negative — ложноотрицательные ответы: модель не заметила событие, которое существовало.
Эти четыре величины составляют матрицу ошибок, или confusion matrix. Она показывает, как именно модель машинного обучения ошибается, тогда как Accuracy скрывает структуру этих ошибок за одним усреднённым числом.
Рассмотрим антифрод-модель для 10 000 операций. Из них 500 действительно мошеннические, остальные 9500 — нет. Если алгоритм автоматически называет все операции нормальными, он получит 9500 верных ответов из 10 000. Accuracy составит 95%. При этом все 500 мошеннических операций останутся незамеченными.
| Фактический класс / прогноз | Мошенничество | Норма |
|---|---|---|
| Мошенничество | TP | FN |
| Норма | FP | TN |
Проблема здесь не в самой Accuracy. На ровной, сбалансированной выборке, где классы представлены примерно одинаково, она остаётся полезным индикатором. Например, если система различает два равных по объёму типа обращений в поддержку, доля правильных ответов даст первое приближение к её качеству. Но в реальных цифровых продуктах распределение обычно неравномерно: отмены подписок происходят реже продлений, дефектные изображения встречаются реже корректных, просрочки редки относительно платежей в срок.
Поэтому расчет эффективности машинного обучения начинается не с красивого значения в дашборде, а с распределения классов в данных. Если позитивное событие редкое, высокая Accuracy может быть следствием инерции модели, а не её способности распознавать сигнал.
Высокая Accuracy сообщает, сколько ответов совпало с разметкой. Она не сообщает, нашла ли модель то, ради чего её создавали.
Есть и вторая ловушка. Accuracy предполагает, что все ошибки равноценны. Для рекомендательного блока ошибочный показ товара может стоить одного потерянного клика. Для системы медицинского триажа пропуск критического случая и лишнее направление к специалисту имеют принципиально разную цену. В первом случае ошибка влияет на конверсию. Во втором — на безопасность процесса. Одна общая метрика не может честно выразить оба риска.
Классификация: Precision, Recall и F1 как язык цены ошибки
В задачах классификации модель присваивает объекту один из классов. Это может быть письмо «спам / не спам», заявка «одобрить / отклонить», диалог «нужна эскалация оператору / можно ответить ботом». После построения матрицы ошибок появляется возможность измерять качество более предметно.
Precision: можно ли доверять срабатыванию
Precision, или точность положительного класса, рассчитывается так:
Precision = TP / (TP + FP)
Метрика отвечает на вопрос: если модель сообщила о событии, какова вероятность, что она права?
Высокий Precision нужен там, где каждое срабатывание запускает затратное действие. Например, сервис компьютерного зрения выделяет товар с дефектом на производственной линии. Если ложноположительных сигналов слишком много, сотрудники будут регулярно останавливать поток, проверять исправные товары и постепенно перестанут доверять системе. Аналогично работает фильтр подозрительных документов: низкий Precision превращает аналитика в оператора, который разбирает шум.
В продуктовых терминах Precision управляет стоимостью лишней реакции. Чем ниже метрика, тем больше ресурсов команда расходует на случаи, которые не требовали вмешательства.
Recall: сколько значимых случаев осталось за пределами модели
Recall, или полнота, имеет другую формулу:
Recall = TP / (TP + FN)
Она показывает, какую долю всех реальных положительных объектов удалось обнаружить. Если Precision отвечает за чистоту сигнала, то Recall — за широту охвата.
Высокая полнота особенно ценна в сценариях, где пропуск события дороже дополнительной проверки. В системе поиска потенциально опасного контента, в мониторинге технических инцидентов, в первичном отборе лидов с высокой вероятностью ухода — везде модель может допускать часть лишних сигналов, если благодаря этому она не пропускает значимые случаи.
Однако стремление к максимальному Recall почти всегда повышает число FP. Если снизить порог классификации, модель будет чаще относить объекты к положительному классу. Она найдёт больше реальных событий, но одновременно станет тревожнее. Это не дефект конкретного алгоритма, а фундаментальный компромисс в бинарной классификации.
| Бизнес-сценарий | Что дороже | Приоритетная метрика | Практическое следствие |
|---|---|---|---|
| Антифрод платежей | Пропустить мошенничество | Recall | Допустима дополнительная ручная проверка части операций |
| Автоблокировка аккаунтов | Ошибочно заблокировать клиента | Precision | Порог должен быть консервативнее |
| Поиск обращений, требующих оператора | Не заметить сложный запрос | Recall | Бот чаще передаёт диалог человеку |
| Маркировка дефектов на линии | Лишняя остановка процесса | Precision | Сигнал должен быть достаточно чистым |
F1-мера: баланс, но не универсальный ответ
Когда Precision и Recall одинаково существенны, используют F1-меру — гармоническое среднее двух показателей:
F1 = 2 × (Precision × Recall) / (Precision + Recall)
Гармоническое среднее устроено строже обычного: высокий результат нельзя получить, если один из компонентов провален. Модель с Precision 0,99 и Recall 0,10 выглядит убедительно только до тех пор, пока эти значения не соединяют в F1. Метрика сразу показывает, что алгоритм очень редко ошибается при срабатывании, но находит лишь малую часть нужных объектов.
F1 полезна для сравнения версий модели, настройки порога и оценки систем на несбалансированных данных. В частности, она часто лучше Accuracy отражает качество фильтра спама, классификатора обращений или модели выявления редких событий.
С другой стороны, F1 не отменяет разговор о бизнес-цене ошибки. Формула предполагает, что Precision и Recall имеют сопоставимый вес. Если ложный отказ в кредите несёт репутационный и регуляторный риск, а пропуск части заявок просто означает менее агрессивный рост, равный вес окажется спорным. В таком случае команда может сознательно оптимизировать одну метрику, а вторую использовать как ограничение: например, повышать Recall, пока Precision не опустится ниже уровня, приемлемого для операционной команды.
ROC-AUC: качество модели до выбора рабочего порога
Большинство классификаторов не выдают готовый вердикт «да» или «нет» изначально. Они оценивают вероятность принадлежности к классу: вероятность оттока, вероятность спама, вероятность дефекта на изображении. Решение появляется после установки порога. Если вероятность выше порога, объект считается положительным.
ROC-кривая показывает, как меняются показатели модели при последовательном изменении этого порога. По одной оси откладывается доля найденных положительных объектов, то есть Recall; по другой — доля ложноположительных срабатываний среди отрицательных объектов. ROC-AUC — площадь под этой кривой.
Значение ROC-AUC = 1,0 соответствует идеальному ранжированию: модель всегда ставит реальные положительные объекты выше отрицательных. Значение 0,5 означает качество на уровне случайного угадывания. Между этими крайностями находится практическая зона, но универсального «хорошего» порога здесь нет. Модель с ROC-AUC, выглядящим достойно в лабораторной выборке, может не дать нужного экономического эффекта, если ошибка в верхней части рейтинга слишком дорога.
Смысл ROC-AUC в том, что она оценивает не конкретное решение при одном пороге, а способность модели ранжировать объекты. Это особенно удобно на этапе сравнения архитектур, признаков и обучающих выборок. Например, одна версия модели удержания клиентов лучше расставляет пользователей по вероятности оттока, хотя финальный порог для передачи клиента в кампанию удержания ещё не выбран.
Но переводить ROC-AUC напрямую в бизнес-результат не стоит. Маркетинговая команда не работает с площадью под кривой. Она работает с ограниченным бюджетом, сегментом из определённого числа пользователей и стоимостью контакта. После оценки ранжирования всё равно потребуется выбрать порог либо верхний процент списка, затем измерить фактический отклик и инкрементальный эффект кампании.
ROC-AUC отвечает за качество ранжирования. Решение о пороге принимает не математика сама по себе, а экономика процесса.
Для зрелого внедрения полезно хранить не только итоговый ROC-AUC, но и распределение прогнозных вероятностей, изменения метрик по сегментам и доверительные интервалы. Интервал в 95% или 99% помогает увидеть разброс оценки: разница между двумя версиями может оказаться следствием случайной вариативности тестовой выборки, а не реальным улучшением.
Регрессионные модели: измеряем не попадание в класс, а величину промаха
Не всякое машинное обучение занимается выбором класса. Регрессия предсказывает числовую величину: спрос на товар, время доставки, выручку пользователя, потребление ресурсов в облачной инфраструктуре. Здесь матрица ошибок уже не подходит. Прогноз 125 и фактическое значение 130 не являются ни полностью верным, ни полностью неверным ответом. Нужно измерить величину отклонения.
MAE: средняя ошибка в понятных единицах
MAE, Mean Absolute Error, или средняя абсолютная ошибка, рассчитывается как среднее модулей разницы между прогнозом и фактическим значением.
Она показывает, насколько в среднем модель ошибается в единицах целевой величины. Если сервис прогнозирует срок доставки в часах и MAE равна двум часам, это можно прямо обсуждать с операционной командой. Метрика удобна именно своей интерпретируемостью: ошибка не возводится в квадрат и не меняет масштаб.
MAE подходит для задач, где каждое отклонение имеет примерно линейную цену. Опоздание курьера на один час неприятно, на два — примерно вдвое неприятнее, при прочих равных. Но реальная экономика иногда устроена иначе: крупные промахи способны ломать планирование, вызывать дефицит товара или перегружать поддержку. Тогда одной MAE недостаточно.
MSE: штраф за крупные ошибки
MSE, Mean Squared Error, или среднеквадратичная ошибка, усредняет квадраты отклонений. За счёт возведения в квадрат большой промах влияет на результат сильнее малого.
Это делает MSE чувствительной к выбросам. Если система прогнозирует спрос, а несколько ошибок привели к существенному избытку запасов, MSE заметит проблему быстрее, чем MAE. С другой стороны, один редкий аномальный период способен непропорционально ухудшить метрику. Поэтому MSE требует контекста: были ли экстремальные значения ошибками данных, исключительными внешними событиями или именно теми рисками, которые модель обязана учитывать.
Сравнивать MSE между разными наборами данных напрямую нельзя без учёта масштаба целевой переменной. Ошибка в квадратных единицах для спроса в десятках заказов и для оборота в миллионах рублей имеет совершенно разную интерпретацию. Для корректного сравнения нужны единый объект прогнозирования, единый период и сопоставимая предобработка данных.
R²: объясняет ли модель больше, чем константа
Коэффициент детерминации R² показывает, какую долю вариации целевой переменной объясняет модель. Значение, близкое к 1, означает хорошее соответствие прогнозов данным. Значение, близкое к 0, говорит о качестве, сопоставимом с наивным константным предсказанием.
R² полезен как индикатор того, извлекла ли модель из признаков системный сигнал. Если он низкий, возможно, данных недостаточно, целевая переменная сильно зависит от внешних факторов или выбранная постановка задачи неверна. Однако высокий R² не означает, что модель готова к запуску. Она может хорошо описывать исторические данные и одновременно плохо переноситься на следующий период, новый регион или иной ассортимент.
| Метрика | Что измеряет | Чувствительность к выбросам | Как читать в продукте |
|---|---|---|---|
| MAE | Средний абсолютный промах | Умеренная | Средняя ошибка в исходных единицах |
| MSE | Средний квадрат промаха | Высокая | Сильнее штрафует крупные отклонения |
| R² | Объяснённая доля вариации | Зависит от данных и модели | Показывает, есть ли системный сигнал относительно базового прогноза |
Для регрессии разумно смотреть на MAE и MSE вместе. Первая метрика описывает типичный опыт процесса, вторая подсвечивает дорогие хвостовые ошибки. R² дополняет картину, но не заменяет измерение абсолютного отклонения. Руководителю логистики обычно важнее знать, на сколько часов модель промахивается, чем долю объяснённой дисперсии в отрыве от операционных решений.
Как проверить модель машинного обучения до внедрения
Точность алгоритмов машинного обучения должна измеряться не на тех же данных, на которых алгоритм обучался. Иначе модель может запомнить особенности обучающей выборки и показать оптимистичный результат, не способный повториться в реальной эксплуатации. Для цифрового продукта это особенно чувствительно: пользовательское поведение меняется, каталог обновляется, интерфейс влияет на события, а новые каналы приводят другую аудиторию.
Практический порядок оценки выглядит так:
1. Зафиксировать решение, которое будет принимать модель. Не «предсказывать отток», а, например, «отбирать пользователей для кампании удержания за 14 дней до вероятной отмены». Формулировка определяет целевую переменную, окно прогнозирования и стоимость ошибки.
2. Разделить исторические данные на обучающую и тестовую части с учётом времени. Для временных процессов случайное перемешивание может создать утечку будущего в прошлое. Модель спроса, обученная на данных из последующих периодов, в тесте покажет качество, которого в реальном запуске не будет.
3. Построить базовый ориентир. Модель необходимо сравнивать не только с предыдущей нейросетью, но и с простым правилом: средним значением для регрессии, постоянным прогнозом класса для классификации, действующим ручным процессом. Если сложная архитектура не превосходит базовую линию, её эксплуатационная сложность не оправдана.
4. Посмотреть на матрицу ошибок или распределение отклонений. Итоговая метрика нужна для сравнения, но именно срез ошибок объясняет, где система приносит риск. Для классификации это TP, TN, FP и FN. Для регрессии — сегменты с максимальными ошибками, сезонность, редкие значения, новые категории объектов.
5. Проверить качество на значимых сегментах. Средняя метрика может маскировать деградацию для новых пользователей, отдельных регионов, языков интерфейса, категорий товаров или устройств. Если модель является частью продукта, а не лабораторным экспериментом, сегментный анализ — часть её функционального тестирования.
6. Выбрать порог по цене действия, а не по максимальной метрике. У классификатора почти всегда можно передвинуть границу и изменить соотношение Precision и Recall. Порог выбирают вместе с владельцем процесса: сколько заявок способен обработать отдел, какой процент ошибочных блокировок допустим, какой объём потерь несёт пропуск события.
7. Настроить мониторинг после релиза. Результат на тестовой выборке — это стартовая гипотеза, а не пожизненный сертификат качества. После запуска меняются данные, распределение классов и поведение пользователей. Метрики нужно пересчитывать на размеченной обратной связи и сопоставлять с бизнес-показателями.
Этот порядок отделяет оценку модели от демонстрации модели. Демонстрация стремится показать лучший результат. Оценка стремится заранее найти границы применимости.
Метрика следует за процессом, а не наоборот
Универсальной формулы оценки качества машинного обучения не существует, поскольку не существует двух одинаковых цен ошибок. В классификации Accuracy остаётся удобной отправной точкой, но на несбалансированных данных она часто создаёт ложное чувство надёжности. Precision показывает цену лишнего сигнала, Recall — цену пропуска, F1 помогает удерживать баланс, ROC-AUC оценивает способность ранжировать объекты до выбора порога.
В регрессионных задачах MAE переводит ошибку в язык операции, MSE выделяет тяжёлые промахи, R² показывает, извлекает ли модель объясняющий сигнал из данных. Ни одна из этих метрик не должна жить отдельно от тестовой выборки, сегментов пользователей и сценария, в котором прогноз превращается в действие.
Следующий этап развития ИИ-сервисов будет связан не столько с ростом числа моделей в продукте, сколько с ростом дисциплины вокруг них. Компании уже умеют подключать языковые модели, классификаторы и компьютерное зрение через API. Конкурентным преимуществом станет способность доказать, где такая система надёжна, где она ошибается и какой экономический эффект создаёт после настройки порога. Именно так машинное обучение перестаёт быть витринной технологией и становится управляемой частью цифрового процесса.