---
id: wiki-2026-0508-mean-absolute-error-mae
title: Mean Absolute Error (MAE)
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [MAE, L1 Loss, Mean Absolute Error]
duplicate_of: none
source_trust_level: A
confidence_score: 0.9
verification_status: applied
tags: [loss-function, regression, l1, robust, metric]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack: { language: python, framework: sklearn-pytorch }
---

# Mean Absolute Error (MAE)

## 매 한 줄
> **"매 오차를 그대로, 매 outlier 에 강하게"**. MAE 는 예측과 실제값 차이의 절댓값 평균이며, MSE 와 달리 큰 오차를 제곱으로 부풀리지 않아 outlier 에 robust 하다.

## 매 핵심
### 매 정의
$$\text{MAE} = \frac{1}{n}\sum_{i=1}^{n} |y_i - \hat{y}_i|$$

- 단위가 target 과 동일 → 해석 직관적.
- gradient 는 ±1 (0 에서 미분 불가, sub-gradient 사용).
- 최적해는 **median** (MSE 의 mean 과 대비).

### 매 vs MSE
1. **MSE**: outlier penalize 강함, gradient 가 오차에 비례 → 큰 오차 빠르게 줄임. mean 으로 수렴.
2. **MAE**: outlier 영향 작음, gradient 일정 → 학습 후반 수렴 느림. median 으로 수렴.
3. **Huber**: |e| 작을 때 MSE, 클 때 MAE — 둘의 절충.

### 매 사용처
1. outlier 가 데이터 본질이 아니라 noise 인 회귀.
2. 예측 오차의 단위 의미가 중요한 비즈니스 지표 (배송시간, 판매량).
3. quantile / median regression.

## 💻 패턴
### 1. NumPy 직접
```python
import numpy as np
mae = np.mean(np.abs(y_true - y_pred))
```

### 2. sklearn metric
```python
from sklearn.metrics import mean_absolute_error
mae = mean_absolute_error(y_true, y_pred)
```

### 3. PyTorch L1Loss
```python
import torch.nn as nn
criterion = nn.L1Loss()         # mean reduction
loss = criterion(pred, target)
```

### 4. PyTorch SmoothL1 (Huber)
```python
nn.SmoothL1Loss(beta=1.0)       # |e|<beta → 0.5 e^2/beta, else |e|-0.5*beta
```

### 5. Custom weighted MAE
```python
def weighted_mae(y, p, w):
    return (w * (y - p).abs()).sum() / w.sum()
```

### 6. sklearn regressor 학습 시 MAE 최소화
```python
from sklearn.linear_model import HuberRegressor
from lightgbm import LGBMRegressor
m = LGBMRegressor(objective='regression_l1')   # L1 = MAE
```

### 7. MAPE (percentage 변형)
```python
mape = np.mean(np.abs((y - p) / y)) * 100   # y!=0 보장
```

## 매 결정 기준
| 상황 | Loss |
|---|---|
| outlier 가 noise | MAE / Huber |
| outlier 가 signal (사기탐지 등) | MSE |
| 균형 + smooth gradient | Huber/SmoothL1 |
| 비율 오차가 의미 | MAPE / sMAPE |
| 분포의 꼬리 | quantile loss |

**기본값**: 회귀 평가 metric 은 MAE + RMSE 둘 다 보고, 학습 loss 는 MSE 또는 Huber.

## 🔗 Graph
- 부모: [[Loss-Function]], [[Regression]]
- 변형: [[MSE]]
- 응용: [[Time-Series-Analysis|Time-Series-Forecasting]]

## 🤖 LLM 활용
**언제**: loss 선택 brainstorm, outlier 대응 전략 설명, 비즈니스 metric 매핑.
**언제 X**: 데이터셋 전체 통계 추정 (직접 EDA 가 정확).

## ❌ 안티패턴
- MAE 만 보고 모델 비교 — 분산/꼬리 정보 손실, RMSE 와 함께.
- target scale 매우 다른 multi-output 에 단일 MAE — feature-wise normalize 필요.
- 0 근처 target 에 MAPE — 분모 폭주.
- 0 에서 미분 불가 무시 — Huber/SmoothL1 권장 (특히 SGD).

## 🧪 검증 / 중복
- Verified. 신뢰도 A.

## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup |
