BG/NBD와 Gamma-Gamma

Ryan·2025년 2월 5일

Python/Pandas

목록 보기
21/23

1. CLTV 예측의 필요성

CLTV(Customer Lifetime Value, 고객 생애 가치) 예측은 기업이 고객 관계를 효과적으로 관리하고, 수익 극대화를 위한 전략을 수립하는 데 필수적인 요소입니다. 이를 위해 BG/NBD(Beta-Geometric/Negative Binomial Distribution) 모델과 Gamma-Gamma 모델이 널리 사용됩니다.

이 모델들은 다음과 같은 문제를 해결하는 데 도움을 줍니다:

  • 고객의 재구매 가능성 예측
  • 고객별 평균 구매 금액 예측
  • 장기적으로 높은 가치를 가진 고객 식별

2. BG/NBD 모델: 고객의 재구매 예측

BG/NBD 모델은 고객의 과거 구매 데이터를 기반으로 미래 재구매 가능성을 예측하는 데 사용됩니다.

BG/NBD 모델의 핵심 개념

  1. 고객은 일정한 확률로 구매를 진행하며, 이는 Negative Binomial Distribution(음이항 분포)을 따른다고 가정합니다.
  2. 고객이 비활성 상태로 변하는 확률은 Geometric Distribution(기하 분포)을 따릅니다.
  3. 고객의 구매 빈도와 비활성 상태로 변하는 확률은 모두 개별적으로 다릅니다.

BG/NBD 모델 학습 과정

  • 과거 데이터를 학습(train)하여 고객의 재구매 패턴을 파악
  • 특정 기간 동안의 고객 행동을 분석하여 미래의 구매 가능성을 예측(validate)

BG/NBD 모델 코드 예시

from lifetimes import BetaGeoFitter

# 모델 생성 및 학습
bgf = BetaGeoFitter(penalizer_coef=0.0)
bgf.fit(data['frequency'], data['recency'], data['T'])

# 모델 정보 출력
print(bgf)

이 코드에서는 frequency(총 구매 횟수), recency(가장 최근 구매 시점), T(총 관찰 기간)를 이용하여 모델을 학습합니다.


3. Gamma-Gamma 모델: 고객별 평균 구매 금액 예측

BG/NBD 모델은 재구매 가능성을 예측하지만, 구매 금액 자체는 예측하지 못합니다. 이를 보완하기 위해 Gamma-Gamma 모델을 함께 사용합니다.

Gamma-Gamma 모델의 핵심 가정

  • 구매 빈도와 구매 금액 사이에는 상관관계가 없다고 가정
  • 고객의 구매 금액은 감마 분포(Gamma Distribution)를 따름

Gamma-Gamma 모델 학습 과정

  1. 고객별 구매 빈도와 구매 금액 간의 상관관계를 검토하여 가정이 충족되는지 확인
  2. 학습(train)하여 고객별 평균 구매 금액을 추정

Gamma-Gamma 모델 코드 예시

from lifetimes import GammaGammaFitter

# Pearson 상관계수 확인
data[['monetary_value', 'frequency']].corr()

# Gamma-Gamma 모델 학습
ggf = GammaGammaFitter(penalizer_coef=0)
ggf.fit(data['frequency'], data['monetary_value'])

# 모델 정보 출력
print(ggf)

이 코드에서는 고객의 frequency(구매 빈도)와 monetary_value(구매 금액)를 학습하여 평균 구매 금액을 예측합니다.


4. 머신 러닝을 활용한 CLTV 예측 (Lifetime 패키지 기반)

lifetimes 패키지는 머신 러닝을 활용한 CLTV 예측을 위한 다양한 확률 모델을 제공합니다. 이 패키지는 다음과 같은 핵심 모델을 포함하고 있습니다:

(1) Pareto/NBD 모델

  • BG/NBD 모델과 유사하지만, 고객의 이탈 확률이 일정하지 않고 개별적으로 다를 수 있음을 가정합니다.
  • 고객이 얼마나 자주 구매할지를 예측하는 데 사용됩니다.

(2) Modified Beta Geometric Model (MBG/NBD)

  • BG/NBD 모델의 변형 버전으로, 고객이 더 높은 확률로 비활성 상태가 될 가능성이 있는 시나리오를 다룹니다.

(3) Customer Transaction Prediction

  • 고객이 특정 기간 내에 구매할 가능성을 예측하는 데 사용됩니다.
  • 주어진 기간 동안 고객이 몇 번 구매할지를 머신 러닝 방식으로 분석합니다.

예제: 고객별 미래 구매 예측 (Predicting Future Purchases)

# 30일 동안의 예상 구매 횟수 예측
bgf.predict(30, data['frequency'], data['recency'], data['T'])

위 코드를 실행하면, 특정 고객이 30일 동안 몇 번 구매할지를 예측할 수 있습니다.


5. BG/NBD + Gamma-Gamma 모델을 활용한 CLTV 계산

이제 두 모델을 결합하여 CLTV를 예측할 수 있습니다.

# 고객별 예상 평균 구매 금액 예측
expected_monetary_value = ggf.conditional_expected_average_profit(
    data['frequency'], data['monetary_value']
)

# 고객별 예상 구매 횟수 예측
expected_purchases = bgf.predict(30, data['frequency'], data['recency'], data['T'])

# CLTV 계산
cltv = expected_monetary_value * expected_purchases

이렇게 하면 고객별로 미래 일정 기간(예: 30일) 동안 발생할 총 매출을 예측할 수 있습니다.


6. 결론 및 활용 방안

  • 고객 유지 전략: CLTV가 높은 고객에게 맞춤형 혜택 제공
  • 마케팅 비용 최적화: 가치 있는 고객을 대상으로 집중적인 캠페인 운영
  • 제품 추천 및 개인화 서비스: 구매 패턴을 기반으로 한 맞춤형 제안 제공

BG/NBD 및 Gamma-Gamma 모델을 활용하면 CLTV를 보다 정밀하게 예측하고, 고객 중심의 전략을 구축할 수 있습니다. 기업이 장기적인 성장과 수익성을 확보하는 데 있어 필수적인 분석 방법이라고 할 수 있습니다.

0개의 댓글