본문 바로가기

카테고리 없음

Python 코드로 MSE, RMSE, MAE 구하기

이전 포스팅에서 Sklearn을 활용하여 선형 회귀 분석 모델을 만들고 R²(결정 계수)를 확인 하였는데

모델 평가 방법중 MSE, RMES, MAE 를 각각 확인 하는 방법을 적은 포스팅 입니다.

 

모델 평가 방법들을 각각 Sklearn 에서 제공하는 함수들을 이용하는 방법과 Sklearn 방법 이외에 직접 계산하는 방법을 각각 적어 두었습니다.

 

MSE

from sklearn.metrics import mean_squared_error

skmse = mean_squared_error(y_pred=test['Likes_pred'], y_true = test['Likes'])
my_mse = sum(list((test['Likes'] - test['Likes_pred'])**2))/len(test)

skmse = 5198564271.396194
my_mse = 5198564271.3961935
 

위의 소스코드를 보면 알 수 있듣이 Sklearn에 y_pred 메서드의 값을 우리가 구한 예측값을 넣고, y_true 메서드에 데이터가 가진 실제 값을 넣게 되면 두 값의 MSE를 계산하여 값을 리턴해주는것을 볼수 있다.

 

test['Likes'] - test['Likes_pred'] 를 하게 되면 Series 로 값을 반환하게 되는데 이를 list로 묶어 값을 더한뒤 test 데이터의 길이 만큼 나누어 my_mse에 값을 저장 하였다.

 

RMSE

skrmse = mean_squared_error(y_pred=test['Likes_pred'], y_true = test['Likes']) **0.5
my_rmse = (sum(list((test['Likes'] - test['Likes_pred'])**2))/len(test))**0.5
msle = mean_squared_log_error(y_pred=test['Likes_pred'], y_true = test['Likes'])

skrmse = 72101.06983530962
my_rmse = 72101.06983530961
msle = 4.135035923537339
 

RMSE는 MSE 값에서 루트를 씌어 주면 되는데 위의 MSE 값에 0.5를 제곱하여 RMSE 값을 구할 수 있다.

Sklearn에 mean_squared_log_error 가 있는데 이는 RMSE값을 구하는게 아닌 다른 식을 적용 하는것이라 헷갈리면 안된다.

mean_squared_log_error의 식은 아래와 같고 우리가 아는 RMSE와는 다르다는것을 알 수 있다.

3.3. Metrics and scoring: quantifying the quality of predictions — scikit-learn 1.3.1 documentation

 

 

MAE

from sklearn.metrics import mean_absolute_error

skmae = mean_absolute_error(y_pred=test['Likes_pred'], y_true = test['Likes'])
my_mae = sum(list(abs(test['Likes_pred'] - test['Likes']))) / len(test)

skmae = 25032.962980343327
my_mae = 25032.962980343327
 

Sklearn에 mean_absolute_error를 활용하여 예측값과 실제값을 각각 넣어서 함수를 사용하는 방법과

아래의 abs python 내장 함수를 활용하여 Series 계산 결과를 절대값으로 반환한뒤 값들을 더하여 나누어 줄 수 있다.

 

MSE,RMSE,MAE 관련 공식 및 설명글