LTV는 Lifetime Value, “고객의 생애 가치”라고 불리는 지표로, 고객이 평생동안 기업에게 어느 정도의 가치를 가져다 주는지를 정량화한 지표입니다. 이 LTV는 확률 기반 모형으로 특정한 시점 에서 고객마다 어느 정도의 생애 가치를 가지는지 측정할 수 있도록 합니다.
구체적으로 고객의 생애 가치를 어떻게 추정할까요?
“고객의 과거 구매 정보”라 함은 크게 네 가지 정보가 필요합니다.
미래의 예상 구매 횟수는 첫 구매 ~ 집계일까지의 시간 (Time), 첫 구매 ~ 마지막 구매까지의 시간 (Recency), 첫 구매 ~ 집계일까지의 구매 횟수 (Frequency) 줄여서 “RFM”이라 부릅니다의 정보를 가지고 BG/NBD라는 모델로 추정됩니다.
미래의 예상 평균 수익은 구매 금액 (Monetary Value)의 정보를 가지고 Gamma-Gamma 모델로 추정이 됩니다.
앞에서 확률적으로 모델을 추정한다 말씀을 드렸는데요. 모델 이름도 사실 확률 분포의 이름에서 따왔습니다. BG/NBD는 베타 분포와 기하 분포의 결합과, 음이항 분포로 구성되고(Beta-Geometric / Negative Binoimal Distribution), Gamma-Gamma는 두 감마 분포의 결합으로 이루어집니다.
구체적인 모형을 설명하기에 앞서 “죽을 때까지 구매하는” (BTYD; Buy Till You Die) 모형어감이 그러니 이제부터 BTYD 모형이라 부르겠습니다의 컨셉부터 설명드리겠습니다. BTYD 모형을 바탕으로 BG/NBD 모형을 구성합니다.
위 그림은 고객 4명의 과거 구매 기록을 도식화한 것입니다. 예를 들어 첫 번째 고객은 6번 구매했고, 세 번째 구매가 컸었네요! 세 번째 고객은 첫 번째 고객보다 구매 주기도 길고 지갑 크기도 작은 고객입니다. 이처럼 BTYD 모델은 과거의 구매 횟수와 구매 금액과 같은 데이터를 바탕으로 고객의 생애 가치를 계산합니다. BTYD는 다음과 같은 질문에 답할 수 있습니다.
고객이 남아있는 동안, 고객의 구매 횟수는 일정한 기간 동안의 구매율을 모수로 하는 포아송 분포를 따릅니다. 사실 포아송 분포는 “구매 횟수”에 대한 분포라 구매할 확률을 모수로 하지 않고, 정해진 시간 동안의 예상 구매 횟수를 모수로 하는데요.
여기서 전 왜 원 논문에서는 모수를 구매 횟수가 아닌 구매율 (transaction rate)로 표현하는가가 이해가 되지 않았었죠. 아마도 일정한 기간을 어떻게 정의하느냐에 따라서 충분히 비율로 표현할 수 있기 때문이라 생각이 듭니다. 예를 들어, 1년에 30번 구매한 고객이 있다면 구매 횟수가 Pois (30)을 따른다고 말할 수도 있겠지만, 단위 기간을 이보다 더 좁은 기간인 1일로 정의한다면 1일에 (30 / 12개월) / 30일 = 1/12의 확률로 구매를 한다 말할 수 있기 때문에 Pois(1/12)라고 말할 수 있는 것이죠.
이 구매율은 고객마다 다르다고 가정하고, 전체 고객들의 구매율은 Gamma(r,)를 따른다 가정합니다.
각 고객들은 이탈률 를 가집니다. 즉, 고객들은 구매를 한 후에 특정한 확률로 이탈함을 가정하는 것입니다. 이러한 이탈 확률은 고객마다 달라 Beta (a,b)를 따른다 가정합니다. 보통 확률에 대한 분포를 가정할 때 범위가 (0,1)로 정해져있는 베타 분포를 가정하곤 하는데, 감마 분포를 가정한 이유도 위와 같은 이유이지 않을까 생각해봅니다.
위에서 말했듯 BG/NBD 모형은 BTYD 모형에 기반하여 분포를 가정합니다. 구체적으로 분포 가정은 다음과 같습니다.
여기서 전 두 가지 의문을 가졌었는데요. 대학교 때의 확률 분포 지식을 단전에서 끌어내보았습니다.
모형 이름이 BG/NBD인데 B에 해당하는 베타 분포 (Beta Distribution), G에 해당하는 기하 분포 (Geometric Distribution)은 있는 반면 NBD에 해당하는 음이항 분포 (Negative Binomial Distribution)는 어디서도 찾아볼 수 없는 것이 이상했습니다.
결론부터 말하면 포아송 분포와 감마 분포의 결합이 바로 음이항 분포 (Negative Binomial Distribution)에 해당합니다. 이를 Poisson-Gamma Mixture라 부릅니다.
대학교 때 여러 확률 분포를 배우는데 이들의 상생 관계를 이해하면 더 깊게 분포를 이해하실 수 있습니다. 예컨대,
이런 상생 관계 말이죠! 그 중에서 포아송과 감마 분포의 결합은 음이항 분포로 표현이 가능합니다. 포아송 분포와 감마 분포를 결합한다는 건 위에서의 가정처럼 포아송 분포의 모수인 가 감마 분포를 따르도록 만드는 것을 의미합니다.
라면 이에 대한 marginal 분포는 다음의 음이항 분포 (Negative Binomial (r,T / ( +T))을 따르게 됩니다.
구체적인 유도 과정은 [link]
를 참조 바랍니다.
한 줄 요약하면 위의 BG/NBD 모형의 가정 중 포아송 분포와 감마 분포에 해당하는 부분이 결국 “NBD”에 해당하는 부분입니다.
위 설명 드린 각 분포의 특성은 다음과 같습니다.
예를 들어 봅시다. 2022년 이후 제 컬리 주문 내역을 보니 총 8번 구매했고, 실제 아래와 같이 구매하였습니다.
날짜 | 구매 금액 |
---|---|
2022.01.16 | 44,159원 |
2022.01.24 | 44,385원 |
2022.02.03 | 40,700원 |
2022.02.05 | 43,520원 |
2022.02.26 | 48,140원 |
2022.03.16 | 27,186원 |
2022.03.23 | 37,161원 |
2022.04.10 | 40,060원 |
고객마다 별개의 과거의 구매 정보 RFM (Recency, Frequency, T)을 가지고 위 분포를 따른다 가정하여 가능도 함수를 구해 기댓값을 구하면 고객마다 다른 예상 구매 횟수를 모델링할 수 있는 것입니다!
BG/NBD 모델은 고객마다 다른 구매 횟수를 모델링했다면, Gamma-Gamma 모델은 고객별 구매 금액 정보들을 이용합니다.
Gamma-Gamma 모델은 다음과 같은 가정을 하게 됩니다.
이에 따라 다음과 같이 분포를 가정하여 가능도를 구하게 됩니다.
궁금하지 않습니까? 아까는 감마 분포가 사건이 r회 일어날 때까지의 총 시간이라 해놓고 평균 구매 금액 도 감마 분포를 따른다고 할까요? 처음 모델을 개발한 Schmittlein and Peterson (1994)는 건별 구매 금액이 정규 분포를 따른다고 가정했다고 합니다. 그러나 이렇게 가정했을 때의 문제는
돈을 쓰는 행위를 생각해보면 무조건 구매 금액이 0원보다 많고, 어떤걸 사느냐에 따라서 가격이 천차 만별이기 때문에 대칭적이지 않습니다. 위 예시는 “컬리에서 식재료를 구매”하는 것이기 때문에 그래도 일관성 있게 4만 원 안팎으로 사긴 하지만, 갑자기 친구들을 초대해서 10만 원을 쓸 수도 있고 가족과 추석을 보내 기 위해 20만 원을 쓸 수 있겠죠. 이처럼 구매 금액 자체는 대칭적이기보단 비대칭적이고, 오른쪽으로 치우친 (Right-Skewed) 형태를 띄게 됩니다.
그렇기 때문에 감마 분포가 제격입니다. 0 이상의 값을 가지고, 모수 2개로 비대칭적인 형태를 쉽게 만들 수 있기 때문입니다. 감마 분포가 “시간”의 분포로 쓰일 땐 보통 포아송 분포와 같이 쓰일 때나 그런 것이고, 이 자체로는 0 이상의 범위를 가지고 비대칭적인 분포를 가지는 무언가에 모델링할 수 있는 좋은 분포인 것입니다.
LTV는 앞서 말씀드렸듯이 미래 시점까지의 예상 구매 횟수 * 예상 구매 금액으로 계산합니다. 이 BG/NBD + Gamma-Gamma 모델이 가지는 장점은 고객마다 다른 미래 가치를 계산해주기 때문에 고객 단위의 타겟팅이 가능하다는 점입니다.
고객마다 학습에 들어가는 T (Time), R (Recency), F (Frequency), M (Monetary) 정보와 결합하여
등으로 유저를 분류하여 이에 맞게 고객을 관리하는 것이 가능합니다.
NC 소프트에서는 “광고 성과 측정 방법”을 개선하는 데에 있어
그 외에도 “고객의 생애 가치”를 이용해서 어떤걸 할 수 있을지 상상력을 펼쳐보는 것도 좋은 것 같습니다 :> (무궁무진하다!)
원래의 계획은 Python으로 실행하는 것까지였는데… 다음 번에 lifetimes 패키지를 이용해서 LTV를 추정해보는 실습에 대해 포스팅하도록 하겠습니다.