[ML LifeCycle] 회귀 모델의 평가 지표

beaver.zip·2024년 8월 17일
0

1. MAE(Mean Absolute Error)

MAE=1ni=1nyiy^iMAE = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i|

  • 실제값과 예측값의 차이의 절댓값 평균
  • 특이값이 많을 때 주로 사용
  • 값이 낮을 수록 좋음

장점

  • 단위가 종속변수와 동일해 직관적임
  • 모든 오차를 동일하게 고려해 해석이 간단
  • 이상치의 영향을 상대적으로 덜 받음

단점

  • 모델이 실제값보다 낮게 예측한지, 높게 예측한지 알기 어려움 (절댓값을 취하므로)
  • 스케일 의존적(scale dependency) = 모델마다 에러 크기가 동일해도 에러율은 동일하지 않음
# MAE
from sklearn.metrics import mean_absolute_error
mae = mean_absolute_error(y_true, y_pred)

2. MSE (Mean Squared Error)

MSE=1ni=1n(yiy^i)2MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2

  • 실제값과 예측값의 차이의 제곱 평균
  • 큰 오차에 더 큰 패널티 부여
  • 값이 낮을수록 좋음

장점

  • 큰 오차에 민감하게 반응해 큰 오차를 줄이는 데 유용

단점

  • 단위가 제곱된 형태라 실제 값과 다를 수 있음
  • 이상치의 영향을 많이 받음 (제곱을 취하므로)
  • 모델이 실제값보다 낮게 예측하는지, 높게 예측하는지 알기 어려움
  • 스케일 의존적
# MSE
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_true, y_pred)

3. RMSE (Root Mean Squared Error)

RMSE=1ni=1n(yiy^i)2RMSE = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2}

  • 실제값과 예측값의 차이의 제곱 평균(=MSE)에 제곱근을 취한 값
  • MSE의 장점을 가지면서 MSE의 단위 문제를 해결
  • 값이 낮을수록 좋음

장점

  • 큰 오차에 민감하게 반응함
  • 실제 값과 같은 단위 유지해 해석이 용이
  • MSE에 비해 이상치로부터 생기는 값의 왜곡이 덜함 (제곱근을 취하므로)

단점

  • 모델이 실제값보다 낮게 예측하는지, 높게 예측하는지 알기 어려움
  • 스케일 의존적
# RMSE
from sklearn.metrics import mean_squared_error
rmse = mean_squared_error(y_true, y_pred, squared=False)

4. MAPE (Mean Absolute Percentage Error)

MAPE=1ni=1nyiy^iyi×100%MAPE = \frac{1}{n} \sum_{i=1}^{n} \left| \frac{y_i - \hat{y}_i}{y_i} \right| \times 100\%

  • MAE를 비율, 퍼센트로 표현하여 스케인 의존적 에러의 문제점을 개선
  • 값이 낮을수록 좋음

장점

  • 직관적임
  • 데이터 스케일에 영향 받지 않음
  • 다른 모델과 에러율 비교가 쉬움

단점

  • 모델이 실제값보다 낮게 예측하는지, 높게 예측하는지 알기 어려움
  • 실제 정답이 1보다 작을 경우, 무한대로 발산할 수 있음
from sklearn.metrics import mean_absolute_percentage_error
mean_absolute_percentage_error(y_true, y_pred)

5. R2 Score (= 결정계수)

R2=1i=1n(yiy^i)2i=1n(yiyˉ)2R^2 = 1 - \frac{\sum_{i=1}^{n} (y_i - \hat{y}_i)^2}{\sum_{i=1}^{n} (y_i - \bar{y})^2}

  • 독립변수가 종속변수를 얼마나 잘 설명해주는지 나타내는 지표
  • 0~1의 값을 가지며, 1에 가까울수록 설명력이 높음
  • 비교적 해석이 쉽고 다른 모델과 비교할 때 유용함
  • 독립변수가 2개 이상인 경우, 조정된 결정계수를 사용해야함
- R2 Score <= 0: 모델 활용 불가
- 0 < R2 Score < 1 : 1에 가까울 수록 좋은 모델
- R2 Score = 1 : 가장 좋은 모델
# R2
from sklearn.metrics import r2_score
r2 = r2_score(y_true, y_pred)

Outro

더 읽어볼 것

참고 자료

profile
NLP 일짱이 되겠다.

0개의 댓글