A/B 테스트란?

Python으로 배우는 A/B Testing

Moe Lotfy, PhD

Principal Data Science Manager

A/B 테스트 소개

  • A/B 테스트란...

     
    • 어느 버전이 더 나은지 검증하는 실험
    • 지표 기반: 가입 전환율, 사용자당 평균 매출 등
    • 무작위 배정 후 결과 분석
Python으로 배우는 A/B Testing

A/B 테스트를 할까 말까?

A/B 테스트의 좋은 활용:

  • 전환율 최적화
  • 새 앱 기능 출시
  • 광고의 증분 효과 평가
  • 임상시험 영향 평가

다음 경우 A/B 테스트 지양:

  • 트래픽 부족/표본이 너무 작음
  • 명확한 가설 부재
  • 윤리적 문제
  • 기회비용이 큼
Python으로 배우는 A/B Testing

A/B 테스트 기본 단계

  1. 목표와 설계/경험 정의
  2. 등록할 사용자를 무작위 추출
  3. 사용자 무작위 배정:
    • 대조군: 현재 상태
    • 처리군: 신규 설계
  4. 사용자 행동 로그 수집 및 지표 계산
  5. 통계적 유의차 검정

A/B 테스트 단계

Python으로 배우는 A/B Testing

무작위화의 가치

  • 일반화 가능성과 대표성 확보
  • 집단 간 편향 최소화
  • 처리 효과를 분리해 인과성 확보

 

무작위 추출과 무작위 배정 그림

1 https://www.statology.org/random-selection-vs-random-assignment/
Python으로 배우는 A/B Testing

무작위 배정의 Python 예시

checkout.info()
RangeIndex: 9000 entries, 0 to 8999
Data columns (total 6 columns):
 #   Column         Non-Null Count  Dtype  
 0   user_id        9000 non-null   int64  
 1   checkout_page  9000 non-null   object 
 2   order_value    7605 non-null   float64
 3   purchased      9000 non-null   float64
 4   gender         9000 non-null   object 
 5   browser        9000 non-null   object 
dtypes: float64(2), int64(1), object(3)
memory usage: 422.0+ KB
Python으로 배우는 A/B Testing

무작위 배정의 Python 예시

checkout['gender'].value_counts(normalize=True)
F    0.507556
M    0.492444
Name: gender, dtype: float64
sample_df = checkout.sample(n=3000)
sample_df['gender'].value_counts(normalize=True)
M    0.506333
F    0.493667
Name: gender, dtype: float64
Python으로 배우는 A/B Testing

무작위 배정의 Python 예시

checkout.groupby('checkout_page')['gender'].value_counts(normalize=True)
checkout_page  gender
A              M         0.505000
               F         0.495000
B              F         0.507333
               M         0.492667
C              F         0.520333
               M         0.479667
Name: gender, dtype: float64
Python으로 배우는 A/B Testing

연습해 봅시다!

Python으로 배우는 A/B Testing

Preparing Video For Download...