12CODE
← 아카데미 academy 21강. 클린룸 작동 원리: 비식별화·해싱·집계 쿼리만 허용되는 구조 예상 7분

들어가며

원본 PII를 그대로 넘길 수 없는 이유

117-3강에서 다뤘듯 클린룸의 핵심 전제는 "원본 사용자 데이터가 클린룸 밖으로도, 상대방에게도 노출되지 않는다"는 것입니다. 이 전제를 지키려면 데이터를 반입하는 시점부터 이메일·전화번호·이름 같은 원본 개인 식별 정보(PII)를 그대로 올릴 수 없습니다. 대신 이 값을 일방향 해시 함수(SHA-256)로 변환한 가명 ID로 바꿔서 반입합니다. 해시 처리는 원본 값을 복원할 수 없는 방식으로 문자열을 변환하는 연산이라, 클린룸 운영자조차 원본 이메일을 역산할 수 없습니다.

매칭이 성립하려면 세 가지를 정확히 맞춰야 한다

117-3강이 지적한 대로 매칭이 성립하려면 양측(광고주-매체)이 정규화 규칙(소문자 변환, 공백 제거), 해시 알고리즘(SHA-256), 인코딩 방식(Hex 또는 Base64)을 정확히 일치시켜야 합니다. 이 세 가지 중 하나라도 다르게 처리하면 실제로는 같은 유저인데도 클린룸은 다른 유저로 인식해 매칭에 실패합니다. 114-5강에서 다룬 구글 고객 매치의 해싱 규격(소문자 변환, 전화번호 E.164 정규화)을 이미 배웠다면, 클린룸에 반입할 데이터도 같은 원칙으로 정규화해야 한다는 것을 쉽게 이해할 수 있습니다.

차분 프라이버시와 최소 모수 임계값

117-5강에서 다룬 대로 두 개념은 다르게 작동합니다. 차분 프라이버시는 결과값에 통계적 노이즈를 더해 개인을 역추적할 수 없게 만드는 기법이고, 최소 모수 임계값은 유저 수가 일정 수 미만이면 결과 자체를 아예 출력하지 않는 정책입니다. 구글 ADH는 노이즈 주입 방식일 때 행당 약 20명, 차이 검사 방식일 때 약 50명, 클릭·전환 전용 쿼리는 약 10명을 최소 기준으로 요구합니다. 쿼리를 지나치게 좁게 설계하면(캠페인·지역·소재를 세밀히 쪼개면) 이 기준 미만으로 떨어져 결과가 통째로 비어버립니다.

결과가 비었을 때의 대응 순서

117-5강이 제안한 대응 순서는 세 가지입니다. 첫째 분석 기간을 넓히고(1주 대신 4주), 둘째 세분화된 세그먼트를 더 넓은 구간으로 통합하고, 셋째 캠페인 여러 개를 묶어 분석 범위를 넓힙니다. 이 세 가지는 결과를 왜곡해서 통과시키는 방법이 아니라, 애초에 통계적으로 유의미한 표본 크기를 확보하는 정공법입니다. 이 대응 순서는 22강에서 다룰 클린룸 플랫폼별 특성과 함께 봐야 실제 운영에서 헤매지 않습니다.

기본 쿼리 구조: 노출 빈도와 결제 상관관계

117-4강에서 소개한 쿼리 구조는 세 단계입니다. 첫 단계는 유저별 노출 횟수를 집계하는 테이블을 만들고, 두 번째 단계는 유저별 결제 여부·결제액을 집계하는 테이블을 만들고, 세 번째 단계에서 두 테이블을 가명 ID로 조인해 노출 횟수 구간별 결제 전환율을 비교합니다. 이 결과로 "몇 회 노출부터 결제 전환율이 유의미하게 올라가는지" 같은 빈도 최적화 인사이트를 얻을 수 있습니다.

상관관계를 인과관계로 오독하지 않기

117-4강이 경고하듯, 노출 빈도가 높은 유저군의 결제 전환율이 높게 나온다고 해서 노출을 더 많이 시키면 결제가 늘어난다는 뜻은 아닙니다. 애초에 구매 의향이 높았던 유저에게 리타겟팅 로직이 더 많은 노출을 몰아줬을 가능성(역인과)을 배제할 수 없기 때문입니다. 이 문제를 줄이려면 노출군과 비노출군을 무작위로 나눠 비교하는 홀드아웃 실험을 병행해야 합니다. 이 부분은 23강에서 리포트 해석 원칙으로 다시 다룹니다.

실무 산출물: 클린룸 쿼리 설계 예시

[클린룸 쿼리 설계 예시: 노출 빈도-결제 전환율 분석]

■ 목적
- 검색광고 캠페인 A의 노출 빈도 구간별 결제 전환율을 확인한다.

■ 1단계: 반입 데이터 확인
- 매체 쪽 노출 로그(가명 ID, 캠페인, 노출 일시): 반입됨 여부 [ ]
- 광고주 쪽 결제 로그(가명 ID, 결제일시, 결제액): 반입됨 여부 [ ]
- 두 데이터 모두 동일한 해싱 규격(SHA-256, 소문자 정규화)으로 처리됐는가: [ ]

■ 2단계: 쿼리 구조(의사코드)
  단계1: 유저별_노출횟수 = SELECT 가명ID, COUNT(*) AS 노출수
         FROM 노출로그 WHERE 캠페인 = 'A' AND 기간 = [4주]
         GROUP BY 가명ID
  단계2: 유저별_결제 = SELECT 가명ID, SUM(결제액) AS 결제액, COUNT(*) AS 결제건수
         FROM 결제로그 WHERE 기간 = [4주]
         GROUP BY 가명ID
  단계3: JOIN 유저별_노출횟수, 유저별_결제 ON 가명ID
         GROUP BY 노출횟수구간(1\~2회, 3\~5회, 6회이상)
         SELECT 노출횟수구간, AVG(결제전환여부), AVG(결제액)

■ 3단계: 예상 임계값 점검
- 각 노출횟수구간의 예상 유저 수가 10\~50명 기준을 넘는가: [ ]
- 넘지 않는다면 구간을 어떻게 통합할 것인가:

■ 4단계: 해석 원칙
- 이 결과는 상관관계다: [ ] 인지함
- 홀드아웃 실험 없이 이 결과만으로 예산을 바로 옮기지 않는다: [ ] 동의함

즉시 확인

  1. 해싱 처리에서 정규화 규칙, 알고리즘, 인코딩 방식 중 하나만 달라도 어떤 문제가 생기나요?
  2. 최소 모수 임계값과 차분 프라이버시는 어떻게 다른가요?
  3. 쿼리 결과가 계속 비어 있을 때 가장 먼저 시도해야 할 대응은 무엇인가요?

정답·해설

  1. 같은 유저인데도 다른 해시값이 나와 클린룸이 다른 사람으로 인식해 매칭에 실패합니다.
  2. 최소 모수 임계값은 유저 수가 기준 미만이면 결과 자체를 출력하지 않는 것이고, 차분 프라이버시는 결과값에 노이즈를 더해 역추적을 어렵게 만드는 것입니다.
  3. 분석 기간을 넓히거나 세그먼트를 더 넓은 구간으로 통합해 유저 수를 늘리는 것입니다.

다음 레슨

22강에서는 구글 ADH, 아마존 AMC, 메타 Advanced Analytics 등 실제 클린룸 플랫폼별 특성과 우리 조직에 맞는 옵션을 정리합니다.

핵심 정리

  1. 클린룸 매칭은 정규화·해시 알고리즘·인코딩 방식을 양측이 정확히 일치시켜야 성립합니다.
  2. 최소 모수 임계값은 개인정보 보호를 위한 의도된 설계이며, 결과가 비면 기술 오류가 아니라 표본 부족을 먼저 의심해야 합니다.
  3. 노출 빈도-결제 상관관계 쿼리는 유용하지만, 인과관계로 단정하지 않고 홀드아웃 실험으로 보완해야 합니다.

→ 이 강의 퀴즈 풀어보기 (챌린지)