코호트 분석을 하는 이유

많은 앱, 웹 서비스를 출시하게 되면 AARRR이라는 단계를 모니터링하게 됩니다. 이때 Retention 이 가장 중요한데요, 사용자가 재방문을 하지 않는데, 끊임없는 앱 푸시, 광고를 기획해 사용자를 늘리는 것은 효과적이지가 않습니다. 따라서 사용자의 유지율을 모니터링하는 것이 중요한데요, 유지율을 통해 사용자의 이탈을 막을지, 고객과의 친밀도를 형성할지 계획할 때 도움이 됩니다. 따라서 이 유지율을 확인하는 코호트 분석을 실습으로 진행 해 보려고 합니다.

코호트 분석을 할 때 주의할 점

코호트 분석의 ‘코호트’는 무엇일까요? 코호트는 분석을 시작하는 시간 기준으로 동일한 특징을 지닌 집단을 의미합니다.

코호트 분석을 할 때는 주로 고객의 첫 구매 날짜, 구독 날짜, 학교 입학 날짜 등 시작 날짜를 기준으로 수행되는 경우가 많습니다. 코호트는 다양한 기준으로 그룹핑되는 데, 이때 특징은 계속 변화하므로 시작 날짜에 기준을 두지 않으면 개체의 그룹 구분이 모호해질 수 있습니다.

코호트 분석을 진행할 때는 개체의 전체 일생을 포함해야 합니다. 그렇지 않으면 생존자 편향이 발생할 수 있습니다. 따라서 분석하려는 개체의 행동 이력을 관찰하기에 충분한 양의 시계열 데이터를 확보하는 것이 중요합니다.

리텐션 분석

먼저 코호트 분석을 위한 리텐션 분석을 진행 해 보겠습니다. 데이터는 미국의 과거 및 현재 국회의원 데이터셋을 사용했습니다.
분석 테이블은 legislators, legislators_terms 두 테이블이 있습니다. 미국 의회는 상원의회, 하원의회로 나뉘게 되는데 상원의원은 미국 주당 두 명이며, 임기는 6년입니다. 하원의원은 해당 주의 인구수에 비례한 수만큼 할당되며 임기는 2년입니다.

우선은 각 고유한 의원 아이디를 사용해서 의원들의 첫 임기를 시작한 날짜를 구하려고 합니다.

Untitled

쿼리 문을 보면 고유 아이디로 그룹화를 진행하고 의원의 가장 빠른 임기 시작 날짜를 구해주었습니다. 그룹화를 진행하지 않는다면 FIRST_VALUE 함수를 사용해서 바로 구할 수도 있습니다!

Untitled

추출된 데이터를 기본 테이블과 셀프 조인을 통해 첫 임기 시작 날짜를 추가 해 주었습니다. 이제 리텐션 분석을 위한 각 의원들이 처음 임기 시작한 날짜로 부터 몇 년뒤 재임을 했는지를 나타내는 컬럼을 만들어야 합니다.
이를 위해 각 의원들의 초임 및 재임 시작 날짜로부터 초임 시작 날짜를 빼 주었습니다. 그리고 이 값을 그룹화 해 시간이 지나면서 재임을 한 의원의 수를 집계했습니다.

Untitled

아래 보시면 기간이 0 일 때 12518의 크기를 가지고 있습니다. 결국 고유한 의원 수는 12518명 임을 알 수 있습니다. 1년이 지나고 나니 148명으로 줄었다가, 2년이 되니 7120명으로 대폭 상승했습니다. 이러한 이유는 무엇일까요?
아까 말했듯이 미국 의원 주기는 2년 혹은 6년 입니다. 따라서 2년, 6년 단위로 재임하는 의원 수가 늘어나는 것입니다. 그러면 1년은 0이어야 하는 것 아닌가요?
0일 수도 있지만, 어떤 의원이 초임을 했다가, 임기를 끝까지 못 마치게 된 경우도 있는 것 같습니다! 더욱 자세히 보기 위해 그래프를 살펴보겠습니다.

Untitled
Untitled

그래프가 2년 혹은 6년 주기로 상승하며 왔다갔다 하는 모습을 보이고 있습니다. 이러한 그래프 형태를 띄는 이유는 의원이 얼마나 임기를 유지했는가? 라는 데이터를 포함하지 않아서 생긴 현상입니다. 리텐션 분석을 할 때 주의할 점이라고 생각되는데요, 2년뒤 재임을 하는 의원은 어떻게 보면 1년째도 재임중이지 않는가?라는 의문을 남길 수 있습니다. 이를 위해 재임하는 날짜 전을 모두 포함한 리텐션 분석을 진행하겠습니다. 앞서 진행한 리텐션 분석을 ‘클래식 리텐션 분석’, 지금 진행할 리텐션 분석을 ‘롤링 리텐션 분석’이라고 합니다. 클래식 리텐션은 주로 주기가 짧은 서비스를 모니터링 할 때 사용되고, 롤링 리텐션 분석은 주기가 긴 서비스를 모니터링 할 때 사용이 된다고 합니다!

Untitled

위 쿼리는 롤링 리텐션 분석을 진행한 쿼리문입니다! looker studio로 데이터를 추출해서 리텐션 커브를 그려보겠습니다.

Untitled

확실히 아까보다 부드러운 곡선을 그리는 그래프가 그려졌습니다! 따라서 리텐션 분석을 진행할 때는 제공하는 서비스 유형과 관련하여 클래식 리텐션 분석, 롤링 리텐션 분석 중 어떤 분석을 하면 좋을지 고민하고 적용하는 것이 중요합니다!

언급한 리텐션 분석 방법들과 범위 리텐션 분석이 있습니다. 범위 리텐션 분석이 흔히 말하는 코호트 분석이라고 생각하시면 될 것 같습니다.
미국 의원 데이터를 1700~1799년은 18세기 의원, 1800~1899년은 19세기 의원, 1900~1999년은 20세기 의원 이후는 21세기 의원으로 구분지어 이들의 리텐션 그래프를 그려보겠습니다.

Untitled

Untitled

위와 같은 쿼리문을 작성했는데요! 다른 SQL 언어는 세기를 추출하는 함수가 있지만, 빅쿼리는 지원을 하지 않는 것 같습니다ㅜㅜ 따라서 CASE 문을 활용했습니다.(있다면 댓글로 알려주세요!)

Untitled

똑같이 세기별로 나누어 그래프를 그려봤습니다!
18~19세기 의원보다는 20세기 의원들이 재임을 많이 한 것으로 보입니다. 18~19세기 보다 20세기 때 수명이 길어져 긴 시간동안 재임을 할 수 있었던 걸까요? (제 추측입니다..)
21세기 의원들의 리텐션은 급격히 떨어지는 것을 볼 수가 있습니다. 21세기는 시작한지 얼마 되지 않아 다른 세기와 비교했을 때 긴 시간동안 재임을 한 경우가 아직 없어 이러한 그래프 형태를 보이는 것 같습니다.

이처럼 리텐션 분석 및 코호트 분석을 진행 해 보았는데요! 제공하는 서비스를 개선하기 위해서는 리텐션(고객 유지) 단계가 가장 중요하며, 이를 위해 적절한 코호트를 구성하고 코호트간 차이를 찾아 코호트 간 적절한 서비스 및 마케팅을 기획하는 능력을 함양시키는 것이 중요한 역량으로 보입니다!

Categories:

Updated: