15

"1조 번 비교하라고요?" - 조합 폭발의 공포

Day 3: Blocking & Indexing 전략

학습 목표

전체 비교의 계산 복잡도 문제를 이해한다 Blocking의 필요성을 파악한다

"1억 건 고객 데이터 매칭해주세요"

CDO의 다음 요청.

"이번에는 1억 건 고객 데이터입니다. 중복 제거해주세요."


단순 접근: 모든 쌍 비교

에디터 로딩 중...

비교 1건당 1ms 소요 시

에디터 로딩 중...

금요일 퇴근까지 끝내야 하는데...


Record Linkage는 더 심각

에디터 로딩 중...

절대 불가능.


해결책: Blocking

모든 쌍을 비교하지 말고, 비슷할 가능성이 있는 쌍만 비교하자

에디터 로딩 중...

Blocking 아이디어

"같은 사람이면 최소한 OO는 같을 것이다"

Blocking Key예시
지역서울 vs 서울만 비교
우편번호 앞 3자리135-xxx끼리만 비교
이름 첫 글자김xx끼리만 비교
생년1990년생끼리만 비교

트레이드오프

Blocking이 너무 엄격하면:

  • 비교 횟수 ↓
  • 실제 매칭 놓침 (False Negative) ↑

Blocking이 너무 느슨하면:

  • 비교 횟수 ↑
  • 시간/비용 증가

목표: 최소 비교로 최대 매칭 커버


오늘 배울 것

  1. Blocking 전략 - Block, Sorted Neighbourhood, Canopy
  2. Indexing 구현 - recordlinkage로 실습
  3. 성능 평가 - Reduction Ratio, Pairs Quality
  4. 실전 최적화 - 여러 Blocking Key 조합

조합 폭발을 피하는 법을 배우자.