- 주제: 랜딩 페이지 A/B 테스트 대시보드 만들기
- 배경: Product Owner의 요청 - 실험 결과를 분석할 수 있는 대시보드 작업을 진행해주세요!
- 실험 상황 시나리오
이커머스 K사는 웹사이트의 랜딩 페이지 UI 실험을 진행했습니다. 유저를 실험군과 대조군으로 나누어 랜딩 페이지 구 버전 A안과 새 버전 B안을 비교하여 약 1달 동안 실험이 진행 되었어요. 실험 결과 데이터는 'ab_data.csv' 파일에 쌓였습니다. A/B 테스트의 성공 지표를 컬럼 converted(페이지 전환 유무)를 활용하여 두가지 랜딩 페이지 실험 결과를 검증하고 싶습니다.
✅ 실험 진행 기간: 약 1달간(2017/1/2 - 1/24)
✅ 실험 대상: 총 약 29만명 랜딩 페이지 유입 유저 → 실험군(약 14만명), 대조군(약 14만명)
✅ 실험 목표: 유저의 랜딩 페이지 전환율 상승
✅ 성공 지표(실험이 성공했다고 판단할 수 있는 지표): conversion rate(%)
✅실험 검증 방법: t-test
- 데이터 출처: kaggle, A/B testing, LUYUAN ZHANG, 2018
└ user_id: 유저 아이디(약 29만명)
└ timestamp: 2017-01-02 ~ 2017-01-24
└ group: 대조군(control), 실험군(treatment)
└ landing_page: old_page, new_page
└ converted: 랜딩 페이지 전환 유무(1,0)
- 대시보드 요구 사항
└ 대시보드 뷰어: 프로덕트팀 구성원(Product Owner, Product Analyst, UI Designer, Software Engineer)
└ 지표 선정: conversion rate(%)
└ 대시보드 구성
· 레이아웃 규격: 일반 데스크톱 모니터(1920 x 1080)
· 컬러: 컬러 팔레트 자유롭게 활용
· 모든 통계량은 유저 기반으로 집계
- 과제 요구 사항 및 제출본
(1) 난이도 하(필수)
- 워크시트 1번: 그룹별 유저 비중 파이 차트 시각화
- 워크시트 2번: 그룹별 평균 전환율 막대 그래프 시각화
- 워크시트 3번: 일별 그룹별 평균 전환율 선 그래프 시각화
- 워크시트 4번: 그룹별 유저 고유 카운트 요일별 캘린더 차트 만들기
(2) 난이도 중 (필수)
- 워크시트 5번: 데이터 정합성 체크 & 전처리 작업 (그래프는 미포함)
└ control인데 new page, treatment인데 old page인 경우 유저 아이디 제거
└ control은 old page, treatment는 new page로 분류된게 정확한 상태
└ 방법: 계산된 필드 만들기 또는 필터 활용
- 워크시트 6번: 도넛 차트 활용 평균 전환율 지표 카드 만들기
└ 방법: [문서 참고]
- 워크시트 7번: start date와 end date 매개변수 필터 만들기
└ 방법: [문서/영상 참고] (매개 변수 만들기 → 일자별 조회 필드 만들기 → 필터 만들기)
└ 일별 전환율 또는 유저 카운트 → 완성된 대시보드에 해당 필터 표시
(3) 난이도 상(+ 통계) (선택)
- 워크시트 8번: t-test 텍스트 표시
└ 방법: [문서 참고] (t-score 계산된 필드 만들기 → t-통계량을 p-value값으로 변환)
[문제 풀이]
* 워크시트 1~7번에 담긴 시각화 내용과 유사한 내용은 실전 프로젝트 포스팅으로 정리하여, t-test 풀이만 추가
1. t-test 개념
- 귀무가설: 일반적인 사실 또는 우리가 실험에서 틀리길(기각되길) 바라는 가설
- 대립가설: 우리가 실험에서 맞다고 입증하고자 하는 가설, 차이가 있음을 실험을 통해 입증하고자 하는 가설
- p-value
└ 귀무가설이 맞다는 가정에서 실제 실험 결과와 같이 귀무가설을 지지하는 결과가 나올 확률
└ 어떤 실험에서 귀무가설이 “두 그룹의 평균은 같다”라면, p-value는 두 그룹의 평균이 같다는 결과가 나온 확률
└ p-value가 임의의 수준(ex. 0.05)보다 작으면 귀무가설이 잘못됐을 가능성이 높아 기각하고, 대립가설을 채택
- 가설 검정(t-test)
└ 두 그룹 간의 차이가 통계적으로 유의미한지를 검정하는 방법 중 하나
└ 일반적으로 서로 독립적인 두 그룹간의 비교를 통해 두 그룹의 평균값이 다른지를 검정
└ t-test 결과, 귀무가설이 기각되면 두 그룹 간의 차이는 통계적으로 유의미하다는 것을 의미
2. t-test를 위한 t-score 공식 (two-sample t-검정)
- t-score는 두 그룹 간의 평균 차이를 합동 표준 편차(표준 오차)로 나눈 값
└ (분자) 두 그룹의 평균 전환율과 평균 전환율의 차이
└ (분모) 합동 표준 편차(두 그룹의 평균 전환율 차이를 얼마나 확신할 수 있는지 측정하는 방법)
└ 단, n값이 충분히 크고 태블로상 계산이기에 자유도는 고려하지 않음
- 합동 표준편차 부분 수식 풀어서 이해해보기
└ 그룹1의 표준편차의 제곱 / 그룹1의 사이즈(고유 유저수) + 그룹2의 표준편차의 제곱 / 그룹2의 사이즈(고유 유저수)
└ 두 값을 더한 수치를 마지막으로 루트(제곱근) 처리!
3. 태블로에서 t-test 계산하기
1) 측정값으로 쓸 계산식
① 그룹별 전환수 필드
# ctrl_cnt
if [Group] = 'control' then [converted] end
# test_cnt
if [Group] = 'treatment' then [converted] end
② 그룹별 고유 유저 사이즈 필드
# crtl_sample size
countd(if [Group] = 'control' then [User Id] end)
# test_sample size
countd(if [Group] = 'control' then [User Id] end)
2) t-score을 구하는 계산식
- STDEV: 표본 집단의 표준 편차
- ABS: 절댓값 반환하는 함수
- POWER: ^(거듭제곱)
- SQRT: 제곱근을 반환 (루트)
ABS(AVG([ctrl_cnt]) - AVG([test_cnt])) /
SQRT((POWER(STDEV([ctrl_cnt]), 2) / [crtl_sample size] )
+
(POWER(STDEV([test_cnt]), 2) / [test_sample size] ))
3) t-score를 p-value로 변환해주는 계산식 [문서참조]
2 * ( .5 * exp(-1.2 * power(abs([t-score 계산된 필드명]), 1.3) ) )
4) 정답 및 해석
- p-value가 0.18로 임의 수준(0.05)보다 크므로 랜딩페이지 A안과 B안의 평균 전환율에 유의한 차이가 있다고 보기 어려움
5) 오답 체크
- 제출한 p-value값이 0.36으로 정답(0.18)과 상이하여 틀린 부분 확인
└ t-score 계산식 분자에 들어가는 전환수 조건에 0이 들어가면서 평균값이 다르게 집계됨
└ 하기 수식에서 [else 0]을 제외하거나 [else null]로 수정 필요
if [Group] = 'treatment' then [converted] else 0 end
if [Group] = 'control' then [converted] else 0 end
'문제풀이' 카테고리의 다른 글
머신러닝: 개인 과제 풀이 및 해설 정리 (1) | 2024.02.05 |
---|---|
데이터 분석 기초: 개인 과제 풀이 및 해설 정리 (1) | 2024.01.29 |
파이썬: 개인 과제(필수) 풀이 및 해설 정리 (1) | 2024.01.29 |
SQL: 개인 과제 풀이 및 해설 정리(필수) (1) | 2024.01.10 |