본문 바로가기
데이터 전처리 이번에는 머신러닝 모델을 피처의 수치 표현으로 학습할 수 있도록 피처들을 일관된 수치 표현으로 변환하는 방법, 전처리에 대해 알아보겠다. 데이터 전처리를 위한 TFX 컴포넌트인 TensorFlow Transform(TFT)을 사용하여 전처리 단계를 텐서플로 그래프로 구성할 수 있다. 우선 데이터 전처리를 표준화해야 하는 이유 부터 아래 설명하겠다. 전체 데이터셋의 콘텍스트에서 데이터를 효율적으로 전처리 전처리 단계를 효과적으로 확장 잠재적인 *'학습-서빙 왜곡'을 방지 *'학습-서빙 왜곡' 이란??? 모델 학습 중에 사용한 전처리 단계가 추론 중에 사용한 단계와 일치하지 않으면 학습-서빙 왜곡이 발생한다. 모델을 학습하는 데 사용하는 데이터는 Pandas와 함께 파이썬 노트북이나 스파크 작업에서 처리할 ..
데이터 검증 (3) 앞서 2번에 걸처서 알아본 TFDV를 머신러닝 파이프라인에 통합해보겠다. TFX는 StatisticsGen이라는 파이프라인 컴포넌트를 제공한다. StatisticsGen은 데이터 수집 때 사용한 ExampleGen 컴포넌트의 출력을 입력으로 수락한 다음 통계 생성을 수행한다. from tfx.components import StatisticsGen statistics_gen = StatisticsGen(examples=example_gen.outputs['examples']) context.run(statistics_gen) 데이터 수집에서 살펴봤듯이, 아래와 같이 대화형 콘텍스트에서 출력을 시각화할 수 있다. context.show(statistics_gen.outputs['statistics']) 스..
데이터 검증 (2) 이전 '데이터 검증(1)' 에서는 데이터의 요약 통계와 스키마를 생성하는 방법을 알아봤다. 데이터를 설명해주지만, 잠재적은 문제를 발견하지 못하기 때문에 이번에는 TFDV가 데이터에서 문제를 발견하는데 어떤 기능이 있는지 살펴보겠다. 1) 데이터셋 비교 머신러닝 모델을 학습하기 전에 학습 데이터셋에 대한 검증 데이터셋의 대표성을 확인하려고 가정했을 때 검증 데이터는 학습 데이터 스키마를 준수하는지, 피처값의 유의미한 수가 누락되었는지 등을 TFDV에서 확인할 수 있다. 아래와 같이 두 데이터셋을 로드한 후 시각화할 수 있다. train_stats = tfdv.generate_statistics_from_tfrecord( data_location=train_tfrecord_filename) val_stat..
데이터 검증 (1) 이번 포스팅부터는 머신러닝 파이프라인의 2번째 단계인 데이터 검증에 대해 알아보겠다. 머신러닝에서는 데이터셋의 패턴에서 학습하고 이를 일반화 하려고 한다 . 따라서 데이터는 머신러닝 워크플로에서 가장 중요한 역할을 하며,데이터의 품질은 머신러닝 프로젝트 성공의 핵심 요소이다. 또한 시간이 오래 걸리는 전처리 및 학습 단계에 도달하기 전에 머신러닝 파이프라인에 들어오 는 데이터의 변화를 포착하므로 매우 중요한 체크포인트이다. 위와 같은 이유로 데이터 검증이 필수이다. 데이터 검증의 의미는 아래와 같이 확인할 수 있다. 데이터 이상치 확인 데이터 스키마 변경 유무 확인 새 데이터셋의 통계와 이전 학습 데이터셋의 통계의 일치 여부 확인 TFDV 텐서플로는 데이터 검증을 지원하는 도구인 TFDV를 제공합니다. ..
데이터 수집(3) 수집 전략 완전히 새로운 프로젝트로 시작할 때는 올바른 데이터 수집 전략을 선택하기가 어렵다. 그래서 가장 많이 쓰는 세 가지 데이터 유형(정형 데이터, 텍스트 데이터, 이미지 데이터)에 관한 몇 가지 전략을 추천하고자 한다. 정형 데이터 정형 데이터는 데이터베이스나 디스크에 파일 형식으로 저장될 때가 많으며 표 형식의 데이터를 지원한다. 데이터가 데이터베이스에 있다면 CSV로 내보내거나 PrestoExampleGen 또는 BigQueryExampleGen 컴포넌트로 데이터를 직접 사용할 수 있다. 표 형식 데이터를 지원하는 파일 형식으로 저장된 디스크에서 사용할 수 있는 데이터는 CSV로 변환하고 CsvExampleGen 컴포넌트를 사용하여 파이프라인으로 수집해야 한다. 데이터양이 수백 메가바이트 이상..
데이터 수집(2) 데이터 준비 각 ExampleGen 컴포넌트를 사용하여 데이터셋의 input_config와 output_config을 구성할 수 있다. 데이터셋을 점진적으로 수집하려면 span을 입력 구성으로 정의할 수 있다. 또한 데이터를 분할하는 방법도 구성할 수 있다. 평가 및 테스트 데이터셋과 함께 학습 데이터셋을 생성할 때가 많은데, 출력 구성으로 이런 전처리 작업을 정의할 수 있다. 데이터셋 분할 파이프라인 후반부에는 학습 중에 머신러닝 모델을 평가하고 모델 분석 단계에서 테스트하려고 한다. 따라서 데이터셋을 필요한 하위 집합으로 분할해두면 좋다. 단일 데이터셋을 하위 집합으로 분할 학습, 평가, 테스트 데이터셋을 각각 6:2:2의 비율로 분할해보았다. 비율 설정은 hash_buckets으로 정의할 수 있다...