
MAE и RMSE: как выбрать метрику под смысл ошибки прогноза


Какой вопрос на самом деле решает метрика
Когда выбирают метрику для регрессии, часто возникает ложный ход мысли: посчитать несколько чисел и взять то, которое выглядит «лучше». Для пары MAE и RMSE это не работает. На одном и том же наборе прогнозов RMSE почти всегда будет больше или равна MAE, но это не делает MAE автоматически правильным выбором. Эти метрики отвечают на разные вопросы о цене ошибки.
Практический смысл такой: метрику выбирают не под красивый отчет, а под то, как пользователь переживает ошибку. Если каждая лишняя единица отклонения неприятна примерно одинаково, полезнее смотреть на MAE. Если редкие крупные промахи особенно болезненны и ломают решение сильнее, чем серия маленьких, RMSE покажет это заметнее. В документации scikit-learn совет формулируется близко к этому: если критерий уже задан задачей, используйте его; если нет, начинайте с цели прогноза и последующего решения.
Ниже разберем один узкий учебный случай: три фактических значения, три прогноза и одна большая ошибка. Этого достаточно, чтобы увидеть разницу не на уровне определения, а на уровне арифметики и выбора.
Учебный пример: три факта и одна большая ошибка
Учебный пример. Представим, что мы прогнозируем дневной спрос на товар в штуках. Фактические значения за три дня такие: 100, 102 и 98. Прогнозы модели: 99, 101 и 130. Два дня модель угадала почти точно, а в третий день сильно завысила спрос.
| День | Факт | Прогноз | Ошибка (прогноз − факт) | Абсолютная ошибка | Квадрат ошибки |
|---|---|---|---|---|---|
| 1 | 100 | 99 | -1 | 1 | 1 |
| 2 | 102 | 101 | -1 | 1 | 1 |
| 3 | 98 | 130 | 32 | 32 | 1024 |
Здесь и появляется главный сюжет статьи. По абсолютным ошибкам видно, что у нас набор 1, 1, 32. По квадратам ошибок — 1, 1, 1024. Уже до формул можно заметить: третья ошибка в квадрате становится несоразмерно тяжелее первых двух. Поэтому MAE и RMSE расскажут о качестве прогноза по-разному.
Такой пример полезен тем, что он очень маленький и проверяемый вручную. Мы не прячемся за библиотеку и сразу видим, где именно метрики расходятся в оценке одной и той же модели.
Ручной расчет MAE: средняя «обычная» величина промаха
MAE считается как среднее арифметическое абсолютных ошибок. Формула в нашем случае простая:
MAE = (|100 - 99| + |102 - 101| + |98 - 130|) / 3
MAE = (1 + 1 + 32) / 3
MAE = 34 / 3 = 11.33Получаем MAE = 11,33 штуки. Это число удобно читать так: в среднем прогноз отклонялся от факта примерно на 11 штук, если измерять ошибку без знака и без дополнительного усиления крупных промахов. Каждая лишняя единица ошибки добавляет к сумме ровно одну единицу. Ошибка 32 вносит в 32 раза больший вклад, чем ошибка 1, и не больше.
Из-за этого MAE хорошо подходит для задач, где нас интересует понятная средняя величина отклонения в исходных единицах. С ней легко разговаривать с заказчиком или коллегой: «в среднем промахиваемся на 11 штук». Но у этой простоты есть цена: одна очень крупная ошибка не получает специального наказания, кроме своего линейного размера.
Если мысленно заменить большую ошибку 32 на 16, вклад в MAE уменьшится ровно вдвое. Это и есть линейная чувствительность. Для одних задач это честно и удобно, для других — слишком мягко.
Ручной расчет RMSE: когда крупный промах становится тяжелее
RMSE считается через квадраты ошибок: сначала находим среднее квадратов, затем берем квадратный корень. Для нашего набора:
RMSE = sqrt(((-1)^2 + (-1)^2 + 32^2) / 3)
RMSE = sqrt((1 + 1 + 1024) / 3)
RMSE = sqrt(1026 / 3)
RMSE = sqrt(342)
RMSE ≈ 18.49Получаем RMSE ≈ 18,49 штуки. После извлечения корня метрика снова выражается в тех же единицах, что и целевая переменная, поэтому ее можно читать без пересчета в квадраты. Но смысл уже другой: большие ошибки здесь наказаны сильнее, чем в MAE, потому что перед усреднением они возводятся в квадрат.
Посмотрите на вклад третьего дня. В MAE он равен 32, а в квадрате — 1024. Если бы крупная ошибка выросла с 16 до 32, ее вклад в MAE просто удвоился бы, а вклад в средний квадрат ошибки вырос бы в четыре раза: с 256 до 1024. Именно поэтому RMSE «нервничает» из-за выбросов сильнее.
Для быстрой проверки расчет можно повторить в обычном Python 3. Здесь знак ошибки задан так же, как в таблице: прогноз − факт.
y_true = [100, 102, 98]
y_pred = [99, 101, 130]
errors = [p - t for t, p in zip(y_true, y_pred)]
abs_errors = [abs(e) for e in errors]
sq_errors = [e ** 2 for e in errors]
mae = sum(abs_errors) / len(abs_errors)
rmse = (sum(sq_errors) / len(sq_errors)) ** 0.5
print(errors) # [-1, -1, 32]
print(abs_errors) # [1, 1, 32]
print(sq_errors) # [1, 1, 1024]
print(round(mae, 2)) # 11.33
print(round(rmse, 2)) # 18.49Если запустить этот код, ручной расчет совпадет. Это полезная проверка: в маленьких примерах ошибка обычно возникает не в формуле, а в порядке действий, знаках или округлении.
Как связать метрику с решением пользователя
Теперь главный вывод. Нельзя сказать: «MAE лучше, потому что 11,33 меньше, чем 18,49». Это сравнение чисел из разных правил подсчета. Вы не выбираете между двумя моделями по одной метрике, вы выбираете способ смотреть на ошибку. Сначала определяют, что в задаче считается действительно неприятным, и только потом фиксируют метрику.
Для нашего учебного случая MAE подойдет, если смысл такой: каждая лишняя штука отклонения стоит примерно одинаково, а один большой промах не нужно выделять сильнее, чем его размер сам по себе. Например, если прогноз используют для мягкой предварительной оценки и редкая крупная ошибка не ломает процесс.
RMSE подойдет, если один большой промах создает несоразмерный ущерб по сравнению с несколькими малыми. Это бывает, когда редкий провал запускает лишние ручные действия, заметный пересмотр плана или накопление ненужного запаса. Тогда RMSE полезна не потому, что она «строже», а потому, что она ближе к смыслу последствий.
Есть и простой тест для себя: задайте вопрос не «какая метрика меньше?», а «что хуже для моей задачи — десять ошибок по 3 или одна ошибка на 30?». Если вы внутренне отвечаете, что одна ошибка на 30 намного неприятнее, чем это видно из простой суммы, RMSE часто окажется естественнее. Если же важна ровная средняя ошибка без драматизации редких пиков, MAE обычно понятнее.
Для системной практики можно посмотреть внутреннюю карточку курса «Машинное обучение. Базовый уровень». По официальной странице школы подтверждено, что в модуле 4 программы разбираются регрессия, метрики MAE, MSE, RMSE, R2 и их интерпретация. Это полезно именно для отработки связи между расчетом метрики и смыслом ошибки, а не для выбора по одному «красивому» числу.





















