Product

여러 기간에 걸친 사용자 행동 분석 - Part 2 : LTV

LTV를 통해 숨고 사용자들의 행동을 분석해보았습니다

2023-07-27 Furiosa Hong

안녕하세요.

Data Chapter의 Data Scientist인 Furiosa입니다.

지난 포스팅이었던 리텐션에 이어서 이번 포스팅에서는 LTV에 대해 이야기 해보고자 합니다. LTV는 리텐션과 더불어 여러 기간에 걸친 유저 행태를 분석하는 대표적인 지표입니다. 이번 포스팅에서는 LTV에 대한 간단한 개념 소개에 이어서 기존 LTV 계산식의 도출 과정과 한계점을 이야기하고, 다음으로 숨고에서 사용 중인 LTV 수식과 인사이트까지 차례로 소개해보겠습니다.

LTV 개념

LTV(Life Time Value)는 고객 평생 가치, 고객 생애 가치 등으로 불리며, '고객이 평생 동안 제품을 사용하면서 지불하는 총 금액' 입니다. 일상적으로 사용되는 단어는 아니지만, 마케팅 영역에서 고객 획득 비용(Acqusition Cost)에 대응되는 개념으로 널리 사용되고 있습니다.

예를 들어, 광고 매체를 통해서 유저 1명을 데려왔다고 생각해보겠습니다. 앱 사용은 보통 1회로 그치지 않고 장시간 사용하게 됩니다. 따라서 이를 고려하지 않는다면 개인 1명이 가지는 가치를 과소평가하게 되겠죠. 이렇게 여러 기간에 걸쳐 재사용하는 유저의 가치를 제대로 측정하기 위해 LTV라는 개념이 마케팅 영역에서 널리 사용되고 있습니다. 이처럼 회사가 고객의 생애 주기에 주목한 것은 궁극적으로 고객을 바라보는 시각이 정적인 영역에서 동적인 영역으로 확대된 것을 의미합니다.

하지만 실제로 LTV를 계산하려다 보면 개념 자체가 상당히 추상적이어서 쉽게 손이 가지 않습니다. LTV를 검색해보면 수많은 정의와 산출식이 존재하는데, 이것 역시 LTV 개념이 모호하기 때문입니다. 구체적으로 LTV에서 어떤 부분이 사람들에게 어려움을 느끼게 할까요?

LTVV1+V2+V3+V4+...(1)=V1+E[V2Ω1]+E[V3Ω1]+...t=1E[VtΩ1](2) \begin{alignedat}{2} LTV & \equiv V_{1}+V_{2}+V_{3}+V_{4}+... \quad\quad &&{(1)}\\ & = V_{1}+E[V_{2}|\Omega_{1}]+E[V_{3}|\Omega_{1}]+... \equiv \sum_{t=1}^{\infty} E[V_{t}|\Omega_{1}] \quad\quad&&{(2)} \end{alignedat}

개념적으로 LTV는 '무한대의 합' 이라는 수학적인 컨셉을 다루고 있습니다. 이는 LTV의 정의상 수명이 무한인 사람이 사용하는 금액을 모두 더해야 하기 때문입니다. 하지만 인간은 영원히 살 수 없기 때문에 고객을 개인으로 한정짓는 대신 개인이 모인 집단으로 그 의미를 확장합니다. 즉, LTV에서의 고객은 무한대로 사는 '유저 집단'인 셈입니다.

이러한 무한대의 합이 잘 정의(Well-Defined)되기 위해서는 일단 더해지는 숫자들이 점차적으로 작아지는 숫자여야 합니다. 그래야 모든 항을 더했을 때 어떤 숫자로 수렴하기 때문입니다. 우리가 배웠던 수학 개념 중 무한 등비 급수 파트를 생각해보면 이해에 도움이 될 것입니다.

이때 우리가 미래에 대해서 모두 알 수 있다면 LTV는 첫 번째 수식과 같이 숨고의 사용자인 고수들의 평균 사용 금액을 모두 구해서 더하면 됩니다. 하지만 현실에서 미래는 예측을 해야 되는 영역입니다. 즉 우리는 1기만 관측 가능하고 1기 이후 2기부터 고수 사용 금액은 기본적으로 관측 불가능합니다. 따라서 2번 식처럼 기대(Expectation) 금액 개념이 등장하게 됩니다. 기대 금액 또는 기대 수익은 금융 분야에서 많이 사용되는 개념입니다. 불확실성하에서 개인이 얻을 것으로 기대되는 금액을 의미하며 보통 확률과 금액을 곱한 값으로 정의됩니다. LTV에서의 기대 금액은 고수가 생존할 확률과 고수가 생존 시 사용 금액의 결합이 됩니다.

2번 식에서 Ω1\Omega_{1}은 Information Set이라고 하며 1기에 이용 가능한 모든 데이터를 의미합니다. 따라서, E[V2Ω1]E[V_{2}|\Omega_{1}]이라는 것은 1기의 데이터로 예상한 2기 사용 금액이라는 의미입니다. 여기까지는 LTV라는 개념을 수식으로 다시 쓴 것에 불과합니다.

LTV=V1+E[V2Ω1]+E[V3Ω1]+E[V4Ω1]+...(3)=V+rV+r2V+r3V+...(4)=V1r(5) \begin{alignedat}{2} LTV & = V_{1} + E[V_{2}|\Omega_{1}] + E[V_{3}|\Omega_{1}] + E[V_{4}|\Omega_{1}] + ... \quad\quad &&{(3)}\\ & = V + r*V + r^{2}*V + r^{3}*V + ... \quad\quad &&{(4)}\\ & = \frac{V}{1-r}\quad\quad &&{(5)} \end{alignedat}

사람들에게 친숙한 LTV를 구하는 공식은 아마 5번 식일 것입니다. 해당 수식(이하 '기존 LTV 수식')을 보면, LTV는 고수 평균 사용 금액 VV 와 리텐션 rr 으로부터 추산됩니다. 그리고 마지막 식이 유도되는 과정을 각각 3번, 4번 식을 통해 확인할 수 있습니다. 4번 식을 보면, 첫 번째 항은 1기에 사용 금액, 두 번째 항은 2기 기대 사용 금액, 세 번째 항은 3기 기대 사용 금액이 됩니다. 이렇게 보면 5번 식은 무한 등비 급수 형태의 4번 식을 풀어낸 것이 됩니다.

3번 식에서 4번 식으로 넘어가기 위해서는 두 가지 가정이 필수적입니다. 첫번째로, 유저들은 매 기간 동일한 VV 만큼 소비해야 합니다. 이는 생존 기간별 고수 사용 금액에 대한 가정입니다. 두번째로, 유저들의 리텐션은 rjr^{j} 형태로 감소하게 됩니다. 이는 리텐션에 대한 가정으로, 경과 시점 jj에 대해서 지수 함수 형태로 감소하는 것을 가정하고 있습니다. 과연 이 가정은 적절한 것일까요?

기존 LTV 산출식의 한계점

기존 LTV 수식은 크게 평균 고수 사용 금액과 리텐션에 대한 강한 가정을 내포하고 있습니다. 그리고 이러한 가정이 필요한 가장 큰 이유는 무한대의 합을 잘 정의하여 수식을 간단하게 만들기 위함입니다. 특히 고수가 사용하는 금액은 생존 기간에 대해서 우상향하는 경향을 보일 것입니다. 왜냐하면 보통 더 강한 인텐션을 가진 유저들이 오랫동안 생존하기 때문입니다. 따라서 생존한 사람들의 사용 금액은 생존 기간에 대해서 전반적으로 증가하는 형태를 가질 것임을 추측해볼 수 있습니다.

고수 평균 사용 금액

그림 1 : 2022년 5월 2일 생존 기간별 고수 사용 금액 시리즈 (명목)
그림 1 : 2022년 5월 2일 생존 기간별 고수 사용 금액 시리즈 (명목)

그림 1은 2022년 5월 2일 코호트의 고수 사용 금액 시리즈입니다. 그림 1에서 두가지 특징이 관측됩니다.

먼저 그림에서 시리즈는 위아래로 크게 변화하고 있는데, 이는 요일 및 특수일 효과로 주 초반에서 주 후반으로 갈수록 사람들의 행동 패턴이 달라지기 때문입니다, 그리고 평일에 비해서 휴일에는 보통 사용 금액이 낮습니다. 요일 및 특수일 효과에 대해서는 이전의 포스팅을 참고해주세요.

다음으로 시리즈가 위로 상승한 것 같은 움직임을 보여줍니다. 이는 사용 금액이 가격에 의존하기에 가격 변경이 발생한 시점에서 단절이 발생되기 때문입니다. 이렇게 가격에 의한 단절이 있는 경우 분석 편의를 위해서 변수 실질화(Deflate)하여 분석하는 경우가 많습니다.

실질화

사용 금액을 실질화하면 tt기 코호트의 jj 시점 실질 사용 금액은 rst(j)=St(j)Ptrs_{t}(j)=\dfrac{S_{t}(j)}{P_{t}}로 정의됩니다. St(j)S_{t}(j)tt기 코호트의 jj 시점 명목 사용 금액, PtP_{t}tt 시점의 견적서 가격입니다. 이렇게 계산된 실질 변수는 보통 실물 단위로 해석되는데, 숨고에서는 견적서 갯수를 실질 변수로 해석하고 있습니다. 즉 실질 스펜드가 5.31이라면 고수는 견적서 5.31개 사용한다로 해석할 수 있습니다.

그림 2 : 2022년 5월 2일 생존 기간별 유저당 스펜드 시리즈 (실질)
그림 2 : 2022년 5월 2일 생존 기간별 유저당 스펜드 시리즈 (실질)

그림 2는 그림 1을 실질 변환한 실질 사용 금액입니다. 요일 및 특수일 효과는 여전히 남아 있으나, 그림 1과 다르게 추세적인 움직임은 관측되지 않습니다. 다음으로 데이터에 나타나는 요일 효과를 제거하기 위해 리텐션과 동일한 방법으로 생존 기간별 실질 사용 금액을 멱함수(power function)에 적합하였습니다.

그림 3 : 일별 고수 스펜드 시리즈 (3차원)
그림 3 : 일별 고수 스펜드 시리즈 (3차원)

그림 3에서 line by line으로 추정된 선은 생존 기간별 고수의 실질 사용 금액이 됩니다. 이 한 줄의 시리즈를 아래에서는 고수 사용 금액 시리즈라고 하겠습니다. 이 시리즈는 일 단위로 정의되기에, 이를 그래프로 그리면 3차원 평면 형태가 나오게 됩니다. 특정 일 코호트에서는 고수 사용 금액 시리즈는 우상향하고, 다른 일 코호트에서는 우하향하기도 합니다. 즉 이 시리즈는 수평적으로 움직이는 것이 아니라 수많은 움직임을 가지고 있습니다. 따라서 생존 기간별 동일한 사용 금액으로 가정한 기존 LTV 수식의 가정은 현실에 비추어 다소 강한 가정임을 확인할 수 있습니다.

리텐션

기존 LTV 수식에서는 리텐션이 지수함수 형태로 감소한다고 가정하고 있습니다. 이것이 얼마나 강한 가정인지는 앞선 글에서 다루었는데요. 아래에서는 이 가정의 비현실성을 보다 극명하게 보여주고자 그래프로 비교해보았습니다.

그림 4 : 2022년 12월 10일 코호트 리텐션 데이터
그림 4 : 2022년 12월 10일 코호트 리텐션 데이터

그림 4에서 파란색은 지수함수로 감소하는 형태를 그린 것이고 주황색은 실제 데이터로 계산된 리텐션입니다. 리텐션 시리즈는 자연스럽게 우하향 하는 형태를 보여줍니다. 하지만 지수 함수에서 가정하는 것과 다르게 아주 빠르게 감소하지는 않습니다. 따라서 지수 함수 형태의 리텐션은 적어도 일 단위에서는 비현실적인 가정이 됩니다. 이렇게 강한 가정을 사용하는 이유는 LTV의 무한대 합을 정의하기 위함입니다. 실제로 이러한 가정을 넣지 않으면, LTV는 특정 숫자에 수렴하지 않게 됩니다.

LTV=V1+E[r2Ω1]E[V2Ω1]+E[r3Ω1]E[V3Ω1]+...(6)j=1E[rjΩ1]E[VjΩ1](7)j=1wE[rjΩ1]E[VjΩ1](8) \begin{alignedat}{2} LTV & = V_{1} + E[r_{2}|\Omega_{1}]*E[V_{2}|\Omega_{1}] + E[r_{3}|\Omega_{1}]*E[V_{3}|\Omega_{1}]+... \quad\quad&&{(6)} \\ & \equiv \sum_{j=1}^{\infty} E[r_{j}|\Omega_{1}] *E[V_{j}|\Omega_{1}]\quad\quad&&{(7)} \\ & \approx \sum_{j=1}^{w} E[r_{j}|\Omega_{1}]*E[V_{j}|\Omega_{1}]\quad\quad&&{(8)} \end{alignedat}

최종적으로 숨고에서 사용하는 LTV 산출식은 8번 식입니다. 간단하게 리텐션을 예측하고, 고수당 사용 금액을 예측하여 이를 각각 곱해주고 더하는 구조입니다. 숨고의 LTV 방식은 무한대의 합이 수렴되기 위해서는 많은 기간이 필요하므로 LTV가 커지게 되는데, 이를 해결하기 위해서 LTV를 일정 window ww 로 제한하였습니다. 7번 식은 4번 식에 대응되는 수식으로, 1기 이후 금액은 기대 금액을 사용하며 이를 점차적으로 더해나간다는 의미입니다. 수식에서의 기대 금액은 리텐션과 고수 사용 금액의 곱으로 정의됩니다. 즉 새로운 LTV 공식은 1기 이후에는 리텐션과 고수 사용 금액을 각각 예측해야 하는 것이 특징입니다.

주요 결과

앞선 수식으로 LTV는 고수의 실질 사용 금액으로 계산된 LTV이기에 실질 LTV라고 할 수 있습니다. 따라서, 숨고의 실질 LTV는 숨고 고수 1명이 생애 주기 동안 사용하는 견적서 총량으로 해석할 수 있습니다.

고수 사용 금액 시리즈 추정 결과

그림 5 : day N 실질 사용 금액 시계열
그림 5 : day N 실질 사용 금액 시계열

그림 5는 day 1, day 30, day 180 사용 금액 시계열 그림입니다. day 1 사용 금액 시계열은 각 코호트별 다음날 생존시 평균적으로 얼마를 사용하는가를 나타냅니다. 3개의 day 를 뽑은 것은 각각 단기적인 사용 금액, 중기적인 사용 금액, 장기적인 사용 금액을 대표 한다고 생각하였기 때문입니다.

day 1 고수 사용 금액(파란색)은 시간에 대해서 레벨이 고정된 것 같은 움직임을 보여줍니다. 다만, day 30, day 180 에 비해서 위아래로 강한 변동성이 나타나고 있습니다. 움직임을 해석해보면, 3월에서 5월까지는 상대적으로 사용 금액이 크고, 10월, 11월은 상대적으로 작은 형태로 계절적인 패턴이 관측되고 있습니다.

일반적인 계절성과 다르게 동, 하계에 계절성이 강한 것이 아니라 봄, 가을에 계절성이 강한 것이 특징이었습니다. 이는 숨고에서 큰 비중을 차지하는 서비스가 홈리빙과 레슨 계열인데, 홈리빙은 동하계를 준비하는 특성을 가지고 있으며 레슨의 경우 학기 초에 상승 모멘텀을 가지기 때문입니다.

그림 6 : 일별 실질 사용 금액 시리즈의 추정치 시계열
그림 6 : 일별 실질 사용 금액 시리즈의 추정치 시계열

그림 6은 실질 사용 금액 시리즈의 멱함수 추정치들입니다. 파란색은 aa 파라미터의 추정치, 주황색은 bb 파라미터는 추정치이며, 일 단위 시리즈를 적합하였기에 추정치 역시 일 단위로 추정됩니다. aa 파라미터는 첫번째 생존 기간, day 1의 실질 사용 금액을 의미하기에 그림 5의 파란색 시계열과 유사한 움직임을 보여주고 있습니다.

bb 파라미터의 경우 0을 기준으로 등락을 반복하는 형태입니다. 이 파라미터는 시리즈의 기울기를 나타내기에 0이 되면 고수 사용 금액이 생존 기간별로 차이가 없다는 의미이고 0보다 크면 생존 기간에 대해서 우상향, 0보다 작으면 우하향 한다는 의미입니다. 따라서 bb 파라미터 추정치의 변화를 통해서 실질 사용 금액이 생존 기간에 따라서 변화할 수 있음을 알 수 있습니다. bb 파라미터는 대개 0보다 큰 값이 추정되는데 이는 생존 기간에 따른 스펜드가 미약하게나마 우상향 하는 형태가 일반적임을 의미합니다.

또 한가지 나타나는 것은 aa 파라미터와 bb 파라미터 추정치의 반대 움직임입니다. aa 파라미터 추정치가 높을 때 오히려 bb 파라미터는 낮아지고 반대로 aa 추정치가 낮을 때 bb 파라미터는 올라가는 형태를 보여주고 있습니다. 이를 통해 3월에서 5월의 코호트의 경우 단기적인 사용량은 높으나, 이후 일자가 지나면서 스펜드가 자연스럽게 감소하는 형태가 강하게 관측된다는 것을 유추할 수 있으며, 반대로 10월과 11월의 경우 초기 사용 금액은 낮으나, 점차적으로 증가하기에 bb 파라미터가 0보다 크게 추정된 것을 볼 수 있습니다.

LTV 결과

그림 7 : 일별 LTV 시계열
그림 7 : 일별 LTV 시계열

그림 7에서 파란색은 숨고 방식으로 구한 LTV, 주황색은 기존 방식으로 구한 LTV 입니다. 기존 방식 LTV는 숫자 자체도 상대적으로 아주 작거니와 변화 역시 아주 작은 폭으로 나타납니다. 이는 리텐션 시리즈가 급격하게 감소하면서 LTV에 나타나는 리텐션 변화가 모두 사라지기 때문입니다. 실제로 이전 포스팅에서 day 1 리텐션의 변화를 보면, 계절성만 드러나고 레벨이 크게 변화하지 않습니다. 오히려 과거에 비해서 많이 변화된 부분은 day 30 이후의 중장기 리텐션 파트였습니다.

새로운 방식으로 구한 LTV를 보면 LTV의 계절성이 잘 나타납니다. LTV의 상승은 리텐션 기울기 곡선의 완만함, 혹은 고수의 생존 기간 스펜드의 증가 두가지 요인에 기인합니다. 상대적으로 고수 사용 금액 시리즈의 추세적인 변화가 크지 않았다는 점, 앞선 리텐션 파트의 결과를 기초로 보면 LTV 추세를 드라이브하고 있는 요소는 리텐션 효과임을 유추할 수 있습니다.

특히 2022년 여름 이후에도 LTV가 한차례 더 상승하여 지속되는 형태를 보여주고 있는데, 이 역시 리텐션으로 기인한 효과가 강해 보입니다. 최근에도 LTV가 지속적으로 성장하고 있는데 이는 숨고의 고수들이 오랫동안 살아남고 있다라는 리텐션 결과와도 상응합니다.

마무리하면서

이번 포스팅에서는 새롭게 도입한 숨고에서 LTV 산출 방식을 이야기하였습니다. LTV는 개념적으로 무한대의 합과 기대 금액이라는 추상적이고 복잡한 개념을 다루고 있습니다. 따라서 이를 통해 도출되는 기존 LTV 수식은 강한 가정이 내포된 산출식이었습니다. 특히 일 단위에서는 해당 가정은 아주 비현실적이지만 월 단위, 분기 단위의 LTV라면 해당 수식이 여전히 유효함을 알 수 있었습니다. 이러한 강한 가정을 완화하기 위해서 생존 기간별 고수 사용 금액과 리텐션을 각각 예측할 필요가 있었습니다. 각각은 멱함수로 적합하였고 이후 각각 예측치를 곱하는 형태로 LTV를 계산하였습니다. 고수 사용 금액은 명목 변수이기에 분석을 위해서 실질화하여 분석하였습니다.

리텐션과 LTV 두가지 지표를 통해서 여러 기간에 걸친 숨고 고수들의 행태를 분석할 수 있었습니다. 이를 요약하자면 우선 첫번째로, 숨고의 LTV는 계절성이 강합니다. LTV가 상승하는 것은 두 가지 요인이 작용하는데, 리텐션의 전반적인 증가와 고수의 사용 금액의 증가입니다. 계절성은 양쪽 모두에서 발생하고 있었습니다. 특히 리텐션에서는 단기적인 리텐션이 강하게 계절성을 보이고 있었고, 사용 금액은 단기와 장기를 가리지 않고 계절성의 패턴이 나타났습니다. 한편 기존 LTV 수식으로는 이러한 계절성의 패턴이 정확하게 드러나지 않습니다. 이것이 현재 숨고에서 사용 중인 LTV 추출 방식과 기존 LTV 수식의 가장 큰 차이점이었습니다.

두번째로, 숨고 LTV는 과거에 비해서 전반적으로 완만한 상승 흐름을 가지고 있습니다. 앞선 첫번째 리텐션 글을 통해서 볼 때, LTV의 상승 드라이브는 리텐션의 증가에 기인한 파트가 크다고 볼 수 있습니다. 왜냐하면 숨고의 장기 리텐션은 과거에 비해서 크게 증가한데 비해 고수 생존 기간에 따른 사용 금액은 과거에 비해서 큰 변화가 없기 때문입니다. 사용자들의 장기 생존이 강하게 나타나면서 LTV는 전반적으로 상승하고 있음을 알 수 있었습니다.

마지막으로, 숨고 고수들의 사용 금액은 생존 기간에 대해서 전체적으로 증가하는 경향이 있습니다. 이는 상대적으로 숨고에 우호적이거나 강한 인텐션을 가진 고수들이 생존하기 때문입니다. 따라서 생존 기간별 사용 금액을 실질 금액으로 그려보면 우상향 하는 패턴을 확인할 수 있었습니다.

앞선 리텐션 글과 더불어 이번 포스팅에서는 LTV를 소개해보았습니다. 사용자들은 제품을 여러 차례 사용하면서 편안함과 안정감을 느끼게 됩니다. 반대로 회사 역시 사용자들의 재사용을 이끌어내기 위해서 지속적으로 노력하고 있습니다. 이러한 점에서 여러 기간에 걸친 사용자 행태를 분석하는 동적(dynamic) 분석은 여전히 다방면에 활용될 것으로 보입니다. 그에 발맞춰 리텐션과 LTV 개념도 점차적으로 고도화되고 새로운 개념들도 등장하지 않을까 싶습니다. 데이터를 분석하는 사람으로서 호기심과 흥미가 생기는 분야임은 확실한 것 같습니다.

다음에도 좋은 글로 다시 찾아오겠습니다. 긴 글 읽어주셔서 감사합니다.

Furiosa Hong Data Scientist
안녕하세요. 데이터 사이언티스트로 일하고 있는 퓨리오사라고 합니다. 좋은 분석과 글로 자주 뵙겠습니다.