[리뷰]듀오링고 Meaningful metrics

김민석·2023년 3월 9일
0

듀오링고 블로그 참조


의미 있는 지표

어떻게 데이터가 프로덕트 팀의 목적을 더 날카롭게 만들어주는가!

1. 듀오링고 현황

  • 많은 회사들이 마케팅에 돈을 지불해서 성장하려하지만, 듀오링고는 대부분 'organically'하게 진입한 고객을 가지고 있다.
  • 추천으로 들어온 고객들이 들어와 서비스를 사용하다 보니, 점차 더 많은 기능을 찾고 결과적으로 유료 고객으로 전환되감

-좋은 이야기지만, 이러한 상황을 유지하는 것을 어려움
-> 많은 고객이 생길수록 다양한 수요가 생기기 때문

  • 따라서 듀오링고는 movable metrics that matter를 중심으로 수많은 A/B 테스트를 진행

그래서 Movable Metrics that Matter 를 어떻게 정하는가?

2. 성장모델

  • 2018년 많은 성장 이후 DAU의 정체 겪음
  • 우리가 어떻게 DAU를 더 세분화 할 수 있을까? (더 의미있고, 더 쉽게 최적화할 수 있도록)

우선 고객을 활동 상태에 따라 분류하고, 각 상태 별로 변환율을 확인, 이 변환율은 retention, deactivation, activation rate로

이 모델은 고객을 7개의 상호독립적인 상태로 분류

  • 신규고객 : 듀오링고를 처음으로 경험한 고객
  • 유지고객 : 오늘 사용했고, 지난 주에도 사용한 고객
  • 재활동고객 : 오늘 사용했고, 지난 달에도 사용했지만, 지난 주에는 사용하지 않은 고객
  • 부활고객 : 오늘 사용했으나, 30일이 넘는 기간동안 사용하지 않은 고객
  • 위험 주간 활동고객 : 지난 한 주는 사용했지만, 오늘은 사용하지 않은 고객
  • 위험 월간 활동고객 : 지난 달에는 사용했지만, 지난 주에는 사용하지 않은 고객
  • 휴면고객 : 지난 30일간 사용하지 않은 고객

듀오링고는 이 각 고객군 간의 변환 비율을 확인

예시

(1) 한 무리의 신규 고객이 day 1에 듀오링고 사용

(2) 일부는 다음 날에도 사용

(3) (2)에서의 일부는 NURR로 -> day2 전환은 (2)의 고객을 active 상태로 둠(유지고객으로)
- 혹시 새로운 기기로 인해 기존 고객이 신규 고객으로 변환된다면?
-> 다양한 기기에 대한 고객을 'alising'이라는 세밀한 방식으로 해결
-> 데이터 사이언스 팀은 'aliasing'을 거친 데이터를 확인

(4) (1)의 무리 중 day 2에 사용하지 않은 고객에 대해서, 이들은 '비활동'상태로 전환 -> 위험 주간 활동고객(At Risk WAU's)
-> DAU는 아니지만 지난 주에 사용 이력이 있는 고객이기 때문에 이러한 이름을 붙임. 이 비활동 고객들은 '위험 주간 활동고객'에 7일간 머물게 됨

(5) 7일이 지나면 이들은 '위험 월간 활동고객'으로 변환(At Risk MAU's), 최대 22일간 여기 머물게 됨. 다시 사용하게 되면 이들은 '재활동고객'으로 전환됨.

(6) 30일 간 사용하지 않게 되면 이들은 '휴면고객'으로 전환되고 재사용하기까지 지속적으로 여기 있게 됨. 다시 사용하게 되면 이들은 '부활 고객'으로 전환

각 비활동 상태(위험주간, 위험월간, 휴면)은 두가지 전환이 있으며, 이전에 두 번의 전환을 최소한 겪게 됨.

새로운 'Movable' 지표 찾기

  • 위에서의 성장모델과 여태까지의 훈련된 데이터를 통해, 듀오링고는 성장 시뮬레이션을 수행. 이 시뮬레이션의 목표는 새로운 지표(최적화 되었을 때 DAU를 상승시킬 수 있는)를 확인하는 것.

  • 듀오링고는 시스템을 통해 각 '레버'를 당겼을 때 DAU에 어떤 변화가 있는 지 확인.

  • 아래 그림은 만약 각 상태 전환이 2%씩 월 성장을 할 때 이뤄지는 결과를 보여줌

  • 현재 결과는 : 유지고객 전환율(CURR)을 2% 씩 증가시키면, DAU에 가장 큰 영향을 준다.

  • 이후 A/B 테스트를 진행 (1) CURR이 우리가 변화시킬 수 있는 지표인지, (2) 변화하는 CURR이 실제 DAU를 변화시키는지(상관이 아닌 인과관계로서)

  • 결과는 성공적, movable metric에 집중하는 팀과 함께 DAU의 성장은 이뤄졌고, 연간 지속적인 성장을 확인할 수 있었음

3. 다음 목표 : 단순 집계 지표를 넘어서

  • 2018년 DAU 성장의 정체에서 '성장 모델'은 새로운 성장에 대한 지평을 열어주었다.
  • 2023을 앞두고, DAU 성장은 여전히 강하고 지속적이다.
  • CURR 은 지속적으로 올라가지만, 두가지 질문을 던지기 시작
    (1) CURR 상승의 한계는 어디인가?
    -> 아직 성장하고 있지만 선제적으로 문제를 예방하고 싶음
    (2) 단순 평균을 함으로 인해 다양한 고객의 데이터를 감소시킴으로 우리가 놓치는 것은 무엇인가?
    -> 평균은 편리하지만, 다양한 상태에 대해서 파악하기 어려워짐, 현재 현존 고객은 하나의 거대한 고객군으로 되어버림
  • (2)로 인해서 현재 CURR은 점점 현존 고객의 행동 패턴에 대한 부정확한 측정 지표가 되어가며, 우리는 지표가 점차 변화하지 않는 위험에 처할 수 있음.
  • 이런 점을 명심하고 우리는 bottom up 방힉으로 고객을 나눠나가 현재 top-down 방식을 보완해주어야함.
  • top-down이 우리의 이미 인지하고 있는 생각 속에서 나타난다면, bottom-up은 기존 방식을 넘어선 새로운 시각을 보여줄 수 있을 것

참고

DAUt=ReactivatedUsert+NewUsert+ResurrectedUsert+CurrentUsertDAU_t = ReactivatedUser_t + NewUser_t + ResurrectedUser_t + CurrentUser_t

WAUt=ReactivatedUsert+NewUsert+ResurrectedUsert+CurrentUsert+AtRiskWAUtWAU_t = ReactivatedUser_t + NewUser_t + ResurrectedUser_t + CurrentUser_t + AtRiskWAU_t

MAUt=ReactivatedUsert+NewUsert+ResurrectedUsert+CurrentUsert+AtRiskWAUt+AtRiskMAUtMAUt = ReactivatedUser_t + NewUser_t + ResurrectedUser_t + CurrentUser_t + AtRiskWAU_t + AtRiskMAU_t

Active states

ReactivatedUsert=ReactivationRatetAtRiskMAUt1ReactivatedUsert = ReactivationRatet * AtRiskMAUt-1

ResurrectedUsert=ResurrectionRatetDormantUserst1ResurrectedUsert = ResurrectionRatet * DormantUserst-1

CurrentUsert=NewUsert1NURRt+ReactivatedUsert1RURRt+ResurrectedUsert1SURRt+CurrentUsert1CURRt+AtRiskWAUt1WAURRtCurrentUsert = NewUsert-1 * NURRt + ReactivatedUsert-1 * RURRt + ResurrectedUsert-1 * SURRt + CurrentUsert-1 * CURRt + AtRiskWAUt-1 * WAURRt

Inactive states

DormantUsert=DormantUsert1DormantRRt+AtRiskMAUt1MAULossRatetDormantUsert = DormantUsert-1 * DormantRRt + AtRiskMAUt-1 * MAULossRatet

AtRiskMAUt=AtRiskMAUt1ARMAURRt+AtRiskWAUt1WAULossRatetAtRiskMAUt = AtRiskMAUt-1 * ARMAURRt + AtRiskWAUt-1 * WAULossRatet

AtRiskWAUt=AtRiskWAUt1ARWAURRt+CurrentUsert1(1CURRt)+ReactivatedUsert1(1RURRt)+NewUsert1(1NURRt)+ResurrectedUsert1(1SURRt)AtRiskWAUt = AtRiskWAUt-1 * ARWAURRt + CurrentUsert-1 * (1-CURRt) + ReactivatedUsert-1 * (1-RURRt) + NewUsert-1 * (1-NURRt) + ResurrectedUsert-1 * (1-SURRt)

profile
데이터 사이언스를 공부하는 커피쟁이

0개의 댓글