https://velog.io/@kupulau/머신-러닝-성능-평가-지표
https://velog.io/@kupulau/머신-러닝분류의-성능-평가
위와 같이 머신 러닝 성능 평가에 대한 포스팅을 한 적 있지만, 사용하는 모델의 종류에 따라 사용하는 성능 평가 지표가 달라질 수 있다. 크게는 회귀 모델 유형과 분류 모델 유형이 있는데, 이번 포스팅에서는 특히 회귀 모델의 성능 평가 지표에 대해서 알아보자.
MAE (평균 절대 오차) 는 실제 값과 예측 값 차이의 절대값의 평균이다.
MSE (평균 제곱근 오차) 는 실제 값과 예측 값의 차를 제곱한 값의 평균이다.
scikit-learn에서 MSE를 계산하는 기능을 제공한다.
from sklearn.metrics import mean_squared_error
# y_true = 실제 값
# y_model = 예측 값
mse = mean_squared_error(y_true, y_model, squared=True)
RMSE (평균 제곱근 편차) 는 MSE에 를 씌운 것이다. MSE가 값을 제곱하기 때문에, 실제 오류 평균보다 값이 커지므로 이를 줄이기 위한 것이다.
scikit-learn에서 RMSE를 계산하는 기능을 제공한다. 함수는 MSE의 경우와 같고, squared 옵션을 False로 바꾸면 된다.
rmse = mean_squared_error(y_true, y_model, squared=False)
RMSLE (평균 제곱근 대수 오차) 는 RMSE에 자연 로그를 취한 형태이다.
scikit-learn에서 RMSLE를 계산하는 기능을 제공한다. 다만 아래 함수 자체는 mean squared log error를 계산하는 것이므로, 별도로 square root를 씌워줘야 한다.
from sklearn.metrics import mean_squared_log_error
import numpy as np
rmsle = np.sqrt(mean_squared_log_error(y_true, y_model))
결정 계수(Coefficient of determination)는 모델이 종속 변수의 변동성을 얼마나 잘 설명하는지를 나타내는 지표이다. 0 ~ 1 사이의 값을 가지며, 1에 가까울 수록 모델이 데이터를 잘 설명한다고 할 수 있다. 여러 모델의 성능을 비교할 때 유용하다. (여기서 은 true의 평균)
분자는 오차 제곱합 (Sum of Squared Errors)으로, 모델이 실제 데이터를 얼마나 잘 맞췄는지를 나타내고 분모는 총 변동 (Total Sum of Squares)으로 데이터가 평균으로부터 얼마나 흩어져있는지를 나타내는 것이다.
결정 계수는 이상치(outlier)에 민감하고, 비선형 관계를 잘 설명하지 못한다는 한계가 있다.
https://www.kaggle.com/code/carlolepelaars/understanding-the-metric-rmsle
https://ahnjg.tistory.com/90