5.1에 이어서 이번에는 '데이터 드리프트 및 스큐'에 대해서 정리하려고 한다.
- 데이터 검증 ( TFDV )
- 데이터 검증 TFDV
- 스키마 추론과 스키마 환경
- 데이터 드리프트 및 스큐
- 데이터 드리프트
- 기본적으로 모델을 배포한 다음에는 갈수록 하락한다. 어떻게 인지할수 있을까? 들어오는 인풋값의 분포가 바뀔수 도 있다.예를들어서, 유저에 90%가 남성이었는데, 갑자기 여성이 많아지면서 성비가 5:5가 되었다. 이를 데이터 드리프트가 발생했다고 할 수 있다.
- 데이터들의 인풋값이 바뀐 것을 어떻게 측정을 할까?
- 데이터 드리프트 및 스큐 확인
- TFDV는 드리프트 및 스큐를 감지하는 기능도 제공한다.
- 스키마에 지정된 드리프트 / 스큐 비교를 기반으로 여러 데이터 셋 통계를 비교하여 검사를 수행한다.
- 드리프트
- 드리프트 감지는 범주형 특성 및 데이터의 연속범위에 대해서 지원된다.
- L-Infinity Dsitance로 드리프트를 표현하고 임계거리를 설정 할 수 있다.
- 범위 설정하는 것은 도메인 지식과 실험이 필요하다.
- 스큐
- 스키마 스큐
- 특성 스큐
- 분포 스큐
- 스키마 스큐
- 학습 및 서빙데이터가 동일한 스키마를 따르지 않을 때 발생한다.
- 학습 데이터와 서빙데이터는 모두 동일한 스키마를 준수해야한다.
- 특성 스큐
- 모델이 학습하는 특성 값이 서빙 시에 표시되는 특성 값과 다를 때, 발생한다.
- 일부 특성값이 학습 및 서빙 중간에 수정될때
- 학습과 서빙 시에 특성을 전처리하는 로직이 다를때
- 분포 스큐
- 학습 데이터 셋의 분포가 제공 데이터셋의 분포와 크게 다를 때, 발생한다.
- 주요 원인 중 하나는 다른 코드 또는 다른 데이터 소스를 사용하여 학습 데이터 셋을 생성할 때 이다.
- 또 다른 이유는 학습 할 제공 데이터의 대표적이지 않은 하위 샘플을 선택하는 잘못된 샘플링 메커니즘일 때이다.
-
from tensorflow.python.lib.io import file_io from google.protobuf import text_format file_io.recursive_create_dir(OUTPUT_DIR) schema_file = os.path.join(OUTPUT_DIR, 'schema.pbtxt’) tfdv.write_schema_text(schema, schema_file) !cat {schema_file}
- 스키마가 검토되고 선별되면, '고정'상태를 반영하도록 파일에 저장한다.
- 스키마 스큐
실습 부분은 생략하겠다.