RMSE или MAE: как одна крупная ошибка меняет оценку модели
Сервис планирует запас товара на завтра. Одна модель обычно ошибается на одну упаковку, но в отдельный день промахивается на десять. Другая стабильно ошибается на четыре. Какую считать лучше? Ответ зависит от того, одинаково ли бизнес переживает каждый лишний товар и внезапный крупный дефицит. Именно здесь выбор MAE или RMSE меняет вывод об эксперименте.
Один набор ошибок — два ранжирования
MAE усредняет абсолютные ошибки. Каждый лишний промах на одну единицу прибавляет одну единицу к сумме. RMSE сначала возводит ошибки в квадрат, усредняет квадраты и возвращает корень, поэтому крупный промах влияет сильнее. Обе метрики выражаются в единицах целевой величины и равны нулю при идеальном прогнозе. Для сравнения не надо спорить о названиях: запишите несколько типичных ошибок и посчитайте их.
import numpy as np
from sklearn.metrics import mean_absolute_error, root_mean_squared_error
fact = np.array([10., 10., 10., 10.])
models = {"A": [9., 9., 9., 20.], "B": [6., 6., 6., 6.]}
for name, forecast in models.items():
mae = mean_absolute_error(fact, forecast)
rmse = root_mean_squared_error(fact, forecast)
print(name, "MAE", round(mae, 3), "RMSE", round(rmse, 3))
assert mean_absolute_error(fact, models["A"]) < mean_absolute_error(fact, models["B"])
assert root_mean_squared_error(fact, models["A"]) > root_mean_squared_error(fact, models["B"])У A ошибки 1, 1, 1 и 10: MAE равен 3,25, RMSE — примерно 5,074. У B четыре ошибки по 4: обе метрики равны 4. По MAE выигрывает A, по RMSE — B. Это не противоречие: метрики по-разному штрафуют редкий крупный промах. Код проверяет и величины, и смену порядка моделей.
Что спросить у процесса принятия решения
Если каждая ошибочная единица стоит примерно одинаково, MAE ближе к общей абсолютной стоимости. Если большой дефицит останавливает продажи или производство, а малые ошибки почти незаметны, RMSE может лучше отражать приоритет крупных промахов. Но квадрат ошибки не является автоматически денежной функцией потерь. Для решения о запасах отдельно посчитайте фактическую стоимость дефицита и излишка: она часто асимметрична.
Посмотрите распределение ошибок на отложенном периоде. Сколько дней дают большие промахи? Повторяются ли они на одном товаре, праздниках или новых точках? Средняя метрика не ответит. Если один подозрительный день вызван ошибкой загрузки факта, сначала проверьте источник. Если это реальный пик спроса, он может быть самым важным случаем для бизнеса. Не удаляйте его из теста только потому, что после удаления цифра становится красивее.
Нулевые продажи требуют отдельного внимания. Процентная ошибка MAPE при нуле теряет обычный смысл и может стать огромной; разбор нулевого факта показывает это на расчёте. MAE и RMSE в натуральных единицах остаются определёнными. Если сравниваете товары разного масштаба, считайте метрики по группам и показывайте объём каждой группы, иначе крупный товар задавит остальные в общей сумме.
Обязательно уточните уровень агрегирования. Ошибка в десять упаковок на одном магазине и ошибка в десять упаковок по всей сети равны в формуле, но могут вести к разным решениям. Если модель прогнозирует каждый товар отдельно, общий MAE по всем строкам может скрыть провал на дорогой позиции. Покажите её отдельно с числом наблюдений и проверьте, что период сравнения одинаков для обеих моделей.
До обучения новой модели закрепите основную метрику и вторичные срезы. Иначе можно бесконечно выбирать ту цифру, по которой последняя версия случайно выглядит лучше. На курсе «Data Scientist: от данных до деплоя моделей» вы проходите постановку задачи, выбор метрик, сравнение baseline и анализ ошибок. Это помогает связать результат эксперимента с реальным решением о запасе, а затем отслеживать качество после релиза. Откройте программу курса.
Продолжить на практике
- Data Scientist: от данных до деплоя моделей ↗
Практический курс по Data Science: от постановки ML-задачи и работы с данными до inference API, CI/CD и мониторинга моделей в продакшне. Вы пройдёте EDA, feature engineering, обучение и оценку моделей, experiment tracking, error analysis и deployment — чтобы собирать полноценный рабочий контур вокруг ML-решения.
