Skip to main content

회귀 평가 지표

회귀 모델은 연속적인 수치를 예측하므로, 예측값과 실제값 사이의 오차를 다양한 방식으로 측정합니다.

학습 목표

  • MSE, RMSE, MAE, MAPE의 차이와 적합한 상황을 이해합니다.
  • R-squared와 Adjusted R-squared를 올바르게 해석할 수 있습니다.
  • 잔차 분석(Residual Analysis)으로 모델의 문제점을 진단할 수 있습니다.

왜 중요한가

주택 가격 예측에서 RMSE가 5만원인지 500만원인지에 따라 모델의 실용 가치가 달라집니다. 또한 동일한 모델이라도 지표에 따라 순위가 바뀔 수 있으므로, 문제에 적합한 지표를 선택해야 합니다.

핵심 개념

주요 지표 비교

import numpy as np
from sklearn.metrics import (mean_squared_error, mean_absolute_error,
                             r2_score, mean_absolute_percentage_error)

y_true = np.array([100, 150, 200, 250, 300])
y_pred = np.array([110, 140, 210, 240, 320])

mse  = mean_squared_error(y_true, y_pred)
rmse = np.sqrt(mse)
mae  = mean_absolute_error(y_true, y_pred)
mape = mean_absolute_percentage_error(y_true, y_pred)
r2   = r2_score(y_true, y_pred)

print(f"MSE:  {mse:.2f}")     # 평균 제곱 오차
print(f"RMSE: {rmse:.2f}")    # 원래 단위로 해석 가능
print(f"MAE:  {mae:.2f}")     # 평균 절대 오차
print(f"MAPE: {mape:.2%}")    # 평균 절대 백분율 오차
print(f"R²:   {r2:.4f}")      # 설명된 분산 비율
지표특성이상치 민감도적합한 상황
MSE큰 오차에 큰 페널티높음큰 오차를 특히 피해야 할 때
RMSEMSE의 제곱근 (원래 단위)높음결과를 원래 단위로 해석할 때
MAE평균 절대 오차낮음이상치가 있을 때
MAPE백분율 오차중간스케일이 다른 데이터 비교
R-squared0~1 (높을수록 좋음)중간모델의 설명력 비교

잔차 분석

import matplotlib.pyplot as plt

# 잔차 = 실제값 - 예측값
residuals = y_test - y_pred

fig, axes = plt.subplots(1, 2, figsize=(12, 4))

# 잔차 vs 예측값 (패턴이 없어야 정상)
axes[0].scatter(y_pred, residuals, alpha=0.5)
axes[0].axhline(y=0, color="r", linestyle="--")
axes[0].set_xlabel("예측값")
axes[0].set_ylabel("잔차")
axes[0].set_title("잔차 vs 예측값")

# 잔차 분포 (정규 분포에 가까워야 정상)
axes[1].hist(residuals, bins=30, edgecolor="black")
axes[1].set_xlabel("잔차")
axes[1].set_ylabel("빈도")
axes[1].set_title("잔차 분포")
plt.tight_layout()
plt.show()
아닙니다. 특성 수를 늘리면 R-squared는 항상 증가하거나 유지됩니다. 따라서 특성 수를 보정한 Adjusted R-squared를 함께 확인해야 합니다. 또한 R-squared가 높아도 잔차에 패턴이 있으면 모델에 문제가 있습니다.
큰 오차를 특히 피해야 한다면 RMSE, 이상치가 있어서 강건한 지표가 필요하면 MAE를 사용합니다. 두 지표의 차이가 크면 이상치의 영향이 크다는 신호입니다.

체크리스트

  • MSE, RMSE, MAE의 차이를 설명할 수 있다
  • R-squared 값을 올바르게 해석할 수 있다
  • 잔차 분석 그래프를 해석할 수 있다
  • 문제 특성에 맞는 회귀 지표를 선택할 수 있다

다음 문서