[Yammer 분석 프로젝트]
1. WAU(Weekly Active Users) 하락 원인 분석
2. 검색 기능(Search Functionality) 분석
3. A/B Test 유의성 검정
- 데이터셋
control_group : 대조군 (기존의 기능을 접하는 대상)
treatment_group : 실험군 (새로운 기능을 접하는 대상)
발단
6월 한달 동안 publisher 기능 개선 테스트를 위해 A/B Test를 진행한 결과 treatment_group에서 약 1.5나 좋은 효과가 나타났다.
보통 이렇게까지 유의미한 결과가 나오는 경우는 많지 않아서 실험이 제대로 진행된 것이 맞는지 검증이 필요한 상황
users : 각 그룹에 배정된 유저수
|
total_treated_users : A/B 실험에 포함된 전체 유저 수 (control group + test group)
|
treatment_percent : 실험에 포함된 유저 중 특정 그룹에 속한 유저 수 (ex. test group 유저 / 테스트에 배정된 전체 유저)
|
total : 각 그룹에서 실험기간 내에 포스팅 한 총 메세지 수
|
average : 유저 평균 포스팅 메시지 수 (실험기간 내에 포스팅 한 메세지수 / 노출된 유저 수) → 이 차이가 50%라는 것
|
rate_difference : test group과 control group의 average 차이
|
rate_lift : ((test group의 average / control group의 average) - 1)
|
stdev : 각 그룹에서 유저별로 실험기간 내 포스팅한 메세지 수의 표준편차
|
t_stat : test group과 control group이 통계적으로 유의미한 차이가 있는지를 계산하기 위한 통계량.
test group과 control group의 표본평균과 표본표준편차로 계산됨. |
p_value : 통계적 유의성 검정에 사용되는 값.
|
[A/B Test 유념할 점]
실험군과 대조군이 큰 차이가 나지 않으면 평균 이외에도 다른 통계기준을 통해 다른 그룹임을 입증해야 한다.
차이가 적으면 적을 수록 우월집단을 가려내기 위한 (기준이 될 수 있는) 더 많은 표본이 필요해진다.
표본이 많이 필요할 때에 프로젝트 매니저 등 다른 프로젝트 담당자들과의 더 많은 논의가 필요할 것.
그런데 그렇게 우월집단을 가려내더라도 그 차이가 유의미하지 않거나, 유의미해도 그게 매출에 확실하게 도움이 되는 지표인건지 등 고려해봐야 할 관점이 굉장히 많기 때문에 이후의 의사결정이 훨씬 더 복잡하다.
- A/B Test가 유의미한지 검증하기 위해 확인해봐야 할 부분
1. 다른 중요 요소들도 두 비교 그룹 간 차이가 있었는지 지표(ex. 매출, 로그인 횟수 등) 를 다르게 해서 살펴보자
2. 쿼리가 정확한지 다시 한번 확인해본다.
3. 만일 다시 A/B Test를 진행해야 한다면 어떤 부분들 다르게 바꿔서 해야할지
등등...
따라서 1번 메세지 전송률 이외에 다른 지표들의 변화도 확인해 보기로 했다.
그럼 다른 지표 어떤 것을 보면 좋을지 고려해보았을 때, Yammer의 중요 지표 선정 기준은 '사용자가 Yammer를 통해 어떤 가치를 얻고 있는가'이며, 핵심가치지표 중 하나로 login_frequency를 보고 있었다.
그래서 로그인 관련 지표를 살펴보았다.
- 평균 로그인 수
사용자의 6월 한달 간 평균 로그인 수도 상승 -> 메세지만 자주 보낸 것이 아니라 로그인한 횟수도 늘어났다.
단, 하루에 여러번 로그인한 경우 오히려 부정적인 결과일 수 있기 때문에 사용일수도 같이 보았다.
- 평균 사용일수
'로그인 수 / 사용일수' 를 해 보았을 때, control_group과 test_group 모두 하루에 약 1.xx번 정도 로그인 하는 것으로 확인된다. 따라서 하루에 로그인하는 횟수가 늘었다기 보다는 실제로 접속일수가 많아져서 로그인 수가 증가했다고 볼 수 있다.
결론 : Yammer의 핵심 지표인 login_frequency를 확인해볼 수 있는 '로그인 횟수', '사용일수(로그인 일수)'를 살펴보니 test_group이 control_group보다 로그인 횟수는 0.8회, 사용일수는 0.6일 더 높은 수치를 보였다. 따라서 다른 지표인 login_frequency에서도 test_group이 더 좋은 결과를 나타냈다.
- 방법론적 문제 발견
신규사용자도 기존사용자와 구분없이 A/B Test에 포함되었는데, 확인을 해보니 신규사용자 873명이 모두 control_group에 속해 있었다.
기존사용자는 새로운 기능에 대해서 인지를 하고 사용해볼 수 있는데 신규사용자는 그럴 수 없다. 또한 신규사용자의 경우 테스트가 진행된 6월 말에 가입했다면 물리적으로 기능을 사용할 시간이 부족했기 때문에 같은 조건에 있다고 볼 수 없다.
→ message sent, login frequency 관련 지표에서 더 낮은 결과를 가지기 쉬움
→ 신규사용자는 A/B테스트에서 배제해야 한다.
- 메세지 전송률 (신규사용자 제외)
다시 비교해 본 결과 (신규사용자가 0명인 test_group의 수치는 동일) control_group의 메세지 전송률이 2.6에서 2.9로 증가한 것을 확인할 수 있었다. 그러나 여전히 test_group에서 더 높은 수치를 보이는 것을 확인할 수 있다.
- 평균 로그인 수 (신규사용자 제외)
SELECT *,
MAX(CASE WHEN b.experiment_group = 'control_group' THEN b.users ELSE NULL END) OVER () AS control_users,
MAX(CASE WHEN b.experiment_group = 'control_group' THEN b.average ELSE NULL END) OVER () AS control_average,
MAX(CASE WHEN b.experiment_group = 'control_group' THEN b.total ELSE NULL END) OVER () AS control_total,
MAX(CASE WHEN b.experiment_group = 'control_group' THEN b.variance ELSE NULL END) OVER () AS control_variance,
MAX(CASE WHEN b.experiment_group = 'control_group' THEN b.stdev ELSE NULL END) OVER () AS control_stdev,
SUM(b.users) OVER () AS total_treated_users
FROM (
SELECT a.experiment,
a.experiment_group,
COUNT(a.user_id) AS users,
AVG(a.metric) AS average,
SUM(a.metric) AS total,
STDDEV(a.metric) AS stdev,
VARIANCE(a.metric) AS variance
FROM (
SELECT ex.experiment,
ex.experiment_group,
ex.occurred_at AS treatment_start,
u.user_id,
u.activated_at,
COUNT(CASE WHEN e.event_name = 'login' THEN e.user_id ELSE NULL END) AS metric
FROM (SELECT user_id,
experiment,
experiment_group,
occurred_at
FROM tutorial.yammer_experiments
WHERE experiment = 'publisher_update'
) ex
JOIN tutorial.yammer_users u
ON u.user_id = ex.user_id
AND u.activated_at < '2014-06-01' -- 신규사용자 제외
JOIN tutorial.yammer_events e
ON e.user_id = ex.user_id
AND e.occurred_at >= ex.occurred_at
AND e.occurred_at < '2014-07-01'
AND e.event_type = 'engagement'
GROUP BY 1,2,3,4,5
) a
GROUP BY 1,2
) b
평균 로그인 수도 test_group이 여전히 더 높았다.
- 평균 사용일수 (신규사용자 제외)
평균 사용일수 역시 test_group이 더 높은 결과를 보여주었다.
결론: 신규사용자를 제외하지 않은 분석이라는 문제를 확인하고 다시 제외처리하여 분석해보았을 때도 test_group에서 메세지 발송률, 평균 로그인 수, 평균 사용일수 모두 control_group보다 높게 나와 A/B Test가 효과가 어느정도는 있었다고 볼 수 있겠다.
현상이 발생한 하나의 원인만 찾는 오류에 빠지기가 쉬운데, 보통 여러가지 문제가 복합적으로 있기 때문에 조심스럽게 접근하는 것이 필요하다.
사용자를 type별, device별로 나누는 등 다양한 cohort로 추가 분석을 진행 해본다면 더 풍부한 분석이 될 것 같다.
'분석 프로젝트' 카테고리의 다른 글
[E-commerce] kaggle Olist 분석 | 팀 프로젝트 후기 (0) | 2024.06.03 |
---|---|
[Yammer] 검색 기능(Search Functionality) 분석 (0) | 2024.05.28 |
[Yammer] WAU(Weekly Active Users) 하락 원인 분석 | 신규유저, 기존유저 Cohort WAU, Device별 WAU (0) | 2024.05.27 |