피드로 돌아가기
When Synthetic Data Lies: A Hidden Correlation Problem I Didn’t Expect
Dev.toDev.to
Database

When Synthetic Data Lies: A Hidden Correlation Problem I Didn’t Expect

ClickHouse 합성 데이터 생성에서 변수 간 숨겨진 수학적 종속성으로 인해 특정 국가의 구매 기록이 완전히 누락되는 데이터 품질 문제 발생

Mohamed Hussain S2026년 3월 26일8intermediate

Context

ClickHouse와 Superset을 사용한 분석 환경에서 합성 데이터로 쿼리와 대시보드를 테스트했을 때 초기에는 분포가 정상으로 보였으나, 데이터셋 크기 증가에 따라 수익이 단일 국가에 집중되고 일부 국가에서는 전혀 구매 기록이 없는 패턴이 발현되었다.

Technical Solution

  • rand() 다중 호출 제거: multiIf 조건문에서 각 단계마다 독립적인 rand() 호출로 인한 의도하지 않은 분포 발생 → 단일 난수 값으로 카테고리 할당
  • 결정적 생성 방식 도입: number를 기반으로 한 모듈로 연산으로 예측 가능한 분포 생성 (number * 17) % 100 AS event_rand
  • 변수 독립성 확보: 동일 기반 값에서 파생된 event_type과 country의 수학적 상관성 제거 → 서로 다른 승수와 오프셋 적용
  • 변수별 독립적 변환 구현: (number * 17) % 100, (number * 31 + 13) % 100, (number * 47 + 23) % 100으로 각 변수에 고유 변환식 할당

Key Takeaway

합성 데이터는 시각적으로 타당해 보이면서도 변수 간 숨겨진 수학적 종속성으로 인해 오도적인 분석 결과를 생성할 수 있으므로, 데이터 정확성은 쿼리 성능만큼 엄격한 검증이 필요하다.


합성 데이터를 생성하는 분석 환경(ClickHouse, 데이터 웨어하우스 등)에서 여러 변수를 동일한 기반 값의 함수로 파생할 때 서로 다른 승수, 오프셋, 변환식을 적용하면 변수 간 의도하지 않은 상관성으로 인한 데이터 품질 문제를 사전에 방지할 수 있다.

원문 읽기
When Synthetic Data Lies: A Hidden Correlation Problem I Didn’t Expect | Devpick