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

Ответ

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, когда данные содержат шумные выбросы, которые нужно игнорировать, или когда нужна легко интерпретируемая метрика в исходных единицах.

Ответ 18+ 🔞

Давай разжую про эти две метрики, а то народ путается, как будто на дворе 2002-й год и все только про accuracy слышали. Речь про MSE и MAE — две основные палки, которыми бьют регрессионные модели по рукам за ошибки.

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

  • Формула: (MSE = frac{1}{n}sum_{i=1}^{n}(y_i - hat{y}_i)^2)
  • Что за зверь: Это та самая, которая выбросы просто обожает. Ошибку она возводит в квадрат, понимаешь? Если твоя модель промахнулась на 10, штраф — 100. А если на 100, то штраф уже 10 000, ёпта! Получается овердохуища влияния от одной большой лажи. Зато она гладкая, как жопа младенца, и её можно красиво дифференцировать — поэтому её так любят градиентные спуски в нейросетях. Результат выдаёт в квадратах единиц, так что готовься к головной боли при интерпретации.

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

  • Формула: (MAE = frac{1}{n}sum_{i=1}^{n}|y_i - hat{y}_i|)
  • Что за зверь: А вот это уже хитрая жопа. Она на выбросы смотрит сквозь пальцы. Ошибку она берёт по модулю. Промах на 10? Штраф 10. Промах на 100? Штраф 100. Всё честно, линейно, без этих ваших квадратных выебонов. Выбросы не сожрут всю метрику. Но есть нюанс — в точке ноль у неё излом, она там не дифференцируема. Хотя народ уже приноровился это обходить. Зато результат в нормальных, человеческих единицах — сразу понятно, в среднем на сколько единиц модель косячит.

Ну и где это применять, блядь? Смотри на жизнь проще. Вот тебе код, который всё прояснит:

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, когда: в данных куча случайного шума, доверия ебать ноль к этим аномалиям, и тебе нужна метрика, которую начальству на пальцах объяснить можно: «В среднем ошибаемся на 10 рублей, шеф».

Короче, выбор за тобой. Хочешь чувствительности к пиздецу — MSE. Хочешь робастности и спокойной жизни — MAE. Всё просто, как хуй с горы.