본문 바로가기
카테고리 없음

MLops - 5.2 (TFDV)

by DSLAB_JS 2022. 2. 2.

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}
      • 스키마가 검토되고 선별되면, '고정'상태를 반영하도록 파일에 저장한다.

실습 부분은 생략하겠다.