타겟값의 로그변환에 대해서
781
18 asked
선생님 안녕하세요
머신러닝강의(2개)와 컴터비젼강의를 듣고 있는 회사원입니다 ㅎ
이번에 머신러닝강의중 타겟값(5개, 정수형태)의 로그변환에 대해서 조언을 받고싶어서 질문을 드립니다 ㅎ
바쁘시겟지만 조언 좀 부탁드리겟습니다
선생님 강의내용대로 예를들어, 아래와같은 5개타겟값(양수값)이 있을때, 이를 로그변환한 후 이값을 머신러닝으로 예측해서
로그값끼리 단순오차를 비교하면 평균오차2%대, 최대오차 4%대로 아주 좋은 결과가 나옵니다 ㅎ
근데. 로그를 벗기고 실제값(양수값)과 예측값(양수값)로 비교하면 평균오차는 4%대, 최대오차는 13%대로 최대오차에서 로그값과 비교하면 3배이상이 차이가 납니다ㅎ
여기서 조언을 듣고싶은것이, 실제값(양수형태)과 예측값(양수형태)의 비교에서 최대오차 혹은 평균오차를 더 작게 할수 잇는 방법이 있는지요?
예를들어, 최대오차가 크게 발생하는 실제값을 알아보고, 그값의 예측값에 가중치를 부여한다던지....
혹시 가능하시다면 코드도 넣어서 답변 부탁드리겠습니다 ㅎ
바쁘시겟지만 부탁드리겠습니다 ㅎ
-----------------------------------------------------------
##<참고>
예를들어, 타겟값[1, 10, 100, 10000, 100000]일때
##<로그값끼리 5개값의 단순오차비교하면> abs(log(y)-log(y_pred))/log(y)*100
5개평균오차 : 2%대
5개중 최대오차 : 4%대
##<로그를 벗기고, 실제값과 예측값비교하면> abs(y-y_pred))/y*100
5개평균오차 ; 4%대
5개중 최대오차 ; 13%대
바쁘시겟지만, 시간나실때 답변 부탁드리겠습니다 ㅎ
Answer 1
0
안녕하십니까,
보통 타겟값에 로그 변환을 취하는 이유는 타겟값의 분포가 롱테일(long tail)형태로 불균일할 때 많이 사용합니다. 즉 회귀예측에서 타겟값이 평균값보다 아주 높은 값들이 일정 수준 존재할 때 이들에 대한 영향도를 모델에서 줄이기 위해 사용합니다.
따라서 학습 모델을 로그 변환된 타겟값으로 학습을 시키고, 이렇게 학습된 모델을 기반으로 예측을 한 다음에 (이때 예측된 값은 로그가 적용된 값) 이 예측값을 지수변환하여 최종 예측값을 얻는 방식입니다.
질문하신...
로그값끼리 단순오차를 비교하면 평균오차2%대, 최대오차 4%대로 아주 좋은 결과가 나옵니다 ㅎ
=> 로그 변환된 타겟값은 보다 정규 분포에 가까운 형태가 되므로 이건 당연히 오차의 평균과 분산이 좋을 수 밖에 없기에 이 결과로 기준으로 해서 비교 하시면 안됩니다.
로그 변환을 하여 하여 모델을 학습 시키는 이유는 학습 모델의 예측값이 좀더 표준 정규 분포 형태에 가깝게 모델을 유도하는 방식이지만 그렇다고 예측된 값이 로그 변환된 값 자체 정도의 정규 분포 형태를 기대하기는 어렵습니다. 때문에 최대 오차등을 더 줄이는 방식은 앞에도 말씀드린 대로 로그 변환하여 학습 모델을 만든후 예측값을 다시 지수 변환하는 방식과 같은 방법을 적용하는 외에는 별다른 방식을 추천해 드리기는 어려울 것 같습니다.
다만 예측 오류가 너무 크게 나는 데이터의 경우, 학습 데이터 또는 예측 데이터가 현실에서는 잘 발생하지 않는 불필요한 데이터가 섞여있는지등을 판단해 보시거나..(이 경우 해당 데이터는 학습이나 예측에서 제외를 한다거나)
제일 좋은 방식은 좀 더 다양한 피처 엔지니어링 방식을 적용해 보는것이 좋을 것 같습니다. 다양한 피처 엔지니어링은 본 강의에서 많은 시간을 들여서 설명 드리고 있으니 강의를 들으시면 적절한 방식을 적용해 보실 수 있을 것입니다.
감사합니다.
sql사용
0
46
2
좋은 강의 감사드립니다.
0
73
2
8분 40초경 LGBClassifier에서 설정해주신 파라미터들 관련 질문
0
246
2
사용 가능한 RAM을 모두 사용한 후 세션이 다운되었습니다
0
601
1
안녕하세요 선생님
0
228
1
권철민교수님 진심으로 감사드립니다.
0
319
1
안녕하세요 선생님
0
351
1
# credit_card_balance 데이터셋 피쳐엔지니어링
0
268
1
초거대 데이터셋을 Submission하려면?
0
190
1
Library 관련 질문
0
351
3
최적화 함수 에러
0
589
4
LightGBM Iteration관련
0
423
2
안녕하세요 교수님 vm 관련해서 질문이 있습니다.
0
204
1
코드를 실행했는데 오류가 발생합니다
0
1981
2
bayes_opt 회귀 모델에 적용하려면..
0
267
1
아나콘다 환경설정
0
460
1
깃허브 주소 문의드립니다.
0
360
1
손실함수에 대한 질문
0
344
1
card_bal 데이터셋 시각화 관련 질문입니다
0
231
1
LGBM null값 처리에 관해 질문있습니다
0
540
1
컬럼 관련 질문
0
281
1
히스토그램 x 값
0
365
1
n_iter 횟수 넘음 질문
0
492
2
학습데이터 테스트데이터 분리
0
324
1

