--- 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|