RL Researcher

평균 제곱근 오차(RMSE(Root Mean Squared Error)) 본문

Machine-Learning/Algorithm

평균 제곱근 오차(RMSE(Root Mean Squared Error))

Lass_os 2020. 12. 25. 01:44

1. 평균 제곱근 오차(Root Mean Squared error)


$$RMSE = \sqrt{RMSE} = \sqrt{\frac{(y_{i}-t_{i})^{2}}{n}}$$

RMSE란 정밀도를 확인하기 위한 수치 중 하나입니다. 컴퓨터(Machine)가 추정한 값 또는 모델이 예측한 값과 실제 정답의 값(Label)의 차이를 다룰 때 흔히 사용합니다. 추정값과 실제값의 차이를 잔차(residual)라고 합니다. 평균 제곱은 오차(RMSE)는 잔차들을 하나의 측도로 종합할 때 사용합니다.(※ RMSE는 회귀 모델일 때 흔히 사용합니다.)

다음은 평균 제곱근 오차(RMSE)의 코드를 python에서 구현해 보겠습니다. MSE의 예제를 이용해서 구현해보도록하겠습니다.

# Module import
import numpy as np
from sklearn.metrics import mean_squared_error

다행히 Scikit-Learn API에서 MSE에 대한 모듈을 지원하고 있습니다.

# 2일 확률이 가장 높다고 추정함(0.6)
y = np.array([0.1, 0.05, 0.6, 0.0, 0.05, 0.1, 0.0, 0.1, 0.0, 0.0])

# label은 2
t = np.array([0, 0, 1, 0, 0, 0, 0, 0, 0, 0])

y값은 예측값이며 softmax함수로 구현되어 있으며, t값은 실제 결과값입니다.

def MSE(y,t):
    return mean_squared_error(y,t)

MSE값도 확인해보기 위해 MSE함수도 구현하였습니다.

def RMSE(y, t):
    return np.sqrt(mean_squared_error(y,t):

RMSE도 구현하였습니다. 이제부터는 구현한 함수를 뽑아내겠습니다.

MSE(y,t)

========================================================================

<output>
0.11950000000000001
RMSE(y,t)

========================================================================

<output>
0.34568772034887213

결과값을 확인해본 결과 MSE에 Root값을 씌우게 되면 RMSE값이 나오게 된다는 것을 확인할 수 있습니다.

Comments