В чем разница между MSE и MAE?

«В чем разница между MSE и MAE?» — вопрос из категории Метрики и функции потерь, который задают на 35% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

MSE (Mean Squared Error, средняя квадратичная ошибка) и MAE (Mean Absolute Error, средняя абсолютная ошибка) — две основные метрики для задач регрессии, которые по-разному штрафуют ошибки модели.

MSE (Средняя квадратичная ошибка):

  • Формула: (MSE = frac{1}{n}sum_{i=1}^{n}(y_i - hat{y}_i)^2)
  • Свойства:
    • Чувствительна к выбросам. Поскольку ошибки возводятся в квадрат, большие отклонения вносят непропорционально большой вклад в общую ошибку.
    • Дифференцируема. Это ключевое свойство для использования в градиентных методах оптимизации (например, в градиентном спуске внутри нейронных сетей или линейной регрессии).
    • Даёт оценку в квадратах единиц целевой переменной.

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

  • Формула: (MAE = frac{1}{n}sum_{i=1}^{n}|y_i - hat{y}_i|)
  • Свойства:
    • Робастна к выбросам. Штрафует ошибки линейно, поэтому выбросы не имеют такого сильного влияния, как в MSE.
    • Не дифференцируема в точке 0. Это может создавать сложности при использовании в градиентной оптимизации, но на практике это часто обходят.
    • Даёт оценку в тех же единицах, что и целевая переменная, что упрощает интерпретацию.

Практический пример и выбор:

from sklearn.metrics import mean_squared_error, mean_absolute_error
import numpy as np

# Данные с потенциальным выбросом
y_true = [100, 120, 95, 105, 1000]  # Последнее значение — выброс
y_pred = [105, 115, 100, 100, 110]

mse = mean_squared_error(y_true, y_pred)
mae = mean_absolute_error(y_true, y_pred)

print(f'MSE: {mse:.2f}')  # Очень большое значение из-за выброса
print(f'MAE: {mae:.2f}')   # Значительно меньше подвержено влиянию выброса
  • Используйте MSE, когда выбросы важны и являются частью закономерности, или когда вам критична дифференцируемость для обучения модели.
  • Используйте MAE, когда данные содержат шумные выбросы, которые нужно игнорировать, или когда нужна легко интерпретируемая метрика в исходных единицах.