math
CHAPTER 17 / 45
읽기 약 2분
FUNCTION
벤 다이어그램: 데이터 교차 분석
핵심 개념
2~3 집합 시각화 — A/B 테스트 사용자 겹침, 기능 비교 매트릭스. matplotlib_venn으로 직접 그리기.
본문
2 집합 벤 다이어그램
A B
┌────┐ ┌────┐
│ │ │ │
│ ┌─┼────┼─┐ │
│ │ │ │ │ │
│ │ └────┼─┘ │
│ only │ │
│ A │ B │
└────┘ └────┘
A∩B = 교집합
A 영역: A만 + A∩B
B 영역: B만 + A∩Bmatplotlib_venn
# pip install matplotlib_venn
from matplotlib_venn import venn2, venn3
import matplotlib.pyplot as plt
# 2 집합 — A/B 테스트 사용자 겹침
A = set(range(1, 51)) # 변형 A 노출 사용자
B = set(range(40, 80)) # 변형 B 노출 사용자
venn2([A, B], set_labels=('변형 A', '변형 B'))
plt.title('A/B 테스트 사용자 겹침')
plt.show()
# A만: 39명, B만: 30명, 둘 다: 11명
# 3 집합 — Pro + Active + Verified
pro = set(range(1, 30))
active = set(range(20, 50))
verified = set(range(40, 70))
venn3([pro, active, verified], set_labels=('Pro', 'Active', 'Verified'))
plt.title('사용자 세그먼트 3중 분석')
plt.show()실전 — 두 배열의 교집합·차집합
# 게시물 좋아요한 사용자 vs 댓글 단 사용자
likers = ['alice', 'bob', 'charlie', 'dave']
commenters = ['bob', 'charlie', 'eve', 'frank']
L = set(likers)
C = set(commenters)
# 좋아요만 한 사람 (댓글 안 단)
only_like = L - C
print(only_like) # {'alice', 'dave'}
# 댓글만 단 사람
only_comment = C - L
print(only_comment) # {'eve', 'frank'}
# 둘 다 한 핵심 팬
both = L & C
print(both) # {'bob', 'charlie'}
# 참여 사용자 전체
all_engaged = L | C
print(all_engaged) # {'alice', 'bob', 'charlie', 'dave', 'eve', 'frank'}
# 핵심 KPI
total = len(all_engaged)
overlap_rate = len(both) / total * 100
print(f"교차 참여율: {overlap_rate:.1f}%") # 33.3%실전 — 기능 비교 매트릭스
# Notion vs Confluence vs Roam — 기능 비교
notion = {'페이지 트리', '데이터베이스', '템플릿', 'API', '협업', '오프라인'}
confluence = {'페이지 트리', '템플릿', 'API', '협업', 'Jira 통합'}
roam = {'양방향 링크', '그래프 뷰', '템플릿', '오프라인'}
def compare_features(*tools):
names = [name for name, _ in tools]
sets = [s for _, s in tools]
# 모든 도구가 가진 기능 (전체 교집합)
common = set.intersection(*sets)
print(f"\n공통 기능: {common}")
# 각 도구만의 차별점
for i, (name, s) in enumerate(tools):
others = set.union(*[t[1] for j, t in enumerate(tools) if j != i])
unique = s - others
print(f"{name}만: {unique}")
compare_features(
('Notion', notion),
('Confluence', confluence),
('Roam', roam),
)
# 공통 기능: {'템플릿'}
# Notion만: {'데이터베이스'}
# Confluence만: {'Jira 통합'}
# Roam만: {'양방향 링크', '그래프 뷰'}실전 — A/B 테스트 깔때기 분석
# 변형 A: 가입 → 결제
# 변형 B: 가입 → 결제
signup_a = set(range(1, 1001)) # 1000명
purchase_a = set(range(900, 1051)) # 일부 결제
signup_b = set(range(2000, 3001)) # 1000명
purchase_b = set(range(2900, 3081)) # 일부 결제
# 각 변형의 결제 전환
conv_a = signup_a & purchase_a
conv_b = signup_b & purchase_b
print(f"변형 A 전환: {len(conv_a)}/{len(signup_a)} = {len(conv_a)/len(signup_a)*100:.1f}%")
print(f"변형 B 전환: {len(conv_b)}/{len(signup_b)} = {len(conv_b)/len(signup_b)*100:.1f}%")
# 향상률
lift = (len(conv_b)/len(signup_b) - len(conv_a)/len(signup_a)) / (len(conv_a)/len(signup_a)) * 100
print(f"향상률: {lift:+.1f}%")다음 챕터
CH.18 "순열" — 순서가 중요한 경우의 수 + 비밀번호 강도 계산.
AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude
무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6
내 사용자 행동 데이터(이벤트 로그)를 분석해서 세그먼트 벤 다이어그램과 핵심 인사이트 5개를 만들어줘.
ChatGPT
무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro
한국 데이터 분석 도구(Tableau/Looker/Mixpanel)의 벤 다이어그램 활용 사례와 한계를 비교 분석해줘.
Gemini
무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro
내 모든 GA4·Clarity 데이터에서 3중 교집합 코호트를 자동 발견해서 매출 기여도와 함께 보고해줘.
Grok
무료: Grok 4.1 / SuperGrok $30/mo
2026년 그로스 해킹에서 벤 다이어그램 분석이 데이터 의사결정에 미치는 실제 영향을 솔직히 알려줘.
⭐ 이것만 기억하세요
벤 다이어그램: 데이터 교차 분석은 이 3가지만 확실히 잡으세요
1.벤 다이어그램은 2~3 집합의 관계를 한눈에 — matplotlib_venn으로 즉시 시각화
2.A/B 테스트, 기능 비교, 사용자 세그먼트 모두 같은 집합 연산으로 분석 — 도메인 다르지만 패턴 동일
3.다음 챕터 CH.18에서 순열 — 순서가 의미를 갖는 경우의 수 (비밀번호·라우트·추천)
공유하기
진행도 17 / 45