--- id: wiki-2026-0508-mean-squared-error-mse title: Mean Squared Error (MSE) category: 10_Wiki/Topics status: verified canonical_id: self aliases: [MSE, L2 Loss, Squared Error, RMSE] duplicate_of: none source_trust_level: A confidence_score: 0.9 verification_status: applied tags: [ml, loss-function, regression, metric, statistics] raw_sources: [] last_reinforced: 2026-05-10 github_commit: pending tech_stack: { language: python, framework: sklearn-pytorch } --- # Mean Squared Error (MSE) ## 매 한 줄 > **"매 큰 오차에 큰 벌"**. MSE = mean((y - ŷ)²). 제곱 때문에 outlier에 민감하지만 미분 가능·convex라서 회귀의 디폴트 loss. ## 매 핵심 ### 매 정의 - **MSE**: $\frac{1}{n} \sum (y_i - \hat{y}_i)^2$ - **RMSE**: $\sqrt{\text{MSE}}$ — 단위가 원본과 동일. - **MAE**: $\frac{1}{n} \sum |y_i - \hat{y}_i|$ — 비교 대상. - 가우시안 가정 하 MLE = MSE 최소화. ### 매 특성 1. 미분 가능 (gradient = 2(ŷ - y)/n). 2. Convex → 전역 최소 보장 (linear regression). 3. Outlier에 quadratic하게 끌려간다. 4. 단위가 제곱 → 해석은 RMSE로. 5. Scale-dependent (정규화 안 하면 feature 큰 쪽 지배). ## 💻 패턴 ### Pattern 1 — sklearn ```python from sklearn.metrics import mean_squared_error mse = mean_squared_error(y_true, y_pred) rmse = mean_squared_error(y_true, y_pred, squared=False) # ≥1.4: root_mean_squared_error ``` ### Pattern 2 — PyTorch ```python import torch.nn.functional as F loss = F.mse_loss(pred, target) # default: mean loss_sum = F.mse_loss(pred, target, reduction='sum') ``` ### Pattern 3 — NumPy (수동) ```python import numpy as np mse = np.mean((y - y_hat) ** 2) rmse = np.sqrt(mse) ``` ### Pattern 4 — Huber (outlier robust) ```python loss = F.huber_loss(pred, target, delta=1.0) # |x|<δ면 MSE, 아니면 MAE — 두 세계의 좋은 점 ``` ### Pattern 5 — Weighted MSE ```python loss = (weights * (pred - target) ** 2).mean() # 샘플 중요도가 다를 때 (e.g., 최근 데이터 가중) ``` ### Pattern 6 — Log-MSE (multiplicative error) ```python loss = F.mse_loss(torch.log1p(pred), torch.log1p(target)) # 가격/판매량처럼 비율 오차가 중요할 때 ``` ## 매 결정 기준 | 상황 | Loss | |---|---| | 일반 회귀 / outlier 적음 | **MSE** | | Outlier 많음 / heavy tail | MAE 또는 Huber | | 비율 오차 중요 | log-MSE / MAPE | | Quantile 예측 | Pinball loss | | 분류 | Cross-Entropy (MSE 쓰지 말 것) | | 시계열 평가 보고 | RMSE (단위 일치) | **기본값**: MSE 학습 + RMSE 보고. ## 🔗 Graph - 부모: [[Loss-Function]], [[Regression]] - 변형: [[RMSE]] - 응용: [[Linear-Regression]], [[Neural-Networks]], [[Time-Series-Analysis|Time-Series-Forecasting]] - Adjacent: [[MAE]], [[Cross-Entropy]] ## 🤖 LLM 활용 **언제**: - Loss 선택 디버깅 (outlier 영향 분석). - 회귀 모델 평가 보고서 초안. - MSE/MAE/Huber tradeoff 설명. **언제 X**: - 도메인 특화 loss 설계 (custom utility 필요). - 분류 문제에 손실 추천. ## ❌ 안티패턴 - 분류에 MSE (sigmoid+MSE는 vanishing gradient). - Outlier 많은 데이터에 MSE 그대로. - Feature scaling 없이 MSE 비교. - RMSE 대신 MSE를 사용자에게 보고 (단위 혼란). - target의 분포가 long-tail인데 raw MSE 사용. ## 🧪 검증 / 중복 - Verified. 신뢰도 A. ## 🕓 Changelog | 날짜 | 변경 | |---|---| | 2026-05-08 | Phase 1 | | 2026-05-10 | Manual cleanup |