본문 바로가기

프로그래밍/AI:ML:DL

RMSLE 의 의미는 무엇일까?

반응형

아래내용은 개인적으로 의미를 생각해 본 것입니다. (정식으로 통계학 공부하면서 배운 내용이 아니에요.) 개념상 틀린 부분, 부정확한 부분이 있다면, 지적바랍니다.

RMSLE 는 Root Mean Square Logarithmic Error 이고, 그 식은 다음과 같다.

$ \sqrt{ \frac{1}{n} \sum_{i=1}^{n}{ (\log( p_i + 1) - \log(a_i + 1))^2} } $
$ = \sqrt{ \frac{1}{n} \sum_{i=1}^{n}{ (\log \frac {p_i + 1} {a_i + 1} )^2} } $

이 값의 의미는 무엇일까?

이 의미를 이해하려면, 우선 RMSE, Root Mean Square Error 를 이해할 필요가 있다.

RMSE 는 예측값과 실제값의 차(더하기/빼기) 각각을 제곱(square)한 값을 평균(mean)을 내서, 루트(root)를 씌운 것이다. 제곱하고 다시 루트를 씌웠으니, 그 값의 단위는 예측값과 실제값의 차이의 단위와 같다. 예측하는 대상이 "미터" 단위의 길이라면, RMSE 값의 단위도 "미터" 일 것이다.

자, RMSLE 의 식을 살펴보면, 어떤 양( log(XX) )의 각각을 제곱(square)한 값을 평균(mean)을 내서, 루트(root)를 씌운다. 이 값의 단위는 log(XX)와 같을 것이다. 그럼 각각의 log(XX) 는 어떤 의미를 갖는지만 파악해 보자.

log 를 씌운 건 어렵다. (구체적 단위를 대입해서 생각하더라도) 그럼, log 는 차치하고, 로그 안의 XX 가 무엇인지 보자. XX 는 (두번째 식을 보자) (pi+1)/(ai+1) 이다. 여기서 분자와 분모의 +1을 우선 무시하고 보면, pi/ai 다. 이건 이해할 수 있다. 실제값과예측값의 비율이다. 예측을 1500대라고 했는데, 실제는 1000대였다면, 1.5인 값이다. 1.5"배"라고 부를 수 있는 값이다.

그럼 이제 알았다.

RMSLE 는 어떤 양의 log 값이다. 생각하기 어려운 log 를 없애려면, 역함수인 exp 를 취하면 된다. exp(RMSLE) 는 앞 문단에서 설명한 XX와 같은 단위이다. 다시 말해보자, exp(RMSLE) 는 실제값과예측값의 비율이다.

exp(RMSLE) 는 예측과실제값의 평균적인(!?) 비율을 나타낸다. (아주 정확한 진술이 아니니까 아래 설명을 끝까지 읽어라.)

  • RMSLE 가 0이라면 (가능하냐고? ai와 pi가 모두 일치하면 이렇게 된다.), exp(RMSLE) 는 1이 되고, 예측과실제값의 평균비율을 1이다. 설명과 부합한다.
  • 모든 예측값이 실제값의 2배였다고 해 보면, (그리고, 실제값들이 꽤 큰 양수였다고 하면), RMSLE = sqrt( n x log(2)^2 / n ) = sqrt(log(2)^2) = log(2) 가 되고, exp(RMSLE) = exp(log(2)) = 2 가 된다. 예측과실제값의 평균비율이 두배라고 할 수 있겠다.
  • 그럼 모든 예측값이 실제값의 반이었다고 하면 어떨까? exp(RMSLE) = 1/2 이 될까? 아니다, 이 부분이 조금 트리키한데, 식에서 보면, log(실측예측비) 을 제곱하는 부분이 있다. log 값이 음수이면, 양수로 만들어 버린다. 즉, 실측예측비와 그 역수인 예측실측비 중에서, 1/2 같은 1보다 작은 값은 역수로 계산된다. 즉, log 안의 값들은 큰값/작은값 으로만 따진다. 이건, RMSE 에서, 빼기값에 절대값을 씌워서 "차"만 가지고 생각하는 것과 마찬가지이다. 결국, 이 경우에 exp(RMSLE) = 2 가 된다. 예측과 실제값의 평균비율이 두배다.

이를 종합해 보면, RMSE 에서는 덧셈적 차이(즉, 서로 빼고 음수는 양수로 만든다)들을 수치화한 것이고, RMSLE 에서는 곱셈적 차이(즉, 서로 나눠서 1보다작으면 역수로 1보다 크게 만든다)들을 수치화해 보자고 개념을 확장해 본 것으로 해석해 볼 수 있을 것 같다. 왜 복잡해 보이는 log 가 들어갔는지에 대한 이유는 log는 -만 붙이면, 그 안의 값이 역수로 만들어진다. 그래서, 곱하기나누기를 간단히 더하기빼기 공간으로 변환해 올 수 있다. 이후에는 익숙한 테크닉(제곱평균루트)을 다시 사용한 것 뿐이다.

728x90