Product

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

리텐션을 중심으로 숨고 사용자들의 행동을 분석해보았습니다

2023-06-21 Furiosa Hong

안녕하세요.

저는 Data Chapter 에서 Data Scientist로 일하고 있는 Furiosa라고 합니다.

이번에는 총 두 편으로 나누어 리텐션과 LTV에 대해 이야기 해보려고 합니다. 리텐션의 기본 개념을 알면 LTV를 이해하기 편하기에 이번 포스팅에서는 리텐션을 먼저 소개하겠습니다. 글의 주요 내용은 리텐션의 기본 개념을 소개하고, 이를 분석하는 통계 방법론, 그리고 분석 결과까지 소개해보려 합니다.

개념

리텐션(Retention)을 사전에서 검색해보면 유지, 보유라는 뜻입니다. 하지만, 서비스 단위에서 일반적으로 리텐션은 사용자들의 재사용 비율, 또는 잔존율로 사용하고 있습니다. 개념상 아주 간단해보이지만, 리텐션을 실제 데이터로 계산하기 위해서는 몇몇 개념들을 보다 자세하게 정의할 필요가 있습니다.

먼저, '재사용'이라는 행위입니다. 리텐션은 재사용을 측정하는 개념인데, 그렇다면 어떤 행위를 할 때 사용자들이 앱을 '사용' 했다고 정의할 수 있을까요? 앱을 진입만 해도 사용했다고 정의할 수 있을까요? 보통 앱마다 사용 행위를 정의하는 방식은 다를 것입니다. 숨고에선 일반적으로 '고수의 견적 발송 행위'를 '사용' 으로 정의하고 이에 대한 리텐션을 주로 보고 있습니다. 사용 행위를 어떻게 정의하는가에 따라서 다양한 리텐션이 계산 될 수 있습니다.

다음으로 코호트입니다. 사용이라는 개념이 정의되었다면 사용하는 집단이 누구인지 파악하고 해당 집단 단위로 리텐션이 집계되어야 합니다. 개인만 보면 사용했다 또는 하지 않았다와 같은 이진(binary) 형태이기에 데이터의 유용성이 떨어집니다. 집단으로 묶어야 인사이트를 주는 형태의 지표들이 생성됩니다. 이에 어떤 개인들을 동일한 집단으로 볼 것 인가에 대한 이슈가 등장합니다. 보통 리텐션에서는 시간에 대해서 동일한 집단으로 보고 지표를 정의하며, 여기서 특성이 같다고 정의한 동일 집단을 코호트라고 이야기합니다.

다음으로 리텐션이 정의되는 구간(interval) 입니다. 앞선 정의에서는 구간을 "일" 로 정의를 하였지만, 일 보다는 조금 더 넓은 범위인 월, 분기 등이 리텐션에 더 많이 사용됩니다. 예를 들어서, 분기를 기준으로 한다면 해당 분기에 사용한 고수들이 다음 분기에도 재사용한 비율을 분기 리텐션으로 정의할 수 있습니다.

숨고에서 주로 사용되는 리텐션은 "고수들의 견적 발송 행위에 대한 리텐션" 이며 이번 포스팅에서는 일별 리텐션을 기준으로 분석하였습니다. 구체적인 식은 다음과 같습니다.

rt(j)=i1(qi,t>0)1(qi,t+j>0)i1(qi,t>0) r_{t}(j) = \frac{\sum_{i} 1(q_{i,t}>0)*1(q_{i,t+j}>0)}{\sum_{i} 1(q_{i,t}>0)}

qi,tq_{i,t}는 개인 iitt 기에 사용한 견적서 갯수입니다. 수식에서 1()1(\cdot) 은 지시함수(indicator function) 로 조건에 해당하면 11, 아니면 00을 주는 함수입니다. 보통 셈(count) 을 표현할 때 많이 사용합니다.

분모를 해석하면 tt 시점 견적서를 1개 이상 보낸 고수들을 모두 셈한 것 입니다. 이 tt 시점에서 견적서를 하나 이상 보낸 고수 집단이 코호트가 됩니다. 분자를 해석해보면, tt 시점 견적서를 1개 이상 보내고 t+jt+j 시점에도 견적서를 1개 이상 보낸 사람을 모두 셈한 것입니다. 이렇게 AND 조건을 지시함수의 곱 형태로 표현할 수 있습니다.

리텐션 rt(j)r_{t}(j) 의 주요 인자는 코호트(tt) 외에도 경과 시점 jj 가 등장합니다. '오늘의 사용자가 2일 후 혹은 3일 후에 얼마나 재사용하는가?'와 같이 사용자들의 행위를 다시 측정하는 시점입니다. 그리고 같은 코호트라도 jj 에 따라서 리텐션 숫자는 달라 집니다. 보통 day N 리텐션이라고 할 때, N이 여기서 말하는 경과 시점입니다. 그리고 day N 리텐션을 경과 시점에 대해서 그려보면 자연스럽게 우하향하는 형태가 나옵니다. 이는 시간이 지나면서 사용자가 줄어드는 것이 일반적이기 때문입니다.

2022년 8월 31일 코호트의 리텐션 시리즈
2022년 8월 31일 코호트의 리텐션 시리즈

위의 그래프는 2022년 8월 31일 코호트의 180일간 day N 리텐션입니다. 이렇게 구해진 선(line) 하나를 앞으로는 리텐션 시리즈라고 부르도록 하겠습니다. 구체적인 숫자는 공개하기 어려우나 우하향하는 형태가 잘 보이며, 처음에는 기울기가 가파르다가 나중으로 갈수록 기울기가 완만해지는 형태입니다.

또 다른 특징으로는 그래프가 위아래로 등락을 반복한다는 점입니다. 이는 일 단위로 견적서 발송 패턴이 다르기 때문인데 보통 이를 특수일 효과라고 합니다. 특수일 효과를 간단하게 설명하자면 휴일과 평일에 유저들의 사용 패턴이 달라지는 현상을 의미합니다. 일 단위 리텐션 분석이 어려운 이유가 바로 이 특수일 효과 때문입니다. 특수일 효과에 대한 더 자세한 내용은 이전의 포스팅을 참고해주시기 바랍니다.

분석 방법

리텐션 시리즈의 일별 효과를 통제하기 위해서 리텐션 시리즈를 적절하게 적합(fitting)*하여 평활화(smooting)**하는 것이 좋습니다. 이번 분석에서는 다음과 같이 멱함수(power function)로 리텐션 시리즈를 적합하였습니다.

* 적합은 주어진 데이터를 가정된 함수로 근사하는 행위입니다. 보통 함수와 데이터간 오차를 최소화 하는 형태로 근사합니다.

** 평활화는 데이터에 대한 변동성이 존재할 때, 이를 줄여주는 행위입니다. 보통 이동평균(moving average)이라는 기법이 주로 사용됩니다. 여기서는 함수에 적합하는 형태로 평활화 하였습니다.

r(j)=ajb r(j) = a*j^{b}

멱함수를 사용하게 된 것은 LTV(Life Time Value, 고객 평생 가치)를 산출할 때 리텐션을 지수함수(exponential) 로 가정하고 있는데 여기서 힌트를 얻었습니다. 하지만 이는 현실의 리텐션에 비추어 볼 때 상당히 비현실적인 가정입니다.

예를 들면, 위 2022년 8월 31일 코호트의 리텐션 시리즈가 경과시점 감소에 따라서 0에 수렴하는 것 같아 보이시나요? 지수함수를 실제로 그려보면, 경과시점 jj 에 대해서 상당히 빠르게 0으로 감소하는 구조이지만 현실의 리텐션은 이렇게 가파르게 감소하지 않습니다. 실제로 임의의 리텐션 값을 놓고 r(j)=rjr(j)=r^{j} 를 직접 그려보면 현실의 리텐션과 꽤나 다르다는 것을 확인할 수 있습니다. 따라서 이를 완화한 멱함수 형태로 리텐션 시리즈를 적합하였습니다.

추가적으로 멱함수로 리텐션 시리즈를 적합하게 되면, 각 파라미터는 좋은 함의를 가지게 됩니다. aa 파라미터는 j=1j=1 일 때의 리텐션 즉, 첫 번째 기간에서의 리텐션을 의미하며 상대적으로 단기적인 사용자들의 재사용율을 의미합니다. 다음으로 bb 파라미터 는 리텐션 시리즈의 미분(derivative)값인 r=abjb1r^{\prime}=a*b*j^{b-1} 과 관련이 있고, 해당 파라미터를 통해 리텐션 시리즈의 기울기에 대한 정보를 얻을 수 있습니다. 감소하는 시리즈를 멱함수에 적합하면, bb 파라미터는 기본적으로 음의 값으로 추정됩니다. 음의 값이 크면 기울기가 가파르고, 00에 가까워질 수록 기울기가 완만해진다로 해석할 수 있습니다.

한편, 리텐션 시리즈를 적합한다면, 추가적으로 데이터 사이즈에 대한 고민이 시작됩니다. 리텐션 시리즈를 얼마나 관측해야 제대로 적합될까요? 모든 코호트에 대해서 리텐션 시리즈의 데이터 사이즈는 동일하지 않습니다. 코호트가 2023년 3월 29일이라면, 리텐션 시리즈가 정의되는 기간은 현재 일자 기준으로 약 70일 정도가 됩니다. 최근 일자 코호트 일수록 관측된 시리즈가 짧고, 과거 일자 코호트 일수록 관측된 시리즈가 길게 됩니다. 이렇게 데이터 사이즈가 다르면 추정치를 동일 선상에서 비교하기가 어려워 집니다.

따라서, 이번 분석에서는 리텐션 시리즈를 적합하는데 최대 180일을 사용하였습니다. 즉, 데이터 사이즈는 180일이 최대입니다. 이는 180일 이후 리텐션 시리즈 데이터는 추정 결과에 크게 영향을 미치지 않았기 때문입니다. 또한, 최소 60일 정도의 리텐션 시리즈를 관측해야 된다고 전제하였는데 이는 그래프로 판단한 임의의 숫자입니다.

분석 결과

앞서 리텐션 시리즈는 하나의 선(line)이라고 설명하였습니다. 이 선은 특정 일자에만 나오는 것이 아니라 모든 일자에 대해서 정의되는데, 이는 일별 코호트가 계속 변화할 수 있기 때문입니다. 이렇게 나온 일별 리텐션 시리즈를 아래와 같이 3차원 그래프로 그릴 수 있습니다.

일별 리텐션 시리즈 (3차원)
일별 리텐션 시리즈 (3차원)

일별로 (적합된) 리텐션 시리즈를 그래프로 그리면 선이 결합된 평면 형태가 나오게 됩니다. xx축은 경과 시점, yy축은 일(코호트), zz축은 리텐션입니다. 앞선 8월 31일 코호트 리텐션 시리즈에 비해 line by line으로 상당히 평활화 된 것을 확인할 수 있습니다.

yy축을 기준으로 하여 일별로 변화하는 선(line)을 눈으로 보면, 예전에 비해서 확실히 경과 시점이 클 때 리텐션, 간단하게 장기 리텐션이 높아졌음을 확인할 수있습니다. 또, 리텐션 시리즈의 기울기가 과거에 비해서 최근 완만해진 것 같은 인상을 줍니다. 보다 자세하고 추가적인 분석을 위해서 두 가지 그래프를 더 그려보았습니다.

Day N 리텐션 시계열 그래프
Day N 리텐션 시계열 그래프

먼저 그래프의 xx축인 경과시점 별 시계열로 해석하는 방법입니다. Day 1, Day 30, Day 180 리텐션 시계열을 그려보았고 각각은 사용자들의 단기 생존율, 중기 생존율, 장기 생존율을 나타낸다라고 해석하였습니다.

Day 1 리텐션은 2020년에서 최근으로 오면서 약간 상승하였습니다. 하지만, 전반적으로 크게 움직이지 않았습니다. 오히려, 2021년 6월부터 9월까지 하강하다가, 이후 다시 상승하는 계절적인 패턴이 잘 관측됩니다. 반면, 30일, 180일 리텐션은 과거에서 현재로 올수록 점차 증가하는 형태를 보입니다. 30일 리텐션, 180일 리텐션 모두 상승하였고, 180일 리텐션의 증가율이 30일 리텐션에 비해서 더 가파른 것 같은 느낌을 줍니다.

리텐션 시리즈 추정치의 시계열 그래프
리텐션 시리즈 추정치의 시계열 그래프

다음으로 일 단위 리텐션 시리즈의 추정치 (estimator) 변화를 추출할 수 있습니다. 그리고 추정치 변화는 또 다른 특성을 보여줍니다. 그래프에서 주황색 그래프는 bb 파라미터 추정치로 우측 yy축에 나타내었고, 파란색 그래프는 aa 파라미터 추정치에 좌측 yy축으로 나타내었습니다. 단, aa 파라미터 추정 결과는 앞서 말씀드린대로 Day 1 리텐션이기에 숫자들은 제외하였습니다. 강조하고 싶은 부분은 bb 파라미터 추정치입니다. 해당 추정치는 리텐션 시리즈의 기울기를 나타내며, 리텐션 시리즈의 기울기가 어떻게 변화해왔는가를 볼 수 있습니다.

그래프를 해석하자면 2020년 2월부터 2021년 6월까지는 간혹 계절 패턴이 나타나나, 전체적으로 큰 음의 값으로 이는 리텐션이 상대적으로 가파르게 감소하였음을 볼수 있습니다. 그러다가 2021년 6월 이후로는 리텐션 기울기가 완만해지기 시작합니다. 이러한 패턴은 2021년 11월에 정점을 이루고 다시 가파르게 상승하기 시작합니다. 이후의 패턴이 반복되는 계절성인지 아닌지는 조금 더 보아야 할 것 같습니다만, 기울기가 전체적으로 과거에 비해서 00으로 근접한 형태를 보이고 있습니다. 이는 전체적으로 볼 때, 리텐션 시리즈가 완만해지고 있다는 의미로 해석할 수 있습니다. 이외에도 리텐션의 기울기에 강한 계절성의 패턴이 보이고 있음도 알 수 있습니다.

결론

첫번째, 숨고 고수들의 재사용은 단기적인 재사용 보다는 장기 재사용의 변화가 더 컸습니다. 초단기 재사용률은 과거에 비해서 크게 변화가 없었습니다. 한편, 30일, 180일 재사용률은 과거에 비해서 크게 상승하고 있습니다. 이는 숨고 앱에 예전에 비해서 장기적인 사용 고수들이 늘어나고 있다, 혹은 고수들이 과거에 비해서 숨고 생태계에서 오랫동안 살고 있다라는 의미로 해석할 수 있습니다.

두번째로, 숨고 고수들의 리텐션에는 계절성이 관측된다는 점입니다. 특히 단기적인 리텐션은 상당히 강한 계절성을 가집니다. 한편, 상대적으로 30일, 180일 리텐션은 계절적인 영향보다는 추세적인 영향이 강해보입니다. 이는 숨고를 장기간 사용하는 고수들은 계절적인 영향을 받지 않고 숨고에 대해서 강한 재사용 패턴을 가지고 있음을 의미합니다.

마지막으로, 과거에 비해서 숨고 고수들의 생존 일자에 따른 리텐션은 과거에 비해서 점차적으로 완만해지고 있습니다. 이는 고수들의 이탈 자체가 일자에 따라서 줄어들고 있으며, 반대로 장기적인 재사용률이 과거에 비해 증가한 것으로 보입니다. 이는 숨고에 대해서 긍정적인 경험을 하고 오랜 시간 사용하는 고수 집단이 늘어난다는 좋은 의미로 해석할 수 있겠습니다.

이번 포스팅에서는 숨고 리텐션에 대한 분석 방법과 인사이트들에 대해서 소개해보았습니다. 리텐션이라는 컨셉은 이해하기 쉬워서 널리 활용되는 만큼 분석 방법 역시 다양하므로, 오늘 소개한 방법론은 하나의 예시라고 생각해주시면 좋겠습니다. 다음 포스팅에서는 LTV에 대한 인사이트를 소개해보겠습니다.

읽어주셔서 감사합니다.

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