Data Leakage
Data Leakage
Data Leakage
- 학습 시 훈련 데이터셋과 학습 데이터셋을 나누는 과정에서, 정보의 누수가 발생하는 문제
- 원래 Test 데이터에서는 알면 안 되는 정답을, 파생 변수를 통해 유추할 수 있기 때문에 정보의
누수
라고 표현 - 추론 때는 해당 정보가 없어서 사용할 수 없고, 성능이 급격하게 떨어질 수 있음
- (책의 표현이 불친절해서 사견을 많이 붙였는데, 틀린 부분이 존재할 수 있습니다)
예시
- 병원마다 다른
글꼴
을 사용하는데, 글꼴
이 feature로 사용된 경우 - 환자마다 사진을 찍는 방법이 다른데, 누워서 찍은 환자가 중증일 가능성이 높음
- 이렇게 되면 글꼴 정보, 자세 정보가 없는 새로운 데이터에 대해 추론이 제대로 수행되지 않음
원인
- 주로 훈련 / 학습 데이터를 잘못 분리하는 경우 발생
- 시간 상관관계를 무시하고 무작위로 데이터를 분할한 경우
- 데이터를 분할 하기 전에 스케일링한 경우
- 훈련 데이터가 아닌 테스터 데이터를 이용해 결측값을 채운 경우
- 분할 전 데이터 중복을 제대로 처리하지 않아 train과 test 데이터에 같은 데이터가 있는 경우
- 같은 그룹에 있어야 하는 데이터가 train / test에 나뉘어져 들어가는 경우
- 데이터가 생성되는 과정에서 누수가 생긴 경우: 이 경우는 파악이 굉장히 힘듦
누수 검출 및 대응
- 찾고자 하는 label 에 대한 feature와의 상관 관계를 파악해야 함
- 만약 상관관계가 비정상적으로 높다면, 조사해 볼 필요가 있음
- 테스트 분할을 함부로 사용하면 안됨
- 특히 테스트 분할 방법을 hyperparameter tuning으로 사용하는 끔찍한 방법은 절대 금지
References
- 칩 후옌 - 머신 러닝 시스템 설계
기타
- 이 내용은 아직 부족하기 때문에, 다시 한 번 가다듬어서 다뤄 보겠습니다