TATECHATLAS
◎ Русский
Математика и модели

Выбор между MAE и RMSE для прогнозирования ошибок

Поймите различия между средней абсолютной ошибкой (MAE) и среднеквадратичной ошибкой (RMSE), как выбрать правильную метрику для вашей задачи прогнозирования и влияние больших ошибок на каждую из них.

В этом материале

При оценке регрессионных моделей, средняя абсолютная ошибка (MAE) и среднеквадратичная ошибка (RMSE) являются распространенными метриками. MAE измеряет среднюю величину ошибок, что делает ее устойчивой к выбросам и легкой для интерпретации, поскольку она имеет те же единицы измерения, что и целевая переменная. RMSE, с другой стороны, сильнее наказывает за большие ошибки из-за возведения ошибок в квадрат перед усреднением и извлечением квадратного корня. Выбор между MAE и RMSE зависит от конкретных целей задачи прогнозирования: если большие ошибки особенно нежелательны и должны строго наказываться, предпочтительнее RMSE. Если все ошибки должны рассматриваться одинаково по величине, MAE является лучшим выбором. Обе метрики являются строго согласованными функциями оценки для прогнозирования среднего значения отклика.

Понимание MAE и RMSE

Средняя абсолютная ошибка (MAE) и среднеквадратичная ошибка (RMSE) - это широко используемые метрики для оценки производительности регрессионных моделей. Они количественно определяют разницу между предсказанными значениями и фактическими целевыми значениями. MAE вычисляет среднее абсолютных разностей между прогнозами и истинными значениями. RMSE, наоборот, вычисляет квадратный корень из среднего квадратов разностей между прогнозами и истинными значениями. Обе метрики предоставляют меру ошибки прогнозирования, причем меньшие значения указывают на лучшую подгонку.

Основное различие заключается в том, как они обрабатывают ошибки. MAE одинаково относится ко всем ошибкам по величине. Например, ошибка в 10 единиц вносит в MAE в два раза больше, чем ошибка в 5 единиц. RMSE, однако, возводит ошибки в квадрат перед усреднением. Это означает, что большие ошибки оказывают непропорционально большее влияние на RMSE. Ошибка в 10 единиц вносит в сумму квадратов ошибок в четыре раза больше, чем ошибка в 5 единиц, и, следовательно, большую величину в RMSE.

Когда использовать MAE

Средняя абсолютная ошибка (MAE) является подходящим выбором, когда вам нужна простая интерпретация средней величины ошибки. Поскольку MAE вычисляется как среднее абсолютных разностей, ее единица измерения совпадает с единицей измерения целевой переменной, что делает ее интуитивно понятной. Например, если вы прогнозируете цены на жилье в долларах, MAE в $5000 означает, что в среднем ваши прогнозы отличаются на $5000.

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

from sklearn.metrics import mean_absolute_error

y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
mae = mean_absolute_error(y_true, y_pred)
print(f"Mean Absolute Error: {mae}")
# Вывод: Mean Absolute Error: 0.5

Когда использовать RMSE

Среднеквадратичная ошибка (RMSE) предпочтительнее, когда большие ошибки значительно более нежелательны, чем маленькие. Возведение ошибок в квадрат в RMSE усиливает штраф за промахи. Это делает RMSE особенно полезной в сценариях, где стоимость большой ошибки намного выше стоимости нескольких маленьких ошибок. Например, в финансовом прогнозировании большая ошибка прогноза может привести к существенным финансовым потерям, что делает RMSE более подходящей метрикой.

RMSE также тесно связана со стандартным отклонением остатков (ошибок прогнозирования). Это распространенная метрика в статистическом моделировании, часто используемая, когда предполагается, что основное распределение данных является Гауссовым. Хотя RMSE не так прямо интерпретируема в терминах исходных единиц, как MAE (из-за операций возведения в квадрат и извлечения квадратного корня), она обеспечивает чувствительную меру величины ошибки, особенно для больших отклонений.

from sklearn.metrics import root_mean_squared_error

y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
rmse = root_mean_squared_error(y_true, y_pred)
print(f"Root Mean Squared Error: {rmse}")
# Вывод: Root Mean Squared Error: 0.6123724356957945

Влияние больших ошибок

Ключевое отличие между MAE и RMSE заключается в их чувствительности к большим ошибкам. Рассмотрим сценарий с прогнозами и истинными значениями. Если ошибки равны [1, 2, 3, 10], MAE будет (1+2+3+10)/4 = 4. RMSE будет включать sqrt(((1^2)+(2^2)+(3^2)+(10^2))/4) = sqrt((1+4+9+100)/4) = sqrt(114/4) = sqrt(28.5) ≈ 5.34.

Теперь, если самая большая ошибка уменьшена с 10 до 5, ошибки становятся [1, 2, 3, 5]. MAE становится (1+2+3+5)/4 = 2.75. RMSE становится sqrt(((1^2)+(2^2)+(3^2)+(5^2))/4) = sqrt((1+4+9+25)/4) = sqrt(39/4) = sqrt(9.75) ≈ 3.12. Обратите внимание, как уменьшение самой большой ошибки значительно снизило MAE, но влияние на RMSE было менее выраженным по сравнению с его начальным значением. Это иллюстрирует тенденцию RMSE сильнее наказывать за большие ошибки.

Выбор правильной метрики

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

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

Согласованность и обучение модели

Обе метрики, MAE и RMSE, ценны для оценки моделей, но они также могут служить функциями потерь во время обучения модели. При использовании MAE в качестве функции потерь (например, потери средней абсолютной ошибки) модель оптимизируется для минимизации средней абсолютной разницы между прогнозами и истинными значениями. Этот подход поощряет модели, которые менее чувствительны к выбросам.

Использование RMSE в качестве функции потерь (например, потери среднеквадратичной ошибки, квадратный корень которой равен RMSE) приводит к созданию моделей, которые более чувствительны к большим ошибкам. Процесс оптимизации будет отдавать приоритет уменьшению этих больших отклонений. Выбор функции потерь во время обучения напрямую влияет на поведение модели и ее характеристики производительности, измеряемые соответствующей метрикой оценки.

Реализация в Scikit-learn

Scikit-learn предоставляет удобные функции как для MAE, так и для RMSE. Функция mean_absolute_error вычисляет MAE, а root_mean_squared_error вычисляет RMSE. Обе функции принимают y_true (истинные значения) и y_pred (предсказанные значения) в качестве основных аргументов. Они также поддерживают sample_weight для взвешенных расчетов ошибок и multioutput для обработки случаев с несколькими целевыми переменными.

Эти метрики могут быть напрямую использованы для оценки или интегрированы в конвейеры перекрестной проверки с использованием параметра scoring. Например, при использовании GridSearchCV или cross_val_score вы можете указать scoring='neg_mean_absolute_error' или scoring='neg_root_mean_squared_error'. Обратите внимание на префикс 'neg_': соглашение scikit-learn заключается в том, что более высокие значения лучше, поэтому метрики, которые обычно минимизируются (например, потери ошибок), возвращаются в виде их отрицательных значений.

from sklearn.metrics import mean_absolute_error, root_mean_squared_error
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LinearRegression
import numpy as np

# Пример данных
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
y = np.dot(X, np.array([1, 2])) + 3

model = LinearRegression()

# Использование MAE для перекрестной проверки
mae_scores = cross_val_score(model, X, y, cv=2, scoring='neg_mean_absolute_error')
print(f"MAE scores: {mae_scores}")
print(f"Average MAE: {-mae_scores.mean()}")

# Использование RMSE для перекрестной проверки
rmse_scores = cross_val_score(model, X, y, cv=2, scoring='neg_root_mean_squared_error')
print(f"RMSE scores: {rmse_scores}")
print(f"Average RMSE: {-rmse_scores.mean()}")

Ограничения и соображения

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

Обе метрики предполагают, что ошибки независимы и одинаково распределены. Если в данных существует временная зависимость или гетероскедастичность (непостоянная дисперсия ошибок), эти метрики могут не полностью отражать производительность модели. В таких случаях могут потребоваться специализированные метрики временных рядов или анализ остатков. Кроме того, при работе с многовыходной регрессией параметр multioutput в функциях scikit-learn позволяет использовать различные стратегии агрегации, которые следует тщательно выбирать в зависимости от контекста проблемы.

Что проверить

  • Убедитесь, что выбранная метрика (MAE или RMSE) соответствует бизнес-цели или стоимости, связанной с ошибками прогнозирования.
  • Убедитесь, что интерпретация значения метрики ясна в контексте единиц измерения проблемы.
  • Проверьте, оказывает ли наличие выбросов существенное влияние на выбранную метрику и желательно ли это влияние.
  • Подтвердите, что выбранная метрика последовательно используется как для обучения модели (в качестве функции потерь), так и для оценки.
  • При использовании scikit-learn помните, что метрики ошибок часто инвертируются для параметров оценки (например, 'neg_mean_squared_error').

MAE и RMSE в первую очередь подходят для задач регрессии. Они не применимы напрямую к задачам классификации. Для многовыходной регрессии метод агрегации, указанный параметром multioutput, может повлиять на итоговую оценку.

Источники

  1. scikit-learn: model evaluation ↗
  2. scikit-learn: mean_absolute_error ↗
  3. scikit-learn: root_mean_squared_error ↗
Наверх ↑