LTV 프로젝트 초반 스테이지에서 LTV 예측을 위해 사용했던 BYTD (Buy Till You Die) 확률 모델과 MCMC (Markov Chain Monte Carlo) 시뮬레이션 기법에 대해 설명합니다.
BYTD 확률 모델은 마케팅 분야에서 고객의 생애 가치를 예측하는 데 널리 사용되는 확률 모델입니다. 이 모델을 통해 유저의 매출 패턴을 특정 확률 분포로 표현할 수 있습니다.
확률 분포의 파라미터는 MCMC라고 불리는 베이지안 기반의 시뮬레이션 기법을 사용하여 추정했습니다. MCMC를 비롯한 베이지안 방식은, 단순 예측값 뿐만 아니라 불확실성까지 함께 예측할 수 있는 장점이 있습니다.
BYTD (Buy Till You Die) 모델은 LTV의 한 모델링 방법으로, 고객의 유입 시점부터 이탈 시점까지의 구매 활동을 확률 분포로 표현하는 방식입니다. 현실적인 구매 패턴들은 몇 가지 확률 분포로 표현하기에는 너무 복잡하고 다양하기 때문에, 몇 가지 가정들을 통해 단순화해서 표현합니다. 당시 데브시스터즈에서 LTV에 설정한 주요 가정들은 다음과 같습니다.
이런 가정들 하에서 LTV는 “고객이 유입 후 365일 동안, 이탈하기 전까지 발생하는 누적 매출액”으로 정의할 수 있습니다. 이를 수식으로 표현하면 다음과 같습니다.
\[LTV_i = \sum_{t=0}^{T-1} V_t \cdot I(t < T_i)\]이 때 $V_t$는 한 코호트에 대해서 일정하다는 가정을 적용합니다. 이는 타 게임의 유저 분석을 통해서 얻었던 경험을 적용한 결과입니다. 그 일정한 값을 $\bar{V}$라고 하면, 다음과 같이 LTV를 표현할 수 있겠습니다.
\[LTV_i = \bar{V} \cdot T_i\]이렇게 문제를 단순화하고 나면, $\bar{V}$는 코호트의 ARPU(Average Revenue Per User)를 기댓값으로 하는 확률 변수로 생각할 수 있습니다. 이는 단순하게 코호트 내에서 하루 단위의 ARPU를 plug-in 했습니다. 이제 고객의 생존 기간인 $T_i$를 예측하는 것이 남았습니다.
Life Time $T_i$ 역시도 별도의 모델링이 필요합니다. 이 때 모델링은 여러 방법이 있겠지만, 가장 직관적인 방식으로 유저의 이탈을 coin flip과 같은 Bernoulli 시행으로 바라봅니다. 이런 coin flip 모델에서 이탈율이 $\theta$일 때, $t$ 일 이후에도 고객이 이탈하지 않았을 확률, 즉 survivor function $S(t)$ 는 다음과 같습니다.
\[S(t) = (1-\theta)^{t}\]어떤 고객의 life time이 $t$라는 뜻은, 유입일로부터 $t-1$일 이후까지는 생존했으나, $t$일 후에 이탈했다는 뜻입니다. 즉, 이탈율이 주어졌을 때 life time이 $t$일 확률 $P(T_i=t \mid \theta)$는 다음과 같이 shifted geometric 분포로 표현할 수 있습니다.
\[\begin{align*} P(T_i = t | \theta) &= \theta \cdot S(t-1) \\ &= \theta \cdot (1-\theta)^{t-1} \end{align*}\]고전적인 통계적 추론 방식이었다면, 이탈율 $\theta$ 값이 하나로 정해져 있다는 전제 하에서 이를 점추정으로 예측하려고 했을 것입니다. 하지만 이탈율이 단순히 하나의 값이 아니라, 유저마다 조금씩 다를 수 있다고 볼 수도 있습니다. 다시 말해 $\theta$는 어떤 특정한 확률 분포를 가진다고 생각하고 이 분포를 예측하고자 하는 방식이 있는데, 이를 베이지안 접근법이라고 합니다.
베이지안 접근법에서는 $\theta$가 확률 변수이므로, 위에서 계산한 $T_i$에 대한 shifted geometry 분포를 확률이라고 부를 수 없게 됩니다. $\theta$가 고정된 값이 아니기 때문입니다. 대신, 베이지안에서는 $T_i=t$로 측정된 한 고객에 대한 “likelihood”로서 다루게 됩니다.
\[L(\theta;t) = \theta \cdot (1-\theta)^{t-1}\]데이터 측정 전의 $\theta$의 확률 분포를 prior 분포라고 부릅니다. Prior 분포는 일반적으로 likelihood가 어떤 함수인지에 따라서 선택을 하는데, Binomial 계열의 likelihood에는 Beta 분포를 활용합니다. 이 likelihood, prior의 조합을 sBG (shifted Beta-Geometry) 모델이라고 부릅니다.
\[P(\theta | \alpha, \beta) = \frac{1}{B(\alpha, \beta)}\theta^{\alpha - 1}(1-\theta)^{\beta - 1}\]이제 남은 것은 7일 간의 고객들의 이탈 데이터를 측정하는 것입니다. 측정 기간을 7일로 정한 것은 최대한 빨리 결정해야 하는 비즈니스 요구사항과 모델 정확도 간의 균형을 맞추기 위한 설정이었습니다. 7일 간의 측정을 통해 실제 데이터 $D: n_1, …, n_7, n_+$를 구했다고 해보겠습니다. 여기서 $n_t$는 life time이 $t$로 측정된 유저 수, $n_+$는 7일 동안 이탈하지 않아서 아직 life time을 알 수 없는 유저 수 입니다. 위에서 적은 $L(\theta;t)$는 고객 단 한 명의 likelihood 였습니다. 데이터 $D$를 통해 구한 모든 고객의 likelihood는 서로 독립이라는 가정 하에 누적 곱으로 구할 수 있습니다.
\[L(\theta;D) = \left[(1-\theta)^{7}\right]^{n_{+}} \cdot \prod_{t=1}^{7}\left[\theta\cdot(1-\theta)^{t-1}\right]^{n_t}\]이제 우리가 알고 싶은 것은 데이터 $D$와 제일 잘 맞는 posterior 분포를 추정하는 것입니다. 이를 위해 MCMC(Markov Chain Monte Carlo)라는 베이지안 시뮬레이션 방식을 활용했습니다. MCMC는 확률 분포 파라미터를 조금씩 바꿔가면서 posterior 분포를 수치적으로 근사하는 방식입니다.
Posterior 분포를 구하려면 prior 분포와 likelihood 함수를, 확률 변수를 제외하고 그 형태를 알아야 합니다. 이 중에서 likelihood는 데이터 측정을 통해 고정된 함수로 만들어냈습니다. 남은 것은 $\theta$의 prior 분포의 하이퍼파라미터인 $\alpha, \beta$ 입니다. 이 하이퍼파라미터들 역시 어떤 확률 분포를 따른다고 가정하는데, 이를 hyperprior 분포라고 부릅니다. 아래에서는 $P(\alpha, \beta)$라고 표현했습니다. 최종적으로 우리가 구하고 싶은 posterior는 결국 $P(\alpha, \beta \mid D)$가 됩니다.
\[P(\alpha, \beta | D) \propto \int L(\theta;D) \cdot P(\theta|\alpha, \beta) d\theta \cdot P(\alpha, \beta)\]MCMC 시뮬레이션은 이 $\alpha, \beta$를 샘플링하고, 이 샘플링 과정이 posterior 분포가 더 높은 쪽에서 더 자주 뽑히도록 조정합니다. 이를 통해 하이퍼파라미터 공간에서 posterior 값을 전체적으로 탐색하되, posterior가 높은 쪽은 더 자세히 샘플링하도록 하여 효율적으로 탐색할 수 있게 됩니다. 구체적으로는 NUTS(No U-Turn Sampler)라는 방식을 사용했습니다.
LTV를 최종 예측할 때는 MCMC를 실행하면서 나온 $\alpha, \beta$ 샘플로부터 차례로 샘플링함으로써 life time의 예측 범위를 구할 수 있습니다. 일반적으로는 90% CI(credible interval) 같은 범위를 제공하지만, 비즈니스 의사결정을 쉽게 하기 위해 LTV Q1, Q2, Q3를 제공했습니다. 보수적인 예측치와 낙관적인 예측치를 동시에 제공해 각 캠페인 별 상황에 맞게 마케터들이 의사결정을 할 수 있었습니다.