[머신러닝] 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 값을 구한 결과, 잘 계산되었음을 확인할 수 있습니다.