본문 바로가기

BLOG/머신러닝

[머신러닝] MSE, MAE 뜻 & 구현 코드

1. MSE(Mean Squared Error)

MSE란 Mean Squared Error의 약자로, 말 그대로 예측 값과 실제 값의 차이에 대한 제곱을 평균한 값을 말합니다.

MSE의 경우 오차가 작으면 성능이 좋을 수 있지만, 과대적합이 될 수도 있습니다.

한편, MSE는 오차에 대해서 예측한 값이 실제 값보다 큰지, 작은지를 알 수 없다는 특징을 갖고 있습니다.

 

 

- MSE : 코드로 구현하기

사이킷런(Scikit-learn) 패키지에서는 MSE를 구하는 라이브러리를 제공하는데요,

만약 실제 값 'true_y'와 예측한 값 'pred_y'의 MSE 값을 구하고 싶다면 다음과 같이 코드를 작성하면 됩니다.

 

from sklearn.metrics import mean_squared_error #필요한 라이브러리 불러오기

mse1 = mean_squared_error(true_y, pred_y) #MSE 구하기

print('mse = {:.3f}'.format(mse1)) #MSE 출력

 

이때 true_y와 pred_y의 형태는 array 형식이어야 합니다.

 

 

2. MAE(Mean Absolute Error)

반면, MAE란 MEan Absolute Error의 약자로, 예측값과 실제값의 차이에 대한 절대값에 대해 평균을 낸 값을 말합니다.

즉, 실제 측정된 값과 예측한 값 사이의 차이를 절대값으로 변환해 평균을 계산한 것을 말하는데요, 값이 작을수록 좋은 성능을 내지만, 해당 모델이 과대적합 될 수 있다는 특징을 갖고 있습니다.

 

 

- MAE : 코드로 구현하기

마찬가지로 사이킷런 라이브러리에서 MAE를 구하는 함수를 제공하는데요, 실제 값 'true_y'와 예측한 값 'pred_y'의 MSE 값을 구하고 싶다면 다음과 같이 코드를 작성하면 됩니다.

 

from sklearn.metrics import mean_absolute_error

mae1 = mean_absolute_error(true_y, pred_y)

print('mae = {:.3f}'.format(mae1))

 

 

 

3. MSE, MAE 적용해보기

한번, 임의로 true_y, pred_y의 값을 만든 뒤, 위 코드를 사용하여 MSE와 MAE를 사용해보겠습니다.

 

from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error
import numpy as np

true_y = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
pred_y = np.array([1, 3, 2, 4.5, 4.6, 6.2, 8, 8, 9.5, 10])

mse1 = mean_squared_error(true_y, pred_y)
print('mse = {:.3f}'.format(mse1))

mae1 = mean_absolute_error(true_y, pred_y)
print('mae = {:.3f}'.format(mae1))


#output :
mse = 0.370
mae = 0.460

 

임의로 값을 만든 뒤, mse와 mae 값을 구한 결과, 잘 계산되었음을 확인할 수 있습니다.