Метрики регрессии: MAE, MSE, RMSE и R²

Метрика регрессии превращает набор ошибок в одно число, но разные формулы отвечают на разные вопросы. Выбор между MAE, MSE, RMSE и R² должен учитывать единицы измерения, цену…

Метрика регрессии превращает набор ошибок в одно число, но разные формулы отвечают на разные вопросы. Выбор между MAE, MSE, RMSE и R² должен учитывать единицы измерения, цену крупных промахов и то, с каким базовым прогнозом сравнивается модель.

Ошибка отдельного объекта

Остаток равен разности известного ответа и прогноза. Положительные и отрицательные остатки нельзя просто усреднить: они взаимно уничтожатся. Метрики используют модуль или квадрат отклонения, а затем агрегируют значения по выборке.

Всегда изучайте распределение ошибок дополнительно к среднему числу. Две модели с одинаковой MAE могут различаться: первая умеренно ошибается везде, вторая почти точна для большинства объектов, но опасно промахивается на редких случаях.

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

MAE усредняет модули отклонений и сохраняет единицы цели. Значение 7 минут означает, что прогноз времени доставки в среднем отличается примерно на семь минут. Каждый дополнительный пункт ошибки увеличивает штраф линейно.

Метрика относительно устойчива к отдельным выбросам по сравнению с квадратом, но слово «устойчива» не означает, что выбросы можно игнорировать. Нужно проверить, являются ли они ошибками данных или важными редкими сценариями.

MSE и RMSE: усиленный штраф

MSE усредняет квадраты ошибок. Промах в 20 единиц штрафуется в четыре раза сильнее промаха в 10, поэтому крупные отклонения заметно влияют на итог. Единица MSE также возведена в квадрат и хуже читается в отчёте.

RMSE берёт корень из MSE и возвращает исходный масштаб цели. Она сохраняет повышенное внимание к большим ошибкам, но её нельзя интерпретировать как обычную среднюю абсолютную величину.

R²: сравнение с константой

Коэффициент детерминации сравнивает модель с baseline, который предсказывает среднее значение. R² = 1 соответствует идеальным прогнозам, R² = 0 — качеству среднего на оцениваемом наборе. Отрицательное значение возможно и означает, что модель хуже этого baseline.

Высокий R² не говорит, что абсолютная ошибка приемлема для продукта. При широком диапазоне целей коэффициент может выглядеть впечатляюще, хотя промах в денежных или временных единицах остаётся дорогим.

Расчёт в scikit-learn

import numpy as np

from sklearn.metrics import (
    mean_absolute_error,
    mean_squared_error,
    r2_score,
)

y_test = np.array([3.0, -0.5, 2.0, 7.0, 4.0])
predictions = np.array([2.5, 0.0, 2.1, 8.0, 3.4])

mae = mean_absolute_error(y_test, predictions)
mse = mean_squared_error(y_test, predictions)
rmse = mse ** 0.5
r2 = r2_score(y_test, predictions)

print({'MAE': mae, 'MSE': mse, 'RMSE': rmse, 'R2': r2})

Формула mean_squared_error(...) ** 0.5 работает и в старых версиях scikit-learn. В новом API тот же расчёт доступен как root_mean_squared_error(...). Версию зависимости следует закреплять вместе с проектом.

Метрика должна отражать решение

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

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

Практика: сравните два набора ошибок

Создайте два вектора ошибок: [2, 2, 2, 14] и [5, 5, 5, 5]. Посчитайте MAE и RMSE вручную и кодом. Проверьте себя: MAE обоих наборов равна 5, а RMSE — примерно 7,21 и 5. Объясните, почему квадрат сильнее выделяет 14, затем выберите вариант для прогноза срока доставки лекарства.

Что важно запомнить

Источники