Data Distribution Shift
Data Distribution Shift
Data Distribution Shift
- 지도 학습에서 모델이 동작하는 데이터가 시간에 따라 변하는 현상
- 데이터 분포가 달라지므로, 모델의 성능이 갈수록 감소
- 다음과 같은 유형 존재
공변량 시프트 (Covariate Shift)
- 입력의 분포가 변함
- 그러나 같은 입력에 대한 출력의 분포는 동일
- 데이터 선택 프로세스에 편향이 생기는 경우 이럴 수 있음
- 예를 들어 검사를 받으러 오는 사람들은 대부분 아픈 사람임
- 이 데이터로 훈련한 결과를 모든 사람에 대해 적용하면 안됨
레이블 시프트 (Label Shift)
- 출력의 분포가 변함
- 출력에 대한 입력의 분포는 동일
- 효과적인 치료약이 나와서, 전체적인 환자의 확률이 감소했다고 가정
- 이 경우 출력 분포만 변한거지, 입력 데이터의 분포가 변한 것은 아님
개념 드리프트 (Concept Drift)
- 입력의 분포는 동일
- 그러나 입력에 대한 출력의 분포는 변함
- 간단한 예로 코로나 전과 후의 비행기 표 가격이 될 수 있음
- 계절성을 띄는 데이터에서도 해당이 됨
기타 데이터 분포 시프트
- 피처가 제거되거나 피처의 범위가 변화하는 경우
- 레이블의 스키마 (ex: 문자열 값에 해당하는 정수값 등) 자체가 변화하는 경우
감지 방법
- 모델의 정확도 관련 지표(정확도, F1, 재현율 등)를 확인해서 데이터 분포 시프트를 감지 가능
- 두 분포가 다름을 확인하기 위해서 통계적 방법을 사용할 수도 있음
- 시간에 따라 분포가 달라졌는지 확인하기 위해, 시간 척도 윈도우를 사용 가능
- 윈도우를 너무 작게 잡으면, 시프트가 일어나지 않아도 시프트가 일어났다고 착각 가능
해결 방법
- 대부분의 기업은 데이터 시프트 정도와 상관 없이 모델을 주기적으로 재훈련
- 모델을 처음부터 다 재훈련하기는 힘드므로, fine-tuning을 수행할 수도 있음
- 당연히 시스템 자체를 시프트에 강건하게 설계하는 방법도 존재
- 성능을 조금 포기하더라도, 결과를 범주로 묶어서 안정성을 높이는 방법 존재
References
- 칩 후옌 - 머신러닝 시스템 설계