BG/NBD로 광고 LTV 예측 — 비계약 고객의 재구매·이탈을 한 모델로
이커머스 LTV는 "산다 vs 안 산다"가 아니라 "조용해진 게 잠깐인가, 떠난 건가"의 문제입니다. BG/NBD는 비계약 고객의 재구매와 이탈을 한 모델로 푸는 고전적 표준. 광고 단가 한도·코호트 LTV 예측에 어떻게 쓰는지, lifetimes 한 줄로 시작하는 운영 가이드.
이커머스에서 가장 어려운 질문은 “이 고객이 떠났는가”입니다. 구독은 해지 버튼이 있어 이탈이 명확하지만, 이커머스는 “그냥 안 사는 중”과 “완전히 떠남”을 구분할 수 없습니다. BG/NBD 모델은 이 두 상태를 한 모델로 동시에 다루는 고전적 표준입니다. 마케터가 광고 단가 한도·코호트 LTV·캠페인 타겟팅에 LTV를 정량으로 쓰고 싶을 때, 가장 먼저 만나야 할 모델 한 종을 정리합니다.
1. 비계약 고객의 LTV는 왜 어려운가
LTV(Lifetime Value)는 단어는 단순한데 측정은 어렵습니다. 비즈니스 모델에 따라 어려움의 종류가 다릅니다.
- 구독 비즈니스(Netflix, SaaS) — 해지 시점이 명확. 이탈률·MRR로 거의 그대로 풉니다
- 계약 비즈니스(통신, 보험) — 약정 만료라는 명시적 시점이 있음
- 비계약 비즈니스(이커머스, 광고, 캐주얼 게임) — 이탈 시점을 알 수 없음
세 번째가 마케터가 매일 부딪히는 자리입니다. 90일째 안 산 유저는 “곧 다시 살 사람”일 수도 있고 “이미 떠난 사람”일 수도 있습니다. 직관적으로는 두 그룹이 섞여 있는데, 단순 통계로는 분리되지 않습니다. 이 분리를 못 하면 LTV 추정이 잘못됩니다.
전통적인 RFM 매트릭스(Recency·Frequency·Monetary)는 좋은 시각화 도구지만 미래 예측은 못 합니다. “RFM 점수가 높은 고객”이 누군지는 알려주지만, “이 고객이 다음 분기에 평균 몇 번 살 것인지”의 점추정은 안 줍니다.
BG/NBD는 이 갭을 채웁니다. 한 고객의 과거 거래 시점만 받아서, “이 고객이 살아있을 확률 × 살아있다면 평균 몇 번 살 것인가”를 한 번에 풀어냅니다.
2. BG/NBD의 핵심 직관 — 두 과정을 한 모델에
BG/NBD라는 이름은 두 분포의 결합입니다.
- BG: Beta-Geometric — 매번 거래가 끝난 뒤 이 고객이 떠날 확률
- NBD: Negative Binomial Distribution — 살아있는 동안 거래가 일어나는 강도(rate)
이 모델은 모든 고객에게 다음 두 가지 가정을 둡니다.
- 살아있는 동안 고객은 푸아송 과정으로 거래합니다 — 평균 강도
- 매 거래 직후 확률 로 조용히 떠납니다(dropout)
문제는 와 가 고객마다 다르다는 점입니다. 단순 평균을 쓰면 빠른 재구매 고객의 정보가 느린 고객의 분포를 흐립니다. BG/NBD는 모집단 분포로 이 이질성을 흡수합니다.
- — 거래 강도의 모집단 분포
- — 이탈 확률의 모집단 분포
결과적으로 BG/NBD는 데이터에서 4개의 핵심 파라미터 를 추정합니다. 이 4개로 모집단 전체와 개별 고객의 미래 거래 분포가 모두 결정됩니다.
| 파라미터 | 의미 | 마케터가 보는 신호 |
|---|---|---|
| 거래 강도 의 모집단 분포 | 평균 거래 빈도와 고객 간 분산 | |
| 이탈 확률 의 모집단 분포 | 평균 이탈성과 lifecycle 분산 |
수식으로 보면 거래 횟수의 모집단 분포는 NBD를, 이탈 확률은 Beta-Geometric을 따릅니다.
복잡해 보이지만 모델이 하는 일은 한 줄입니다 — “이 고객이 살아있을 가능성”과 “살아있다면 얼마나 자주 사는가”를 동시에 추정하는 것.
3. 입력은 RFM 3개 — 출력은 미래 거래 횟수
BG/NBD가 가벼운 또 한 가지 이유는 입력 데이터입니다. 고객 한 명당 다음 세 숫자만 있으면 됩니다.
- x — 관측 기간 동안의 반복 거래 횟수 (첫 거래 제외)
- t_x — 첫 거래부터 가장 최근 거래까지의 시간
- T — 첫 거래부터 분석 시점까지의 시간
이 셋이 RFM 매트릭스의 Recency·Frequency를 그대로 담습니다. 모델 학습은 4개 파라미터의 최대우도추정 한 방으로 끝납니다. 운영적으로 가벼우면서도 베이지안 모델만큼 풍부한 출력을 줍니다.
from lifetimes import BetaGeoFitter
bgf = BetaGeoFitter(penalizer_coef=0.001)bgf.fit(df['frequency'], df['recency'], df['T'])df['predicted_purchases_90d'] = bgf.predict(90, df['frequency'], df['recency'], df['T'])df['p_alive'] = bgf.conditional_probability_alive(df['frequency'], df['recency'], df['T'])이게 본문에 박는 유일한 코드입니다. lifetimes 패키지 한 줄로 두 가지 핵심 출력이 나옵니다.
- predicted_purchases_90d — 향후 90일 내 예상 거래 횟수
- p_alive — 현재 살아있을 확률 (0~1)
이 두 숫자가 마케터가 바로 의사결정에 쓸 수 있는 형태입니다. p_alive가 0.2 미만이면 윈백 캠페인 타겟, 0.8 이상이면 프리미엄 추천 타겟. 단순한 분기만으로도 캠페인 ROI가 달라집니다.
4. Frequency-Recency 매트릭스 — BG/NBD의 시각적 진단
BG/NBD의 가장 유명한 시각화는 Frequency-Recency 히트맵입니다. 가로축에 누적 거래 횟수(x), 세로축에 마지막 거래로부터 경과 기간(T - t_x)을 두고, 셀마다 향후 거래 예측치를 칠합니다.
이 맵을 눈으로 읽는 법은 단순합니다.
- 왼쪽 위(저빈도·최근 거래): 신규 고객. 모델 신뢰가 낮지만 단가가 큼
- 오른쪽 아래(고빈도·오래된 거래): 반복 구매자였지만 조용해진 그룹. 진짜 떠난 건지 잠깐 쉬는 건지 BG/NBD가 답을 줌
- 오른쪽 위(고빈도·최근 거래): 살아있는 충성 고객. p_alive ≈ 1, predicted_purchases가 가장 큼
- 왼쪽 아래(저빈도·오래된 거래): 거의 확실하게 떠난 그룹. 윈백 ROI도 낮음
5. 베이지안 CAC/LTV 글과의 보완 관계
huny.log에는 CAC·LTV를 베이지안으로 글이 이미 있습니다. 두 글의 역할이 어떻게 다른지 정리합니다.
| 도구 | 답하는 질문 | 데이터 요건 | 출력 |
|---|---|---|---|
| 베이지안 hierarchical (기존 글) | “신규 채널 첫 달, 손익분기 가능한가” | 채널 60~수백 명 | 손익분기 시점 분포 |
| BG/NBD (이 글) | “이 고객이 향후 90일 몇 번 살 것인가” | 거래 이력 수천~수만 건 | 고객별 거래 예측 + p_alive |
| 결합 | 채널 LTV 평균 + 고객별 LTV 분포 | 둘 다 가능 | 채널 단가 한도 + 윈백 타겟 |
결합 운영 패턴은 이렇게 됩니다.
- 신규 채널의 코호트 LTV 추정 → 베이지안 hierarchical (데이터 적음, 사전 분포로 안정화)
- 기존 채널의 고객별 미래 거래 → BG/NBD (데이터 많음, 운영 가벼움)
- 광고 단가 한도 = min(베이지안 코호트 하한, BG/NBD 고객별 LTV 하한)
두 모델이 같은 자리에서 경쟁하지 않습니다. 데이터의 양·시점·질문이 다를 뿐입니다.
6. 마케팅 실무 케이스 3개
6-1. 광고 단가 한도 산정 — predicted LTV × 마진율
신규 가입자의 BG/NBD 향후 12개월 거래 예측이 평균 5.2회, 평균 객단가 28,000원이면 LTV ≈ 145,600원. 마진율 25%면 광고 단가 한도는 약 36,400원이 됩니다. 이 숫자를 채널별로 다시 평균 내면 채널 단가 한도가 결정됩니다. 점추정만 가지고 가는 건 위험하니, Conformal 신뢰구간을 위에 씌워 보수적인 하한으로 운영하는 패턴이 안전합니다.
6-2. 윈백 캠페인 타겟팅 — p_alive 0.3~0.6 슬롯
p_alive가 0.3 미만이면 거의 떠난 사람이라 캠페인 ROI가 낮습니다. 0.6 이상이면 안 깨워도 알아서 다시 옵니다. 0.3-0.6 슬롯이 윈백 캠페인의 1순위 타겟. 같은 캠페인 예산을 RFM 점수로 나눈 그룹과 비교하면, 같은 비용으로 깨어난 유저 수가 30~50% 늘어나는 경우가 흔합니다.
6-3. 신규 vs 기존 광고 예산 배분
신규 광고는 CAC를 알기 쉽지만 LTV를 모릅니다. 기존 캠페인의 BG/NBD predicted LTV를 채널·소재별로 묶어 두면, 신규 광고가 채워야 할 LTV 임계가 자동으로 떠오릅니다. “이 채널의 신규 유저가 90일 평균 3.5회 사야 손익분기”라는 숫자가 운영 가이드가 됩니다.
7. BG/NBD가 깨질 때 — 흔한 함정 3가지
7-1. 거래 빈도가 너무 낮은 비즈니스(연 1~2회)
BG/NBD는 한 고객당 충분한 거래 이력이 있어야 분포가 안정됩니다. 연 1회 거래하는 럭셔리·내구재 비즈니스에서는 모델이 거의 모든 고객을 “이미 떠남”으로 분류합니다. 이런 자리에는 코호트 단위 모델이나 베이지안 hierarchical이 더 맞습니다.
7-2. 마케팅 개입이 거래 패턴을 끊임없이 바꾼다
BG/NBD는 거래 강도 가 시간에 따라 변하지 않는다고 가정합니다. 매주 다른 프로모션을 돌리는 채널에서는 이 가정이 깨집니다. Pareto/NBD나 시간 의존 모델로 가야 하지만, 운영 부담이 훨씬 커집니다. 마케터가 첫 모델로 BG/NBD를 쓸 때는 “평소 운영 패턴이 일정한 채널”에 한정하는 게 안전합니다.
7-3. 객단가 변동이 큰 카테고리
BG/NBD는 거래 횟수만 다룹니다. 객단가 분산이 큰 카테고리에서는 거래 횟수 예측이 정확해도 LTV 추정은 흔들립니다. 객단가는 별도로 Gamma-Gamma 모델(lifetimes 패키지에 같이 들어 있음)로 추정해 곱해야 LTV가 완성됩니다.
8. 마치며 — LTV 모델을 처음 도입할 때 한 가지 원칙
BG/NBD를 처음 도입할 때 마케터가 가장 많이 물어보는 질문은 “정확도가 얼마나 되나요”입니다. 더 좋은 질문은 “이 모델 결과를 단독으로 의사결정에 쓰지 않는다”는 약속입니다.
LTV는 본질적으로 미래 예측이고, 미래는 흔들립니다. BG/NBD의 점추정은 캠페인 타겟팅 우선순위·예산 배분의 한 입력일 뿐, 그 자체가 결론이 되어선 안 됩니다. Conformal Prediction으로 보증 구간을 씌우거나, 베이지안 CAC/LTV와 결합해 채널 LTV 분포까지 같이 보는 운영이 안전합니다.
다음 글에서는 마케팅 데이터의 토대가 되는 식별·타깃팅 인프라가 어떻게 바뀌고 있는지, Privacy Sandbox를 다룹니다. 모델이 좋아도 데이터의 정의가 바뀌면 의사결정이 함께 흔들립니다.
참고
- Fader, Hardie & Lee (2005), Counting Your Customers the Easy Way: An Alternative to the Pareto/NBD Model — BG/NBD 원전 논문
- Schmittlein, Morrison & Colombo (1987), Counting Your Customers: Who Are They and What Will They Do Next? — Pareto/NBD 원전, BG/NBD의 부모
- Fader & Hardie — RFM and CLV Resources — Bruce Hardie의 무료 노트 모음. BG/NBD·Gamma-Gamma 표준 자료
- lifetimes — Python 라이브러리 — BG/NBD·Pareto/NBD·Gamma-Gamma를 한 패키지로
- PyMC-Marketing — CLV utilities — BG/NBD·Pareto/NBD를 베이지안으로 푸는 최신 도구
- huny.log 내부 글: CAC·LTV를 베이지안으로, Conformal Prediction — LTV 운영의 보완 도구
그로스해킹 카테고리의 다른 글
전체 보기 →-
2026·05·16
AARRR을 진짜 운영하는 법 — North Star metric, funnel ops, growth loop의 실전 가이드
AARRR(acquisition·activation·retention·referral·revenue)는 그로스해킹의 기본 프레임이지만 실제 운영에서는 자주 깨집니다. North Star metric 정의, 단계별 funnel ops, growth loop 설계까지 실전 가이드로 정리합니다.
-
2026·05·10
코호트 LTV 곡선 — 누적 매출 그래프 그리고 해석하기
평균 LTV 한 숫자로는 채널·시즌·세그먼트 차이가 안 보입니다. 코호트별 누적 매출 곡선을 그려 그 차이를 시각적으로 잡고, 곡선 모양으로 운영 결정을 내리는 표준 워크플로.
-
2026·05·10
ROAS·CAC·LTV — 세 숫자 서로 다른 질문에 답하는 이유
회의에서 ROAS만 들고 가면 장기·LTV가 빠지고, CAC만 보면 광고 효율이 빠집니다. 세 숫자를 한 슬라이드에 입체적으로 두는 표준 양식과 의사결정 프레임.
-
2026·05·10
CAC Payback period — 광고비를 몇 개월 만에 회수하는가
CAC 한 번 쓰고 끝이 아닙니다. 그 광고비를 매출로 회수하는 데 몇 개월 걸리는지가 현금흐름·재투자 속도를 결정합니다. payback period 계산·운영 룰·SaaS vs 이커머스 차이.