R2, MAE и RMSE: как выбрать метрику для регрессии

R2, MAE и RMSE без путаницы: как выбрать метрику регрессии под задачу, чем они различаются и что на самом деле говорят о модели.

Содержание Следующие статьи
Содержание R2, MAE и RMSE: как выбрать метрику для регрессии
  1. Почему одна и та же модель может выглядеть хорошей и плохой одновременно
  2. MAE и RMSE отличаются не только формой записи
  3. А что тогда делает R2
  4. Как выбирать метрику под задачу

Почему одна и та же модель может выглядеть хорошей и плохой одновременно

С регрессией почти всегда случается один и тот же вопрос: какую метрику смотреть? Если взять только R2, можно получить красивую историю о доле объясненной вариации. Если смотреть только MAE, появится ощущение средней абсолютной ошибки в понятных единицах. Если смотреть RMSE, внимание резко сместится к крупным промахам. И все три истории будут правдивы, но каждая — про свой аспект качества.

Поэтому выбор метрики в регрессии — это не техническая мелочь. Это выбор того, что именно вы считаете дорогой ошибкой.

MAE и RMSE отличаются не только формой записи

Формула: раздел математики — математическая статистика
$$ RMSE = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_i - \hat y_i)^2} $$
Что означает эта формула

RMSE усиливает влияние крупных ошибок, потому что сначала возводит отклонения в квадрат, а потом только возвращает масштаб через корень. Поэтому эта метрика особенно чувствительна к редким большим промахам модели.

Что означает каждый символ
  • RMSE — корень из средней квадратичной ошибки
  • n — число наблюдений в выборке
  • y_i — реальное значение для i-го объекта
  • \hat y_i — предсказание модели для i-го объекта

MAE ведет себя мягче: она считает средний абсолютный промах и поэтому проще интерпретируется в тех же единицах, что и target. Если вы прогнозируете цену квартиры и MAE равна 120 тысячам, это очень читаемый сигнал. RMSE в той же задаче полезнее, если бизнесу особенно больно от редких крупных ошибок и их нужно наказывать сильнее.

А что тогда делает R2

R2 не измеряет ошибку в понятных единицах. Он отвечает на другой вопрос: насколько лучше модель объясняет разброс данных по сравнению с наивным прогнозом среднего. Это полезная метрика, когда нужно быстро понять, есть ли у модели вообще объясняющая сила. Но R2 легко переоценить, если забыть, что он ничего не говорит о масштабе ошибки в рублях, секундах или килограммах.

Поэтому на практике R2 часто идет рядом с MAE или RMSE, а не вместо них.

Как выбирать метрику под задачу

Если тебе важна понятность в бизнес-единицах, начинай с MAE. Если особенно опасны большие промахи, смотри RMSE. Если нужен быстрый сигнал о том, объясняет ли модель данные вообще, смотри R2. В серьезной задаче полезно держать сразу несколько метрик, но при этом понимать, какая из них является главной для принятия решения.

example.pyPython
from sklearn.metrics import mean_absolute_error  # считаем среднюю абсолютную ошибку в понятных единицах
from sklearn.metrics import mean_squared_error  # используем MSE как основу для RMSE
from sklearn.metrics import r2_score  # измеряем объясненную долю вариации target
import numpy as np  # берем корень из средней квадратичной ошибки

y_true = [100, 120, 130, 160, 200]  # реальные значения target
y_pred = [110, 118, 150, 155, 190]  # прогнозы модели на тех же объектах

mae = mean_absolute_error(y_true, y_pred)  # считаем средний абсолютный промах
rmse = np.sqrt(mean_squared_error(y_true, y_pred))  # усиливаем штраф за крупные ошибки через квадрат
r2 = r2_score(y_true, y_pred)  # смотрим, насколько модель лучше простого среднего
print({'mae': round(mae, 3), 'rmse': round(rmse, 3), 'r2': round(r2, 3)})  # читаем все три угла зрения на качество

Когда эти метрики читаются вместе, модель перестает оцениваться «в вакууме». Ты начинаешь видеть, где она просто в среднем неплоха, где опасно ошибается, а где действительно объясняет структуру данных.

Что читать дальше

Связанные статьи по этой теме

Canary deployment для моделей: как выкатывать новую версию без лишнего риска Latency в ML API: почему быстрая модель важна не меньше точной Batch inference и real-time inference: как выбирать режим работы модели
Вернуться в блог