Метрики регрессии: 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²: он показывает, какую долю разброса целевой переменной объясняет модель. R² = 1 — идеально, R² = 0 — не лучше, чем просто предсказывать среднее. В отличие от MAE/RMSE он безразмерный, поэтому удобен для сравнения задач в разных единицах.
Итог
- MAE — среднее модулей ошибок, в тех же единицах, устойчива к выбросам.
- RMSE — корень из MSE, сильнее наказывает крупные промахи.
- RMSE заметно больше MAE — признак выбросов в ошибках.
- R² показывает долю объяснённого разброса и удобен для сравнения разных задач.