• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

로그변환과 평가지표에 대해서

22.07.13 11:32 작성 조회수 687

0

  • 캐글에 있는 빅마트 매출 예측 데이터를 해보고 있는데 타깃값의 histplot을 이용해 분포 형태를 봤는데 왼쪽으로 치우친 경우가 보여서 로그 변환을 해야겠다는 생각이 들었습니다 그런데 다른 분들이 짜신 코드를 보면 타깃값(매출)에 대한 로그변환을 해주지 않았더라구요 그래서 직접 타깃값을 로그변환 해서 예측을 해봤는데 하기 전과 후가 비정상적으로 차이가 났습니다(하기 전의 RMSE가 1000정도 나왔다면 하고 난 후 0.66)
  • 매출 예측 데이터의 경우 타깃값을 로그 변환해주게 되면 값 자체의 단위가 훨씬 작아지기 때문에 오류 값의 범위가 훨씬 줄어들 수 밖에 없어서 신뢰할만한 평가 지표는 못 얻을거 같다는 생각이 들었는데, 책 370 페이지의 경우에는 로그변환을 한 후에도 RMSE가 162정도로 나와서 이 생각도 아니라는 생각이 들었습니다 ㅠㅠ

결론을 말하자면

  1. 빅마트의 매출 예측 데이터의 경우 왜 로그변환 후 비정상적으로 오류 예측값이 줄었는가
  2. 책 370페이지에 경우에는 로그 변환후 타깃값에 단위가 확 줄었는데 어떻게 오류 예측값이 RMSE : 162 ,MAE : 109로 크게 나올수 있는가

스케일링과 평가지표에 대해 제가 몇가지 빠트리고 이해를 한거같은데 아무리 검색해봐도 잘 모르겠습니다 ㅠㅠ 

캐글 빅마트 매출 데이터 : https://www.kaggle.com/datasets/brijbhushannanda1979/bigmart-sales-data?datasetId=9961&sortBy=voteCount

아래 사진은 로그 변환후 histplot과 예측 성능,로그 변환 전 hisplot과 예측 성능입니다

답변 1

답변을 작성해보세요.

0

1. 음, 로그 변환은 오른쪽 Skew일때만 적용해 주셔야 합니다. 왼쪽 skew일때는 일반적으로 적용하지 않습니다.  왼쪽 skew일때는 정규 분포 형태로 만들어지지 않기 때문입니다. 

2. 그리고 예측 오류값이 확 줄어든 이유는 로그변환된 타겟값을 기반으로 학습과 예측을 한 경우에는 반드시 지수변환으로 변경하여 실제 테스트 데이터와 비교하여 RMSE를 적용해야 하는데 이게 적용이 안된것 같습니다.  학습과 예측 데이터를 모두 Log 변환한 데이터인데 검증하는 테스트 데이터도 타겟값을 로그 변환하였다면 당연히 오류값이 확 줄어듭니다. 

예찬님의 프로필

예찬

질문자

2022.07.13

감사합니다 ㅠㅠ! 혹시 2번째 사진이 로그변환 하기 전인데 오른쪽 skew이지 않나요?그리고 왼쪽 Skew일 경우엔 로그 변환 외 다른 스케일링/정규화 작업도 해주면 안되는건가요? 마지막으로 cross_val_score의 경우에는 로그변환 되있는 타깃값을 어떻게 넣어줘야하나요?

왼쪽 Skew일때는 보통 power 변환(제곱으로 곱해줌)을 하는데 큰 효과가 없습니다. 그냥 아무것도 적용하지 않는것이 보통입니다. 

cross_val_score()로는 로그 변환되어 있는 타겟값으로 적용해서 다시 지수변환하기가 쉽지 않습니다. Kfold로 수행하시는게 좋습니다. 

예찬님의 프로필

예찬

질문자

2022.07.14

감사합니다. 질문을 못보신거같아 다시 질문드립니다 !  2번째 사진이 로그변환 하기 전으로 오른쪽 Skew인거 같은데 다른 여러 분들 코드를 봐도 저 레이블 셋을 로그 변환한 코드는 없어서요 그 이유가 궁금합니다

원래 질문 적으신것은 왼쪽 skew라고 적으셨군요. 

오른쪽 skew이면 타겟값의 로그 변환을 적용해 주는 것이 더 좋습니다. 다른 코드를 더 찾아보면 로그 변환한 코드가 있을 것 입니다.  다른 사람이 적은 코드가 없어도 로그 변환을 적용해 주면 최소한 적용 전 보다 성능이 더 나아질 확률이 많습니다. 

예찬님의 프로필

예찬

질문자

2022.07.14

넵 감사합니다 !!