이 글은 <Reliable Machine Learning, Cathy Chen, Niall Richard Murphy, Kranti Parisa, D. Sculley, Todd Underwood> 2장 Data Management을 참고하여 작성했습니다.
Chapter2. Data Management Principles (2) - Phases of Data
ML 파이프라인은 데이터 변화에 굉장히 예민하게 반응합니다. 사소한 데이터 버그가 ML 파이프라인에 커다란 문제를 야기하기도 하죠. 그렇기 때문에 우리는 데이터를 항상 신중히 다뤄야 하며, 이번 챕터에서는 데이터의 생명 주기에 따라 우리가 조심해야 하는 점은 무엇이 있는지 살펴보겠습니다.
Data Life Cycle Overview
1. Creation
첫 단계는 Data creation입니다. 디바이스나 웹으로부터 데이터를 받아 캡처하는 과정을 의미합니다. 이때, 생성된 데이터는 unstructured, semi-structured, structured 일 수 있으며, 아직 스토리지에 저장되기 전 단계입니다.
데이터 종류
- Structured Data
모델, 스키마 혹은 테이블 형태로 구조화된 데이터를 의미합니다. 이처럼 잘 구조화된 데이터는 처리하기 쉽다는 장점이 있습니다. - Unstructured Data
텍스트나 오디오 파일처럼 일정한 구조가 없는 데이터를 의미합니다. 이메일 본문이나 상품 설명, 웹 텍스트 등이 이에 속합니다. - Semi-structured Data
구조가 없더라도 분류할 수 있는 tag를 지닌 데이터를 의미합니다. 해시태깅된 포스트, 라벨링 된 이메일 본문 등이 이에 속합니다.
팁
1. 데이터를 생성할 때는 bias 가 들어가지 않도록 주의해야 합니다. 자세한 내용은 Chapter 5, 6에서 더 다뤄보겠습니다.
2. 데이터가 부족할 땐 Data augmentation을 이용해 데이터의 양을 늘리는 것도 한 방법이다.
2. Ingestion
다음 단계는 Data Ingestion입니다. 항상 모든 데이터를 저장할 필요는 없습니다. 그래서, 이 단계에서는 스토리지에 저장하기 전에 필터링 혹은 선별하는 작업을 진행합니다. 중요한 데이터만을 남겨, 데이터의 퀄리티를 높이고 동시에 데이터 관리 비용도 절약할 수 있습니다.
데이터를 줄이는 방법
- 특정 필드의 값을 기준으로 필요 없다고 판단되는 데이터는 버리기
- 샘플링을 통해 데이터의 크기를 줄이기
팁
잘못 필터링/샘플링하지는 않았는지 correctness와 throughput을 특히 더 신경 써야 합니다.
3. Processing
다음 단계는 Data Processing입니다. 이 단계에서는 데이터를 학습에 사용하기 좋게 한 차례 다듬어줍니다. 이 작업은 보통 데이터 사이언티스트나 리서처 쪽에서 진행합니다.
데이터 전처리
데이터 전처리 작업으로는 아래 작업들이 있습니다.
- Validation
외부 소스에서 가져온 데이터들은 다양한 요인에 의해 망가질 수 있습니다. 그렇기 때문에 특정 요구 사항이나 규칙을 충족하는지 확인 확인할 필요가 있습니다. 예로는 형식 검사(e.g. 이메일 형식), 범위 검사(e.g. 0~1 사이) 등이 있습니다. - Cleaning
그 외에도 수집된 데이터가 잘못 분류되어 있을 수도 있고, 인코딩이 잘못되었다거나, 중복해 저장되어 있거나, 특정 필드가 비어있는 등 데이터에 여러 문제가 있을 수 있습니다. 이런 문제들을 깨끗이 정리하는 작업이 Data Cleaning입니다. - Ensuring data consistency
데이터가 여러 출처나 테이블에 걸쳐 동일한 기준을 충족하도록 정규화하는 작업입니다. 정규화기법으로는 Scaling to a range, clipping, Log scaling, Z-score normalization 등이 있습니다.
- Scaling to range: 데이터가 최솟값과 최댓값 사이에 고르게 분포할 때 적합합니다.
- Clipping: 매우 적은 수의 극단적인 아웃라이어가 있는 데이터셋에 적합합니다.
- Log scaling: 작은 값이 많고 큰 값이 적을 때 유용합니다.
- Z-score normalization: 데이터의 평균을 0, 표준 편차를 1로 표준화하여 Z-분포로 만듭니다.
정규화는 아니지만, bucketing 도 있습니다. 연속적인 데이터를 구간 데이터로 변환할 수도 있습니다. - Enriching and Extending
기존 데이터 세트에 새로운 데이터를 추가하여 데이터의 범위를 확장하거나 데이터를 더 유용하고 가치 있게 만들기 위해 데이터를 개선하는 작업이 여기에 속합니다. 대표적인 작업으로는 라벨링이 여기에 속합니다.
4. Post-processing
Storage
이제 스토리지에 저장할 준비가 되었습니다. 이땐 스토리지의 효율성과 메타데이터를 고려해 보면 좋습니다.
데이터 접근 패턴에 적합한 스토리지를 구성하고 이 데이터의 목적과 부가 정보를 알 수 있는 메타 데이터를 함께 기록해 두면 좋습니다.
Management
저장된 데이터는 데이터 보안과 개인정보 보호를 위해 권한 시스템을 이용해 관리하는 것이 좋습니다.
Analysis and Visualization
저장된 데이터는 분석에 용이하게끔, 파이 차트나 바 그래프로 표현해 주거나, 꼭 그렇진 않더라도 사람이 데이터셋을 쉽게 이해할 수 있도록 UI를 제공해 주는 것도 좋습니다.