피드로 돌아가기
Dev.toDatabase
원문 읽기
When Synthetic Data Lies: A Hidden Correlation Problem I Didn’t Expect
ClickHouse 합성 데이터 생성에서 변수 간 숨겨진 수학적 종속성으로 인해 특정 국가의 구매 기록이 완전히 누락되는 데이터 품질 문제 발생
AI 요약
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, 데이터 웨어하우스 등)에서 여러 변수를 동일한 기반 값의 함수로 파생할 때 서로 다른 승수, 오프셋, 변환식을 적용하면 변수 간 의도하지 않은 상관성으로 인한 데이터 품질 문제를 사전에 방지할 수 있다.