[MLOps] Data Cleaning & Data Transformation

데이터 품질은 신뢰도 높은 분석의 핵심입니다. 데이터 정제와 표준화를 통해 분석의 정확성을 확보하고, 가치 있는 비즈니스 인사이트를 도출하는 방법을 제시합니다.

[MLOps] Data Cleaning & Data Transformation
Photo by Ross Findon / Unsplash

개요

다양한 소스에서 추출된 데이터는 종종 불완전하거나, 형식이 다르거나, 오류를 포함하고 있습니다. 이러한 데이터를 정제하지 않고 그대로 데이터 레이크에 쌓고 Parquet 같은 특정 포맷으로 변환한다면, '쓰레기를 넣으면 쓰레기가 나온다(Garbage In, Garbage Out)'는 원칙에 따라 분석 결과의 신뢰도는 크게 떨어집니다.

따라서 데이터 변환 및 적재 전에 데이터의 품질을 검사하고 향상시키는 과정은, 신뢰할 수 있는 분석과 정확한 비즈니스 인사이트를 얻기 위한 필수적인 사전 작업입니다.

데이터 퀄리티를 높히는 전략

데이터의 가치를 극대화하기 위해 반드시 거쳐야 할 5가지 핵심 전략을 정리하였습니다.

Notion Image

1. 데이터 정확성 보장 (Accuracy)

모든 분석의 가장 기본이 되는 요소입니다. 데이터에 포함된 오류, 오타, 논리적 불일치를 찾아내고 수정해야 합니다.

  • 예시: 고객 나이가 '250'으로 입력되거나, 주문 날짜가 배송 날짜보다 늦는 등의 논리적 오류를 검증하고 바로잡습니다.
  • 결과: 부정확한 데이터로 인한 잘못된 인사이트 도출 및 비즈니스 의사결정 오류를 방지합니다.

2. 중복 데이터 제거 (Deduplication)

동일한 데이터가 여러 번 기록되면 분석 결과를 왜곡하고 저장 공간을 낭비하게 됩니다. 시스템 오류나 사용자 실수로 인해 발생하는 중복 데이터를 식별하고 제거해야 합니다.

  • 예시: 동일한 고객이 다른 ID로 여러 번 가입된 경우, 이를 단일 레코드로 병합합니다.
  • 결과: 분석의 복잡성을 줄이고, 통계적 왜곡을 방지하며, 데이터 처리의 효율성을 높입니다.

3. 데이터 형식 표준화 (Standardization)

여러 소스에서 온 데이터는 같은 의미라도 다른 형식으로 표현될 수 있습니다. 이를 하나의 통일된 형식으로 맞춰주는 과정입니다.

  • 예시:
    • 날짜: '2023-01-05', '01/05/2023', '23년 1월 5일' → YYYY-MM-DD 형식으로 통일
    • 단위: '100cm', '1m' → 'm' 단위로 통일
    • 카테고리: '서울', '서울특별시' → '서울특별시'로 통일
  • 결과: 데이터의 일관성을 확보하여 집계 및 비교 분석을 용이하게 합니다.

4. 결측값 처리 (Handling Missing Values)

데이터가 누락된 경우(결측값), 분석에 오류를 일으킬 수 있습니다. 결측값을 어떻게 처리할지 정책을 정하고 적용해야 합니다.

  • 처리 방법:
    • 제거: 해당 데이터 행(row) 전체를 삭제 (데이터가 충분할 경우)
    • 대체: 평균, 중앙값, 최빈값 등 통계적 수치로 대체
    • 예측: 머신러닝 모델을 사용해 가장 가능성 있는 값으로 예측하여 채움
  • 결과: 데이터셋의 완전성을 높여 분석의 정확도를 향상시킵니다.

5. 분석을 위한 데이터 최적화 (Optimization)

원시 데이터(raw data)는 분석가가 바로 사용하기 어려운 경우가 많습니다. 분석 목적에 맞게 데이터를 가공하고 구조화하여 처리하기 쉬운 형태로 변환합니다.

  • 예시: 자유 텍스트로 입력된 고객 피드백에서 핵심 키워드를 추출하거나, 복잡한 JSON 데이터를 필요한 정보만 뽑아내어 테이블 형태로 재구성합니다.
  • 결과: 데이터 처리 속도를 높이고, 분석가가 데이터 탐색 및 모델링에 더 집중할 수 있도록 돕습니다.

데이터 처리 및 품질 관리를 위한 기술과 도구

데이터의 규모와 처리 목적에 따라 적합한 기술을 선택하는 것이 중요합니다.

소규모 및 중규모 데이터 처리 (단일 머신 환경)

  • Pandas: 파이썬(Python)의 대표적인 데이터 분석 라이브러리입니다. 메모리 내에서 데이터를 빠르고 유연하게 조작할 수 있어, 프로토타이핑이나 비교적 크지 않은 데이터셋을 다룰 때 매우 강력하고 효율적입니다.

대규모 데이터 처리 (분산 컴퓨팅 환경)

  • Apache Spark: 수십 테라바이트(TB) 이상의 대용량 데이터를 여러 컴퓨터에 분산하여 병렬로 처리하는 프레임워크입니다. 메모리 기반 처리로 속도가 매우 빠르며, 대규모 데이터의 ETL, 머신러닝, 스트리밍 처리에 사실상의 표준으로 사용됩니다.

ETL/ELT 프로세스 단순화 및 자동화 도구

  • AWS Glue: AWS에서 제공하는 완전 관리형 ETL 서비스입니다. 데이터 카탈로그를 생성하고, 코드 생성 및 스케줄링 기능을 통해 복잡한 ETL 파이프라인 구축을 단순화해 줍니다.
  • Talend: 시각적인 인터페이스(GUI)를 통해 코딩 없이 드래그 앤 드롭 방식으로 복잡한 ETL 프로세스를 설계하고 관리할 수 있는 강력한 데이터 통합 솔루션입니다.
  • dbt (Data Build Tool): 데이터 웨어하우스에 데이터가 적재된 후(ELT의 'T' 단계) 변환 작업을 전문적으로 수행하는 도구입니다. SQL을 사용하여 데이터 모델링, 테스트, 문서화를 체계적으로 관리할 수 있어 데이터 분석가와 엔지니어 간의 협업에 매우 유용합니다.