• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    해결됨

이상치 제거 관련 질문

21.03.22 17:50 작성 조회수 380

0

안녕하세요 강사님, 캐글 산탄데르 고객 만족 예측 문제에서 질문이 생겨 여쭙습니다.

이상치를 제거하는 함수를 만들어서 적용해보았는데 7만개 데이터 중 1만8천개 정도만 남고 나머지는 제거되어, 이대로 모델을 학습 및 예측하니 여러 평가지표에서 매우 높게(정확도:0.9922, 정밀도:1, 재현율:0.8682, AUC:0.9833) 측정이 됐는데 과적합이라고 봐야할까요? 이상치를 제거할 때, 어느정도까지 데이터를 제거하면 좋을까요?

그리고 lightgbm 이나 xgboost의 feature_importances_ 가 높은 피처를 기준으로 이상치를 제거해보기도 했는데 이 방법도 괜찮을까요? 신용카드 사기 검출 예측 파트에서는 상관관계에 따라 피처를 골라 이상치를 제거했는데 중요도가 높은 피처를 기준으로 이상치를 제거해도 효과가 있는지 궁금합니다! 

답변 3

·

답변을 작성해보세요.

1

안녕하십니까,

음, 얼마나 이상치를 제거 하셨길래.. 굉장히 많이 없애셨군요.

산탄데르 데이터에 이렇게나 많은 이상치가 있나요? 어떤 기준으로 이상치를 제거하신 건지요?

그리고, 여러 평가지표에서 매우 높게(정확도:0.9922, 정밀도:1, 재현율:0.8682, AUC:0.9833) 측정이 됐다니, 좀 의아하긴 합니다.

이 측정값이 학습 데이터로 하신건가요? 아님 별도의 검증 데이터로 하신 건가요?

이상치를 어느 정도까지라고 정해진건 없습니다만, 5만 5천건을 제거할 정도로 전체 학습 데이터의 상당한 수준까지 제거할 필요는 없습니다. 너무 많이 없애신것 같습니다.

2. 그리고 lightgbm 이나 xgboost의 feature_importances_ 가 높은 피처를 기준으로 이상치를 제거해보기도 했는데 이 방법도 괜찮을까요?

=> 네, 적용해 볼만한 방법인거 같습니다.

감사합니다.

0

너무 많은 량을 지우셨군요.

이상치라는게 가능하다면 최소로 삭제하는게 좋습니다.

왜냐하면 이상치값이 테스트 데이터로 들어올 수도 있기 때문입니다. 보통은 이상치라는게 일반적인 테스트 기준을 벗어나는 데이터로 한정해야 합니다.

이미 특정 기준으로 데이터를 다 삭제한 상태에서, 다시 학습과 테스트 데이터로 나눈 후에 데이터를 성능평가 했기 때문에 좋은 성능이 나오는 것이고, 이는 현실의 테스트 데이터를 반영한것은 아닙니다. 

이렇게 많은 데이터를 삭제해 버리면, 테스트 데이터에서 이 기준을 넘어서는 데이터가 들어오면 모델 성능이 떨어질수 밖에 없습니다.

1.5*IQR 이라는 것이 이상치의 기준중에 하나일뿐, 이게 절대적인 기준이 되지 않을 수도 있습니다. 현실적으로 들어올수 없거나, 아주 흔하지 않은 경우들만 이상치로 정해야 합니다.

감사합니다.

0

TARGET이 0인 데이터 중에서 각 열의 1.5*IQR 바깥에 있는 인덱스와 TARGET이 1인 데이터 중에서 각 열의 1.5*IQR 바깥에 있는 인덱스를 모아서 중복되는 부분은 합집합 형태로 제거했더니 그렇게 많은 데이터가 사라진 것 같습니다..! 모든 열이 중요한 건 아니기에 이런 방식은 지양해야 할까요? 이상치 제거보단 최빈값으로 대체해주는 방법이 더 나을지, 1.5보다 큰 수*IQR로 이상치를 제거해봐야 할지 모르겠습니다..

생각해보니 18000 데이터 중, train_test_split으로 약 15000개를 학습으로 쓰고 3000개 정도를 테스트 데이터로 쓰다보니 워낙 적은 데이터라 평가지표가 높게 나온 듯 합니다!