Метрики регрессии: MAE и RMSE

Для чисел свои метрики — простые в расчёте и понятные в интерпретации.

В классификации мы считали верные и неверные ответы. В регрессии ответ — число, и «верно/неверно» не подходит: важно, насколько предсказание промахнулось. Две базовые метрики — MAE и RMSE.

MAE — средняя абсолютная ошибка

MAE (Mean Absolute Error) — среднее значение модулей ошибок: среднее( |правда − предсказание| ).

Самая интуитивная метрика: «в среднем модель ошибается на столько-то». Если предсказываем цену в рублях, MAE тоже в рублях — легко объяснить заказчику. Все промахи учитываются с одинаковым весом.

RMSE — корень из среднеквадратичной ошибки

RMSE (Root Mean Squared Error) — корень из MSE: √(среднее((правда − предсказание)²)).

Это знакомый нам MSE, у которого взяли корень, чтобы вернуться к исходным единицам. Из-за возведения в квадрат RMSE сильнее наказывает крупные промахи: один большой выброс утянет RMSE вверх заметнее, чем MAE.

MAE или RMSE?

МетрикаОсобенностьКогда выбрать
MAEВсе ошибки равноправны, устойчива к выбросамВыбросы — это норма, не хотим, чтобы они доминировали
RMSEСильнее штрафует большие ошибкиКрупные промахи особенно нежелательны

Полезное правило: если RMSE заметно больше MAE — значит, в ошибках есть несколько крупных промахов (выбросов). Если они близки — ошибки распределены ровно.

Считаем обе на Python

Без библиотек, код запускается:

y_true = [100, 150, 200, 250, 300]
y_pred = [110, 140, 210, 230, 310]

n = len(y_true)

mae = sum(abs(t - p) for t, p in zip(y_true, y_pred)) / n
mse = sum((t - p) ** 2 for t, p in zip(y_true, y_pred)) / n
rmse = mse ** 0.5

print("MAE  =", round(mae, 2))
print("MSE  =", round(mse, 2))
print("RMSE =", round(rmse, 2))

Вывод:

MAE  = 12.0
MSE  = 160.0
RMSE = 12.65

Здесь RMSE (12.65) чуть больше MAE (12.0) — значит, ошибки довольно ровные, без сильных выбросов. Добавьте в y_pred один крупный промах и увидите, как RMSE оторвётся от MAE.

Как читать значения метрик

Само по себе число MAE или RMSE ничего не говорит, пока вы не соотнесёте его с масштабом задачи. MAE = 12 — это много или мало? Если предсказываем цену в миллионы, то отлично; если предсказываем оценку от 1 до 5, то катастрофа. Поэтому метрику всегда сравнивают:

  • С масштабом целевой переменной. Ошибка в 12 при средних значениях 200 — это около 6%, вполне терпимо.
  • С простой базовой моделью. Самый честный ориентир — «а что, если всегда предсказывать среднее?». Если ваша модель ошибается не меньше такой заглушки, она бесполезна.

Хорошая привычка — с самого начала завести простую базовую модель и сравнивать с ней. Это сразу показывает, действительно ли модель чему-то научилась.

А ещё бывает R²

Часто упоминают коэффициент детерминации : он показывает, какую долю разброса целевой переменной объясняет модель. R² = 1 — идеально, R² = 0 — не лучше, чем просто предсказывать среднее. В отличие от MAE/RMSE он безразмерный, поэтому удобен для сравнения задач в разных единицах.

Итог

  • MAE — среднее модулей ошибок, в тех же единицах, устойчива к выбросам.
  • RMSE — корень из MSE, сильнее наказывает крупные промахи.
  • RMSE заметно больше MAE — признак выбросов в ошибках.
  • R² показывает долю объяснённого разброса и удобен для сравнения разных задач.
Проверьте себя
1. Что такое MAE?
AСреднее квадратов ошибок
BСреднее модулей ошибок: среднее(|правда − предсказание|)
CДоля верных ответов
DКорень из числа объектов
2. Чем RMSE отличается от MAE по поведению?
ARMSE игнорирует крупные ошибки
BRMSE сильнее наказывает большие промахи из-за возведения ошибок в квадрат
CRMSE всегда меньше MAE
DОни полностью идентичны
3. О чём говорит ситуация, когда RMSE заметно больше MAE?
AМодель идеальна
BВ ошибках есть несколько крупных промахов (выбросов)
CДанные нормализованы
DМетрики посчитаны неверно
Поддержать проект