• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

RMSE vs. RMSLE vs. MAE

22.02.03 12:06 작성 조회수 358

0

강사님, 명절 잘 보내셨길 바랍니다 :)
 
이전 수강생 (휴식중인 전복님)의 RMSE와 RMSLE에 대한 차이점에 대한 질문에 답변을 보고 제가 이해를 한게 맞는지 확인하고 추가적인 질문을 드리려고 합니다.
 
우선 제가 이해한 것들인데 틀리다면 정정 부탁드립니다.
  1. 전 범위의 y 값에 걸쳐서 비슷한 오차(|actual - pred|)가 나타나면 RMSLE와 RMSE의 값은 비슷하게 떨어진다.
  2. 하지만 Y의 범위가 1~1000이라고 할 때, 1~10 사이에서는 오류가 적지만 900~1000 사이에서 오류에 값이 커질 경우, RMSLE는 Y의 크기에 따라 크게 바뀌지 않지만, RMSE는 크게 좌우된다.

이를 바탕으로 제가 궁금한 점은 아래와 같습니다.

  1. 위의 2)와 같은 경우, RMSE를 모델의 eval_metric으로 쓰는게 business관점에서 더 타당할까요? 만약 주택가격과 같은 경우, 아무리 낮은 주택가격을 잘 맞춘다고 하더라도 비싼 주택가격을 한 번 잘못 예측했을 때 cost가 너무 커지기 때문에 RMSE를 eval_metric으로 선택하여 RMSE를 줄이는 것을 최우선으로 해야할까요? 아니면 다른 더 용이한 metric이 있을까요?
  2. 위의 2)와 같은 경우, Y의 값이 작은 경우에는 기존 모델을 통해 예측하고, Y의 값이 큰 경우 (기존 모델이 잘 예측하지 못하는 값들)에 대해서는 새로운 모델을 만드는 방법도 가능한가요? 아니면 새로운 모델을 만들기보다 LGBM 같은 leaf-wise 기법을 통해 Y의 값이 큰 경우 leaf node를 더 만듦으로써 해결이 가능하다고 생각하면 될까요?
  3. "RMSE와 RMSLE의 경우 직관적인 해석이 어려운 반면 MAE는 전체오차의 평균을 Y (타겟변수)와 같은 unit으로 보여주기 때문에 직관적인 이해가 가능하다"라고 이해하고 있습니다. 주택가격 예측의 경우, MAE가 400이 나왔다면, "우리 모델의 전체 오류의 평균은 $400 이다. 즉 우리 모델이 새로운 주택들(10000만개)의 가격을 예측할 경우 평균적으로 $400의 오차가 있다."라고 해석하면 될까요?
  4. 모델을 eval_metric=RMSE로 만들었는데 다른 metric (RMSLE, MAE) 등으로 모델의 퍼포먼스를 비교해도 되나요?

 

항상 감사합니다! 올해도 건강하세요~!

 

답변 2

·

답변을 작성해보세요.

0

oleole님의 프로필

oleole

질문자

2022.02.04

강사님, 답변 감사드리고 이해하지 못하신 부분에 대해 다시 설명드립니다.

 

첫번째 재질문

전 범위의 y 값에 걸쳐서 비슷한 오차(|actual - pred|)가 나타나면 RMSLE와 RMSE의 값은 비슷하게 떨어진다

=> 어떤 질문 내용인지는 대강 알겠는데, 비슷한 오차와 RMSLE와 RMSE값이 비슷하게 떨어진다는 것이 잘 매칭이 안되는군요. 다시한번 정의 부탁드립니다. 

=> => 모델의 RMSE와 RMSLE가 둘 다 같은 값 (e.g. RMSE=RMSLE=0.4)을 가질 경우, "모델이 크게 잘못 예측한 것이 없다"라고 해석하면 되는 걸까요? 반대로 RMSE > RMSLE인 경우, RMSE는 크게 잘못 예측한 건에 대해 Penality를 주기 때문에 "모델이 크게 잘못한 경우가 있다"라고 해석을 하면 될까요?

 

두번째 재질문

2. 위의 2)와 같은 경우, Y의 값이 작은 경우에는 기존 모델을 통해 예측하고, Y의 값이 큰 경우 (기존 모델이 잘 예측하지 못하는 값들)에 대해서는 새로운 모델을 만드는 방법도 가능한가요? 아니면 새로운 모델을 만들기보다 LGBM 같은 leaf-wise 기법을 통해 Y의 값이 큰 경우 leaf node를 더 만듦으로써 해결이 가능하다고 생각하면 될까요?

=> 질문을 잘 이해못했습니다. 하나의 데이터를 기반으로 Y값에 따라서 동적으로 모델을 두개를 만든다는 것인지요? 새로운 모델을 만든다는게 어떤 의미인지요? 좀 더 자세히 말씀해 주셨으면 합니다.

=>=>  하나의 데이터를 기반으로 Y값에 따라서 동적으로 모델을 두개 만드는 것에 대한 의미의 질문이었습니다. Y값이 낮은 경우 오차가 적은데 Y값이 큰 경우 오차가 클 경우, 이를 분리해서 Y가 낮은 경우에는 A모델을 Y가 큰 경우에는 B모델을 만들어도 되는지에 대한 궁금증이었습니다. 이러한 문제를 leaf-wise 형태의 LGBM은 B모델을 따로 만들 필요없이 leaf를 추가적으로 생성함으로써 해결하는 것인지 궁금합니다.

 

번외로 대댓글로 재질문을 드릴 경우, 강사님께서 미처 확인을 하기 어려우시다면 질문을 따로 만드는 게 혹시 답변하시는데 더 편하신지 알려주시면 감사하겠습니다 :)

0

안녕하십니까, 

아래와 같이 답변 드립니다. 

전 범위의 y 값에 걸쳐서 비슷한 오차(|actual - pred|)가 나타나면 RMSLE와 RMSE의 값은 비슷하게 떨어진다

=> 어떤 질문 내용인지는 대강 알겠는데, 비슷한 오차와 RMSLE와 RMSE값이 비슷하게 떨어진다는 것이 잘 매칭이 안되는군요. 다시한번 정의 부탁드립니다. 

하지만 Y의 범위가 1~1000이라고 할 때, 1~10 사이에서는 오류가 적지만 900~1000 사이에서 오류에 값이 커질 경우, RMSLE는 Y의 크기에 따라 크게 바뀌지 않지만, RMSE는 크게 좌우된다

=> 네 비교적 맞습니다. 다만 Y의 크기라기 보다는 오류값의 크기에 따라 달라집니다(아마도 적는 과정에서 생각은 그렇게 하시고 적으신것 같습니다만 ^^). 물론 Y의 크기가 크면 예측값의 크기도 크기 때문에 오류값이 커질 가능성이 높습니다.  요약하면  RMSLE는  Y의 크기가 아니라  오류값의 크기에 따라 RMSE보다는 상대적으로 변동성이 작습니다. 

 

그리고 다음 질문에도 아래와 같이 답변드립니다. 

이를 바탕으로 제가 궁금한 점은 아래와 같습니다.

1. 위의 2)와 같은 경우, RMSE를 모델의 eval_metric으로 쓰는게 business관점에서 더 타당할까요? 만약 주택가격과 같은 경우, 아무리 낮은 주택가격을 잘 맞춘다고 하더라도 비싼 주택가격을 한 번 잘못 예측했을 때 cost가 너무 커지기 때문에 RMSE를 eval_metric으로 선택하여 RMSE를 줄이는 것을 최우선으로 해야할까요? 아니면 다른 더 용이한 metric이 있을까요?

=> RMSE는 크게 잘못 예측한 건이 있으면 거기에 Penalty를 주겠다는 것입니다.  그리고 굳이 한개의 성능 메트릭으로 모델 성능을 평가할 필요는 없습니다. 다양한 성능 메트릭을 적용해서 다양하게 성능을 평가하면 됩니다. 크게 잘못 예측한 건에 대해서 더 Penalty를 주는 모델을 선호하는 RMSE를 개선하는 것이고,  제곱을 하지 않고 평균 오차를 개선하고자 하면 MAE를 적용하면 됩니다.  잘못 예측했을 때 너무 큰 Penalty를 적용하지 않으려면 log 변환이 적용된 RMSLE를 적용하면 됩니다.  업무에 따라서 좀 더 맞는 평가지표를 선택하거나 모든 평가 지표를 다 만족할 수 있는 모델을 선택해도 됩니다. 

2. 위의 2)와 같은 경우, Y의 값이 작은 경우에는 기존 모델을 통해 예측하고, Y의 값이 큰 경우 (기존 모델이 잘 예측하지 못하는 값들)에 대해서는 새로운 모델을 만드는 방법도 가능한가요? 아니면 새로운 모델을 만들기보다 LGBM 같은 leaf-wise 기법을 통해 Y의 값이 큰 경우 leaf node를 더 만듦으로써 해결이 가능하다고 생각하면 될까요?

=> 질문을 잘 이해못했습니다. 하나의 데이터를 기반으로 Y값에 따라서 동적으로 모델을 두개를 만든다는 것인지요? 새로운 모델을 만든다는게 어떤 의미인지요? 좀 더 자세히 말씀해 주셨으면 합니다. 

3. "RMSE와 RMSLE의 경우 직관적인 해석이 어려운 반면 MAE는 전체오차의 평균을 Y (타겟변수)와 같은 unit으로 보여주기 때문에 직관적인 이해가 가능하다"라고 이해하고 있습니다. 주택가격 예측의 경우, MAE가 400이 나왔다면, "우리 모델의 전체 오류의 평균은 $400 이다. 즉 우리 모델이 새로운 주택들(10000만개)의 가격을 예측할 경우 평균적으로 $400의 오차가 있다."라고 해석하면 될까요?

=> 네 맞습니다. 

4. 모델을 eval_metric=RMSE로 만들었는데 다른 metric (RMSLE, MAE) 등으로 모델의 퍼포먼스를 비교해도 되나요?

=> 네 맞습니다.