사쿠의 데이터 블로그

유저 이탈 기준 정하기 본문

게임 데이터 분석

유저 이탈 기준 정하기

토스트먹어 2020. 11. 20. 23:29

 

 

제가 있는 곳에서는 데이터 분석팀이 있고 각자 담당하고 있는 프로젝트가 있습니다. 그리고 각 프로젝트에는 사업, 마케팅, 개발사가 있어서 그들과 함께 일을 합니다.

그런데 각기 다른 프로젝트이지만, 공통적으로 요청하는 내용 중 하나는 유저 이탈 분석입니다.  그리고 보통 문의 내용들을 나열하면 다음과 같습니다.

  • "이탈 유저 대상 이벤트를 진행하려 하는데 10월 이후 미 접속 유저 리스트를 부탁합니다"
  • "초반 동선 구간별 이탈 유저 확인이 필요합니다"
  • "업데이트 후 스테이지 별 이탈 유저 분석 요청드립니다"

1번 요청의 경우 추출 대상과 기간이 정확히 명시되어 있어 간단해 보이지만 왜 기준이 10월인지? 생각을 해보게 됩니다. 

2번 요청은 보통 stage 클리어 비율이 급격히 낮아지는 구간이 어디인지 찾아내서 개선을 하기 위한 목적으로 오히려 1번 요청보다 개인적으로 업무 처리하기 편한 케이스입니다. 하지만 이탈 유저란 무엇일까요?

3번은 업데이트 전 후, 유저들의 행동을 비교해야 합니다. 그런데 여기서도 이탈의 기준은 딱히 정하지 않고 있습니다.

 

기준을 정해야 한다

앞선 3가지 사례에서 신속, 정확한 업무처리를 위해서는 나름의 기준이 필요합니다. 그리고 그 기준은 꽤 과학적이어야 다른 사람들을 설득할 수 있을 겁니다. 

먼저 생각 해볼 수 있는 이탈 기준에는 사업, 기획적으로 명시한 내용이 있을 수 있습니다. 예를 들어, [7일간 미 접속시 이탈 유저로 정의한다]가 예시가 될 수 있다. 사업적 혹은 기획적으로 정해 놓은 내용에는 언제나 근거가 있습니다. 하지만 이들은 게임 출시 전에 작성해 놓은 내용일 가능성이 큽니다. 현재는 어떻게 바뀌었을지 확인 한 번은 해봐야 하지 않을까요?

 

게임을 포함한 서비스 업계에서 유저 이탈에 대한 고민은 늘 있어왔던 주제입니다. 

 

구글 scholar 에서 유저 이탈에 대한 검색 결과 (2020-11-20)

 

그렇기 때문에 이탈에 대한 기준은 여러 논문을 통해 찾아볼 수 있습니다.  넷플릭스 혹은 통신업계처럼 다달이 요금을 내야 하는 경우 지불하지 않는 순간 이탈로 볼 수 있고 이 기준은 아주 간단합니다. 그런데 게임에서도 통할까요?

대부분의 모바일, PC게임은 월 이용료를 내지 않습니다. 그러니 구독형 서비스와 같은 방법을 이용할 수 없습니다. 그럼 게임 업계에서는 어떻게 이탈 유저를 정의할까요? 게임마다 성격도 다르기 때문에 유저 로그를 기준으로 정하는 것이 가장 합리적입니다.

 

로그 기준 이탈 정의

로그 데이터는 유저 행동에 대한 정보를 담고 있습니다. 많은 내용들이 있겠지만 그 중에서 Login & Register 기록을 이용해보려 합니다. 저는 간단한 생각부터 차근차근 여러 생각들을 촘촘하게 만드는 걸 좋아합니다. 데이터 분석가답게 가설을 먼저 세워본다면 

  • 이탈 유저라면 연속적으로 게임에 접속하지 않을 것이다
  • 30일, 60일 등 숫자가 커질수록 정확도가 높아질 것 같다
  • 하지만 이탈 후 60일 뒤에 이탈 유저라고 알게 된다면 분석 결과를 활용 할 수 있을까?
  • 특정 일자를 정하기 위해  N일 동안 비 로그인 유저들의 비율은 봐야겠다.

방금 생각한 내용들을 정리 해보면 다음과 같습니다.

 

유저별 가입일자별 로그인 정보

 

먼저, 로그인 데이터가 있지만 분석 당시의 시점 설정을 위해, 미래의 정보는 회색 상자로 표현했습니다. 그리고 로그인 여부는 주황색 원입니다. 이 예시를 바탕으로 이탈의 기준을 설명 드리겠습니다.

먼저, 1일차에는 모든 유저들이 회원가입을 한 날이기 때문에 로그인했다고 처리합니다.

2일차 B 유저는 결석 했습니다.

 

 

유저별 가입일자별 로그인 정보 (3일차)

 

3일차 B유저는 2일 연속 결석을 했으며 D유저는 1일 결석했습니다. 이탈의 기준을 강력하게 1일만 들어오지 않으면 이탈유저로 취급한다면 계산을 어떻게 하면 될까요?

 

이탈률 확인하기, 이탈 기준 - 1일

1일만 결석하면 이탈한 유저로 간주할 때, 먼저 유저부터 구분할 필요가 있습니다. 가장 최근일자 기준 연속해서 결석한 일자를 구해보면 아래 표와 같습니다.

유저 구분Continously Unlogin Day
A0
B2
C0
D1

 

이제, 4일차(= 유관부서들이 이탈 유저정보를 달라고 요청한 일자) 정보를 이용해 Continously Unlogin Day별 이탈 유저수를 확인해 보겠습니다.

 

 

유저 구분Continously Unlogin Day이탈 여부 (=1일 연속 결석)
A0False
B2True
C0True
D1False

이탈 기준이 1일이었기 때문에 4일차에 들어오지 않았던 B, C 유저가 이탈 유저로 판단 되었습니다. (실제로는 9일차 까지 잘 들어왔지만! 우선 계산 방식을 보시죠)

 

 

 

위 수식 처럼 계산을 진행하면 Continously Unlogin Day마다 이탈율이 어떠한지 구할 수 있습니다.

 

 

 

이번에는 5일차(= 유관부서들이 이탈 유저정보를 달라고 요청한 일자) 데이터를 이용해 이탈율을 구해 보겠습니다. 이탈 기준을 이번에는 2일 연속 결석한 유저로 보겠습니다.

유저 구분Continously Unlogin Day이탈 여부 (=2일 연속 결석)
A0False
B2True
C0False
D1False

 

 

이탈 기준이 '2일연속 비 로그인'이기 때문에 C는 이탈 유저에서 제외 되었습니다.

이런식으로 정확한 측정을 위해 두 가지 변수를 도입할 생각입니다

  1. 이탈의 기준 M(=1, 2, 3, ... )에 따라
  2. N(=1, 2, 3, ... )일 연속 미 접속 유저의 비율을 확인

+ 눈치 채신 분이 계시겠지만, 이탈 기준이 M 이라면 전체 데이터에서 M만큼을 제외한 나머지를 사용해 이탈율을 확인합니다. 

 

 

이탈 기준을 변경해보며 이탈률 확인하기

이제, 9일치 데이터를 전부 이용해 M의 변화에 따라 이탈률이 어떻게 변하는지 확인해 보겠습니다. 

그 전에 다시 한번 복습을 해보면 Continously Unlogin Day(N)은 가장 최근일자 기준 연속해서 결석한 일자로 그림에서 점선 바로 왼쪽일자에 결석을 하면 몇일이나 연속으로 결석 했는지 세는 변수 입니다. 따라서, M의 변화에 따라 유저별로 값이 달라질 수 있습니다.

  • M = 1

 

 

유저Continously Unlogin Day(N)이탈 여부 (M = 1)
A2True
B0False
C0False
D0False

 

 

  • M = 2

 

 

유저Continously Unlogin Day(N)이탈 여부 (M = 2)
A1True
B0False
C1False
D0False

 

...

위와 같은 방법으로 구하다 보면 Continously Unlogin Day(N) 마다 이탈률이 얼마나 되는지 확인 할 수 있습니다. 

아래 그림은 random하게 데이터를 생성한 뒤, M =7 로 고정 시키고 N에 따라서 이탈률이 어떻게 변하는지 확인해 본 상자 그림입니다.

(※ 상자 그림인 이유는 유저별 가입일이 다르기 때문에 가입 일자별, N별 이탈율을 표시해서 그렇습니다)

 

M = 7, N = 0 ~ 8, 전체 데이터 길이 = 16(=7+8+1)

 

 

 

M = 7, N = 0 ~ 13, 전체 데이터 길이 = 21(=7+13+1)

 

 

 

random데이터지만 해석을 해본다면 M=7인 상황은 마지막 접속 후 7일동안 접속하지 않으면 이탈이라고 설정해둔 경우 입니다. 

먼저, N <= 8 인 경우 가입 후 매일 접속하는 유저(N=0)일지라도, 다음 7일 동안 접속하지 않는 비율이 상당합니다. N = 1일 때 비율이 급격하게 상승하는 모습으로 보아, 결석이 하루라도 시작되면 꽤 많은유저들이 이탈하는 것으로 보입니다.

다음으로 N<= 13인 경우 이전, N<=8일 때와 비슷한 결과가 나왔습니다. 

따라서 M=7 일 때(이탈 기준이 7일 일 때), 위 데이터를 기준으로 유터 이탈을 방지 계획을 세운다면 하루도 빠짐없이 매일 출석하게 만드는 것이 최선으로 보여집니다. 왜냐하면 하루라도 결석을 한다면 이탈률이 급격하게 상승하기 때문입니다.