반응형
O`REILLY Building Machine Learning Pipelines #4. 데이터 검증
데이터는 모든 머신러닝 모델의 기본
모델의 유용성과 성능은 모델을 통한 학습, 검증, 분석한 데이터에 따라 달라집니다. 그런 점에서 데이트 검증이 중요, 텐서플로 익스텐드 패키지 TFDV(TensorFlow Data Validation) 제공
- 쓰레기를 넣으면, 쓰레기가 나온다(Garbage In, Garbage Out - GIGO)
- 데이터 검증은 다음의 항목 확인
- 데이터 이상치 검증
- 데이터 스키마 변경 여부 검증
- 새 데이터셋 통계와 이전 학습 데이터셋 통계의 일치성 검증
TFDV(Tensorflow Data Validation)를 통한 데이터 검증
# TFDV 설치
$ pip install tensorflow-data-validation
// 데이터 요약 통계
import tensorflow_data_validation as tfdv
stats = tfdv.generate_statistics_from_csv(
data_location='/data/consumer_data.csv',
delimiter=',')
// TFRecord 파일을 통한 피치 통계 생성
stats = tfdv.generate_statistics_from_tfrecord(
data_location = '/data/consumer_data.tfrecord')
TFDV에서 패키지를 통해 생성되는 값
- 숫자의 피치에서 TFDV에서 생성되는 항목
- 전체 데이터 레코드 수
- 누락 데이터 레코드 수
- 데이터 레코드 전체에서 피처의 평균과 표준 편차
- 데이터 레코드에서 피처의 최솟값과 최댓값
- 데이터 레코드에서 피처의 0 값 비율
- 각 피치의 히스토그램 생성
- 범주형 피치에서 TFDV에서 생성되는 항목
- 전체 데이터 레코드 수
- 누락 데이터 레코드의 백분율
- 고유 레코드 수
- 피처의 모든 레코드 평균 문자열
- 각 범주에서 레이블 별 샘플 수와 순서
TFDV에서 요약 통계를 생성한기준으로 데이터셋의 스키마 생성할 수 있음
// 스키마 생성
schema = tfdv.infer_schema(stats)
// 시키마 표시
tfdv.display_schema(schema)
데이터 인식
데이터 셋을 비교할 수 있음, 학습 데이터셋과 검증 데이터셋에 대한 데이터 비교를 통해 데이터 이상 여부 판단
train_stats =tfdv.generate_statistics_from_tfrecord(
data_location=train_tfrecord_filename)
eval_stats = tfdv.generate_statistics_from_tfrecord(
data_location=val_tfrecord_filename)
tfdv.visualize_statistics(lhs_statistics=eval_stats, rhs_statistics=train_stats,
lhs_name='EVAL_DATASET', rhs_name='TRAIN_DATASET')
// 데이터 이상치 탐지
anomalies = tfdv.validate_statistics(statistics=eval_stats, schema=schema)
// 데이터 이상치 표시
tfdv.display_anomalies(anomalies)
- 데이터 스큐 및 드리프트(데이터 왜곡)
TFDV에는 두 데이터셋의 통계 간 큰 차이(데이터 왜곡)를 감지하는 내장 스큐(skew) 비교기 제공
tfdv.get_feature(schema, 'company).skew_comparator.infinity_norm.threshold = 0.01
skew_anomalies = tfdv.validate_statistics(statistics=train_stats,
schema=schema,
serving_statistics=serving_stats)
참고
- https://www.tensorflow.org/tfx/data_validation/get_started
- 구글 PAIR 프로젝트: https://pair-code.github.io/facets/ 데이터 분포도 분석
반응형
'FullStack > 50. ML' 카테고리의 다른 글
[BOOK] 처음 배우는 딥러닝 챗봇 #2 임베딩 (0) | 2023.01.25 |
---|---|
[BOOK] 처음 배우는 딥러닝 챗봇 #1 (0) | 2023.01.23 |
[BOOK] Building Machine Learning Pipelines #3 데이터 수집 (0) | 2023.01.12 |
[BOOK] Building Machine Learning Pipelines #2 TFX (텐서플로 익스텐디드) (0) | 2023.01.11 |
[BOOK] Building Machine Learning Pipelines #1 머신러닝 파이프라인 (0) | 2023.01.09 |