Ответ
MAE (Средняя абсолютная ошибка) вычисляется как среднее абсолютных разностей между предсказаниями и истинными значениями:
MAE = (1/n) * Σ|y_true - y_pred|
Преимущества:
- Простая и интуитивная интерпретация: Ошибка выражена в тех же единицах, что и целевая переменная. Например, MAE=5 для прогноза цен означает среднюю ошибку в 5 долларов.
- Робастность к выбросам: Поскольку используется абсолютное значение, MAE менее чувствителен к редким большим ошибкам по сравнению с MSE (квадратичная ошибка). Это полезно в доменах с шумными данными.
- Оптимизация медианы: Минимизация MAE приводит к предсказанию медианы распределения целевой переменной, что может быть желательно при асимметричных распределениях.
Недостатки:
- Не дифференцируема в нуле: Функция модуля |x| не имеет производной в точке x=0, что может создавать проблемы для некоторых алгоритмов оптимизации, хотя на практике это редко является критичным (используются субградиенты).
- Не штрафует большие ошибки квадратично: Это может быть как плюсом (робастность), так и минусом, если крупные ошибки критически нежелательны для задачи.
- Менее популярна в теории: Многие статистические свойства и методы (например, разложение ошибки) проще выводятся для MSE.
Пример использования в Python:
import numpy as np
from sklearn.metrics import mean_absolute_error
# Пример данных
y_true = [12.5, 8.0, 10.2, 14.1, 9.7]
y_pred = [11.8, 8.5, 9.9, 15.0, 10.0]
mae_value = mean_absolute_error(y_true, y_pred)
print(f"MAE: {mae_value:.2f}") # Вывод: MAE: 0.62
# Ручной расчёт для понимания
errors = np.abs(np.array(y_true) - np.array(y_pred))
print(f"Абсолютные ошибки: {errors}") # [0.7, 0.5, 0.3, 0.9, 0.3]
print(f"Среднее: {np.mean(errors):.2f}") # 0.54
На практике MAE часто используется в задачах регрессии, где интерпретируемость и устойчивость к выбросам важнее, чем сильное наказание за крупные промахи.
Ответ 18+ 🔞
Слушай, давай разберём эту MAE, а то народ иногда путается, как будто на дворе 2002-й год и все только квадратичные ошибки видели. Это ж, бля, средняя абсолютная ошибка, самая что ни на есть простая штука.
Что это такое, ёпта?
Формула — проще пареной репы: берешь все свои предсказания, вычитаешь из них правду, берешь модуль (то есть похуй, плюс или минус — только размер ошибки), всё это складываешь и делишь на количество. MAE = (1/n) * Σ|y_true - y_pred|. Всё, делов-то.
Чем она хороша, эта MAE?
- Понятная, как три копейки. Если ты цены на квартиры предсказываешь и MAE=5, значит в среднем ты ошибаешься на пять тысяч баксов. Никакой ебени с квадратами — всё наглядно.
- Не парится по поводу выбросов. Случился у тебя один дикий промах, когда модель предсказала цену в десять раз больше реальной. Для MSE это был бы пиздец, квадрат ошибки взлетел бы до небес. А MAE посмотрит на этот выброс, скажет «ну ок, одна большая ошибка» и не даст ей раздуть общую картину до овердохуища. Очень живучая метрика для грязных данных.
- Оптимизирует под медиану. Если ты её минимизируешь, модель в итоге будет стремиться предсказывать не среднее значение (как MSE), а медиану. Для асимметричных распределений, где есть куча дешевых квартир и несколько золотых хором, это часто даже полезнее.
А где подвох?
- Не везде гладкая. Функция модуля в нуле имеет излом, производной там нет. Для каких-нибудь хитрых алгоритмов оптимизации это может создать мелкие трудности, но обычно все справляются — используют субградиенты, и хуй с ним.
- Большим ошибкам — пофиг. Это обратная сторона её живучести. Если для твоей задачи принципиально не допускать никаких огромных промахов (например, в прогнозировании нагрузки на электросеть, где один промах — блэкаут), то MAE может быть слишком мягкой. Она не накажет квадратом за редкий, но фатальный косяк.
- Теоретики её меньше любят. С MSE всё красиво раскладывается по полочкам, дисперсию-смещение посчитать легко. С MAE такие фокусы проходят сложнее, поэтому в учебниках про неё меньше пишут. Но это не значит, что она хуже — просто другая.
Смотри, как на Python это выглядит:
import numpy as np
from sklearn.metrics import mean_absolute_error
# Допустим, предсказал цены на бутылки кваса
y_true = [12.5, 8.0, 10.2, 14.1, 9.7] # Реальная цена
y_pred = [11.8, 8.5, 9.9, 15.0, 10.0] # Что нагадала модель
mae_value = mean_absolute_error(y_true, y_pred)
print(f"MAE: {mae_value:.2f}") # Выведет: MAE: 0.62
# А если вручную, для полного понимания:
errors = np.abs(np.array(y_true) - np.array(y_pred))
print(f"Абсолютные ошибки по каждой бутылке: {errors}") # [0.7, 0.5, 0.3, 0.9, 0.3]
print(f"Их среднее, оно и есть MAE: {np.mean(errors):.2f}") # 0.54
Короче, когда её юзать? Да когда тебе нужна простая, понятная и крепкая метрика, которая не сломается от пары странных значений в данных. Если выбросы — это норма жизни, а не ЧП, то MAE твой выбор. Если же каждая крупная ошибка — это волнение ебать и потенциальная катастрофа, то, может, лучше посмотреть в сторону MSE или RMSE.