분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
삭제된 댓글입니다
안녕하세요
해당 부분은 data leakage가 맞습니다.
테스트 데이터의 통계도 사용하면 안된다고 규정에 나와 있으며
공식적으로 .quantile 함수를 test 데이터에 적용하면 안된다고 문의 글에 적혀져 있습니다.
quantile 함수를 test에 적용시킬 경우 test 데이터의 분포를 사용해 이상치를 제거하기 때문에 문제가 생기게 되는 것입니다.
간단하게 test 데이터가 단 한개만 주어지게 된다면, 이 전처리 방식이 정상적으로 작동할까요?
결국 test 데이터 분포에 의존적인 방식을 사용했기 때문에 input test data에 대해서 전처리 방식이 항상 달라지게 되어 data leakage 부분을 지키지 못한 코드입니다.
test 데이터에 대한 정보가 훈련을 할 때에 영향을 끼칠 때만 data leakage라고 생각하여 실수를 한 것 같습니다.
좋은 지적 감사드립니다.
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io | 전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved
concat_features = test
mask = concat_features.introelapse > (concat_features.introelapse.quantile(0.75) + 1.5 * (concat_features.introelapse.quantile(0.75) - concat_features.introelapse.quantile(0.25)))
concat_features.introelapse[mask] = concat_features.introelapse.quantile(0.75)
mask = concat_features.testelapse > (concat_features.testelapse.quantile(0.75) + 1.5 * (concat_features.testelapse.quantile(0.75) - concat_features.testelapse.quantile(0.25)))
concat_features.testelapse[mask] = concat_features.testelapse.quantile(0.75)
mask = concat_features.surveyelapse > (concat_features.surveyelapse.quantile(0.75) + 1.5 * (concat_features.surveyelapse.quantile(0.75) - concat_features.surveyelapse.quantile(0.25)))
concat_features.surveyelapse[mask] = concat_features.surveyelapse.quantile(0.75)
test = concat_features
위 부분에서 test 데이터의 이상치를 test 데이터의 통계(concat_features.introelapse.quantile 등)을 활용해 변환하는 것은 data leakage에 해당하는 것 같습니다.