• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    해결됨

<추가질문> RMSE vs. RMSLE vs. MAE

22.02.05 01:32 작성 조회수 221

0

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

 

첫번째 재질문

전 범위의 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를 추가적으로 생성함으로써 해결하는 것인지 궁금합니다.

 

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

답변 1

답변을 작성해보세요.

0

첫번째 재질문

전 범위의 y 값에 걸쳐서 비슷한 오차(|actual - pred|)가 나타나면 RMSLE와 RMSE의 값은 비슷하게 떨어진다. 모델의 RMSE와 RMSLE가 둘 다 같은 값 (e.g. RMSE=RMSLE=0.4)을 가질 경우, "모델이 크게 잘못 예측한 것이 없다"라고 해석하면 되는 걸까요? 반대로 RMSE > RMSLE인 경우, RMSE는 크게 잘못 예측한 건에 대해 Penality를 주기 때문에 "모델이 크게 잘못한 경우가 있다"라고 해석을 하면 될까요?

=> RMSE와 RMSLE가 같은 값을 가질 경우는 지극히 적습니다. RMSE가 RMSLE보다 상당히 크게 됩니다. 물론 실제 Y값이 소수점 이하이고, 예측도 소수점 이하로 했을 때 RMSE가 RMSLE 보다 작을 확률도 있지만, RMSLE는 본질적으로 그런 목표를 가지고 만들어진게 아니라 RMSE에서 크게 잘못 예측한 건에 대한 Penalty부분을 완화시켜서 평가하고자 하는 메트릭입니다. 거의 대부분의 경우에 RMSE가 RMSLE보다 매우 큽니다. 

모델이 특정 성능 평가지표에 좋다고 반드시 좋은 모델이 아닙니다. RMSE도 좋고, RMSLE도 좋으면 좋은 모델입니다. 물론 Kaggle과 같은 경연대회라면 약간의 차이라도 매우 중요하기 때문에 성능 평가 지표에 조금이라도 최적화하는게 필요하지만, 일반적인 모델에서 전반적인 성능 지표가 좋은 경우를 더 선호합니다.

 

두번째 재질문

 

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

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

=> Y값의 분포에 따라서 동적으로 서로 배타적인 두개의 모델을 만들 수는 없습니다. 그리고 왜, LGBM 같은 leaf-wise 기법을 통해 Y의 값이 큰 경우 leaf node를 더 만듦으로써 해결이 가능하다고 생각하셨는지 잘 모르겠습니다. Y값이 불균일하게 되어 있는 경우라면 Log 변환으로 대부분의 경우 충분하게 보정되어 모델 성능 향상에 도움이 될 수 있습니다. 

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

=> 댓글로 재질문을 해주셔도 제가 다 답변드리지만, 근래 답변이 많아서 댓글로 재질문을 해주시면 제가 인지하지 못하고 넘어가는 경우가 있었습니다. 질문을 따로 만드는게 편하시게 그렇게 하셔도 무방합니다. 제가 인지하기는 더 쉽습니다.  

감사합니다.