이 글은 데이터리안 홈페이지에서도 보실 수 있습니다.
리텐션 계산하기 (1) Classic Retention에서는 이런 이야기들을 했습니다 :D 시리즈가 처음이신 분들은 앞 글을 먼저 봐주세요.
롤링 리텐션을 계산해보기 전에, 클래식 리텐션의 한계에 대해서 짧게 복습해보겠습니다.
사용자 | 12-01 (Day 0) | 12-02 (Day 1) | 12-03 (Day 2) | 12-04 (Day 3) | 12-05 (Day 4) | 12-06 (Day 5) |
---|---|---|---|---|---|---|
A | 방문 | 방문 | 방문 | 방문 | 방문 | 방문 |
B | 방문 | 방문 | 방문 | |||
C | 방문 | 방문 | 방문 | |||
D | 방문 | 방문 | ||||
E | 방문 |
우리는 앞에서 202X년 12월 1일에 가입한 사용자 A, B, C, D, E가 있다고 가정했습니다. 그리고 위 표와 같이 사용자들이 접속했다고 가정할 때에, 클래식 리텐션은 아래와 같이 계산할 수 있습니다.
12-01 (Day 0) | 12-02 (Day 1) | 12-03 (Day 2) | 12-04 (Day 3) | 12-05 (Day 4) | 12-06 (Day 5) | |
---|---|---|---|---|---|---|
방문유저수 | 5 | 2 | 2 | 3 | 1 | 2 |
클래식 리텐션 % | 100% | 40% | 40% | 60% | 20% | 40% |
이때 날아오는 날카로운 질문!
"사용자 B를 Day 2 계산에서 빼도 되는건가요? Day 3에도 접속을 하고 있는데, 이 정도면 Day 2 시점에는 서비스를 계속 사용하고 있다고 봐도 되는게 아닐까요?"
우리가 고객을 얼마나 유지하고 있는지(Retain)의 관점에서 사용자 B는 Day2 시점에 여전히 서비스를 사용하고 있습니다. 클래식 리텐션에서는 놓칠 수 있는 이런 부분을 보완하기 위해 상황에 따라 롤링 리텐션(Rolling Retention)을 계산합니다. 롤링 리텐션은 '사용자가 이탈하지 않고 남아있는가?'에 초점을 맞추기 때문에 Unbounded Retention이라고도 부릅니다.
롤링 리텐션은 기준일을 포함하여 그 이후에 한 번이라도 재방문한 유저의 비율을 나타냅니다. 좀 더 쉽게 이해하자면 '마지막 방문일 이전은 방문한 것으로 간주한다'로 생각하셔도 됩니다. 기준일 이후에 방문 기록이 있다면, 기준일 당시에는 이탈하지 않은 사용자로 계산하겠다는 뜻입니다.
사용자 | 12-01 (Day 0) | 12-02 (Day 1) | 12-03 (Day 2) | 12-04 (Day 3) | 12-05 (Day 4) | 12-06 (Day 5) |
---|---|---|---|---|---|---|
A | 방문 | 방문 | 방문 | 방문 | 방문 | 방문 |
B | 방문 | 방문 | (방문으로 간주) | 방문 | ||
C | 방문 | (방문으로 간주) | 방문 | 방문 | ||
D | 방문 | (방문으로 간주) | (방문으로 간주) | (방문으로 간주) | (방문으로 간주) | 방문 |
E | 방문 |
그러면 롤링 리텐션을 아래와 같이 계산할 수 있습니다.
12-01 (Day 0) | 12-02 (Day 1) | 12-03 (Day 2) | 12-04 (Day 3) | 12-05 (Day 4) | 12-06 (Day 5) | |
---|---|---|---|---|---|---|
이탈하지 않은 유저 수 | 5 | 4 | 4 | 4 | 2 | 2 |
롤링 리텐션 % | 100% | 80% | 80% | 80% | 40% | 40% |
클래식 리텐션과 롤링 리텐션을 비교하는 그래프를 그려보면 둘의 차이가 명확하게 보입니다. 같은 데이터로 리텐션을 계산했어도 어디에 초점을 맞추느냐에 따라 결과는 이만큼 달라질 수 있습니다.
롤링 리텐션은 여행 서비스, 쇼핑몰, 부동산 서비스 등 사용 빈도가 높지 않은 서비스에서 유용하게 활용됩니다. 매일매일 이용하는 것이 중요하다기 보다는 사용자가 니즈를 가진 시점에('이사를 해야 되는데') 방문하면 되는 서비스('다방을 열어볼까?')의 경우에는 클래식 리텐션으로 사용자 유지 여부를 계산할 필요는 없는 것이죠. 오히려 클래식 리텐션으로 매일의 접속 여부를 확인하면서 이 지표를 높이기 위해 앱푸시를 보낸다던지, 과한 할인을 한다던지 하는 것은 장기적인 사용자 유지에 악영향을 미칠 수도 있습니다. 이렇게 다양한 리텐션 계산 방법들을 알고 있으면 상황에 맞게, 서비스에 맞게 사용자 유지율을 분석할 수 있습니다.
하루가 더 지나서 12월 7일 데이터가 생겼습니다. 그런데 사용자 E가 지금까지 접속하지 않다가 12월 7일에 서비스에 방문했다고 가정해봅시다.
사용자 | 12-01 (Day 0) | 12-02 (Day 1) | 12-03 (Day 2) | 12-04 (Day 3) | 12-05 (Day 4) | 12-06 (Day 5) | 12-07 (Day 6) |
---|---|---|---|---|---|---|---|
A | 방문 | 방문 | 방문 | 방문 | 방문 | 방문 | 방문 |
B | 방문 | 방문 | 방문 | ||||
C | 방문 | 방문 | 방문 | ||||
D | 방문 | 방문 | |||||
E | 방문 | 방문 | |||||
이탈하지 않은 유저 수 (12월 6일 계산) | 5 | 4 | 4 | 4 | 2 | 2 | |
이탈하지 않은 유저 수 (12월 7일 계산) | 5 | 5 | 5 | 5 | 3 | 3 | 2 |
롤링 리텐션 % (12월 6일 계산) | 100% | 80% | 80% | 80% | 40% | 40% | |
롤링 리텐션 % (12월 7일 계산) | 100% | 100% | 100% | 100% | 60% | 60% | 40% |
이탈했다고 생각한 사용자 E가 12월 7일에 돌아왔기 때문에 롤링 리텐션 값이 바뀌게 됩니다. 12월 6일에 계산한 리텐션과 12월 7일에 계산한 리텐션의 값이 다른 것을 표의 마지막 두 줄로 보실 수 있습니다. 이런 식으로 사용자들의 이후 접속에 따라 기존에 계산했던 리텐션 값이 얼마든지 달라질 수 있다는 점은 롤링 리텐션의 고유한 특징입니다. 그래서 절대적인 수치가 중요하다기 보다는 지표가 어떻게 움직이는지 트렌드를 보는 정도로 활용하시기를 권합니다.
이건 조금 사담이지만(원래 사담이 제일 재밌지 않나요), 제가 분석가로 있을 때 가장 어려움을 겪었던 부분 중 하나는 주변에 지표를 가지고 같이 일해야 하는 사람들이나, 보고를 받아보는 사람들이 '숫자도 변할 수 있다'는 점을 받아들이기 어려워한다는 점이었는데요.
'어제 받아본 Day 1 리텐션은 80%였는데, 왜 오늘은 100% 입니까?'
라는 질문이 충분히 나올 수 있다고 생각합니다. '아! 이거 클래식 아니고 롤링 리텐션이에요'라고 대답해서 해결할 수 있으면 참 좋을텐데 대부분의 경우에는 그렇지 못하구요. 조직의 분위기, 협업하는 사람들의 데이터에 대한 이해도가 어느 정도이냐에 따라 저는 롤링 리텐션을 아예 사용하지 않을 것 같기도 합니다.
이 글을 읽은 데이터리안 멤버(분석가)의 공감과 애환...👆
✨ 막간을 이용한 광고 타임 ✨
데이터 분석을 위한 SQL 캠프에서는 리텐션에 대해서 더 자세하게 이야기하고, SQL 쿼리로 다양한 타입의 리텐션을 직접 계산하고 분석해 볼 예정입니다. 클래식 리텐션, 롤링 리텐션, 범위 리텐션을 SQL로 한 번에 추출해보고 싶은 분들은 주목해주세요!
리텐션 계산을 위해 필요한 SQL 기능은 아래 세 가지인데요.
이번에 여는 2022년 2월 SQL 입문 캠프에서는 1번, 2번 기능을 배우고, 나중에 열릴 심화 캠프에서 3번 기능을 마저 배운 다음 리텐션 계산을 해 볼 예정입니다. 캠프 신청 방법은 여기를 참고해주세요!
혹시 캠프 신청 기간이 지나서 이 글을 발견하셨다면 contact@datarian.io
으로 문의메일 남겨주세요 :D