[68일차]A/B 테스트 분석은 어떻게 구현이 되나?

김준석·2024년 2월 29일

A/B Test 분석이 어떤식으로 구현되는지 정리해보자


AB 테스트 분석 시각화 대시보드 요구 조건

AB Test별로 다음 분석이 가능해야 한다.

  • AB 테스트 전체 기간에 걸쳐 주요 지표가 비교 가능해야 한다
  • 일별로 주요 지표의 비교가 가능해야 한다 (trend)
  • 주요 지표의 경우 통계적으로 유의미한지 무의미한지 표시가 되어야 한다 (Color coding)
  • 트래픽(사용자) 메타 데이터가 있다면 이를 바탕으로 필터링이 가능해야 한다
    • 성별
    • 나이
    • 지역
    • 신규 사용자 vs. 기존 사용자
    • Acquisition channel
    • 위 정보를 통해 새 기능의 부분적인 론칭이 가능할 수 있다

여기서 어려운 점!

  • 선택된 필터에 따라 z-score 계산이 이뤄져야 한다는 점이다.
    • 지표, 날짜, 데모 그래픽 조건
  • 먼저 선택된 필터에 맞춰 raw data 수집이 이뤄져야 한다.
    • 아니면 모든 가능한 조합에 대해 미리 수집을 해놓고 필터 선택에 따라 지표들을 aggregate
    • 이는 어떤 대시보드를 사용하느냐에 따라 다르다.
      • Tableau : 모든 필터 조합에 대해 미리 계산(OLAP Cube)
      • Looker : 동적으로 SQL을 실행해서 계산

OLAP Cube란?

Tableau를 사용한다면 미리 모든 조합에 대해 데이터를 수집해야 된다.

  • A와 B별로 impression/click/purchase/paidamount에 대해
    가능한 모든 date, age, gender 조합에 대해 아래를 미리 계산
    - 샘플 수
    - 매출의 합
    - 매출 제곱의 합

  • 이걸 바탕으로 t-score 계산을 수행

  • 장점: 속도가 빠름 (데이터를 매번 읽어올 필요가 없음)

  • 단점: 필터가 변경될 때마다 데이터 수집 방법도 바뀌어야함

    이렇게 미리 모든 조합에 대해 계산된 데이터를 OLAP Cube라고 부름

OLAP Cube 예시 템플릿

각 Variant별 Category에서 나온 레이블들의 계산값들을 미리 테이블화 한 뒤 대시보드처리.

OLAP Cube 생성 SQL : Impression 예제

SELECT
 variant_id,
 'impression' category,
 datestamp,
 age,
 gender,
 count(1) AS n, -- number of sessions
 sum(num_of_items) AS sum,
 sum(num_of_items*num_of_items) AS sum2 -- square
FROM keeyong.analytics_variant_user_daily #써머리 테이블
GROUP BY 1, 2, 3, 4, 5 #Dimensions들을 그룹화

위의 코드가 결국 Test 버킷과 Control 버킷으로 나뉠 것이다.

이후 추출된 데이터를 확인해서 z-score를 확인하는 방식.

0개의 댓글