1) A/B 테스트를 하는 이유
1. 표면적 이유 : 목표를 달성하기 위한 방안으로 A안과 B안 중 어느 게 더 효과가 좋은가?
2. 내재된 이유 :
N명의 트래픽/고객에 대해서만 유효한 것이 아니라,
향후 모든 유형의 고객에게 A안과 B안 중 어느 것이 확실하게 좋은가?
A와 B의 차이 때문에 생긴 결과가 맞은가?
이 결과는 우연이 아닌가?
2) A/B 테스트를 하면서 겪는 잘못된 생각
1. A/B 테스트의 결과 차이가 상당히 크거나 확실하길 바람
2. 실험 배경이 5:5로 동일하다고 생각함
- 트래픽을 균등하게 나눠야 함
- 두 그룹에 노출되는 비율에 차이가 없도록
- 실험이 공정하게 진행되었나?
3. 어쩌다 나온 이례적인 경우거나 우연이 아니라고 생각
3) A/B 테스트 설계
1. 모집단 중 그 일부인 '표본', '일부' 고객만을 대상으로 실험
'일부'를 통해서 '전체'를 추측
2. 귀무 가설 : A와 B의 결과에는 차이가 없다.
대립 가설 : A와 B의 결과에 차이가 있다.
3. 단측 검정 : A가 B보다 무조건 높을/낮을 것이다.
양측 검정 : A와 B 중 뭐가 더 높을지/ 낮을지 모르겠지만, 일단 차이는 있을 것이다.
4) A/B 테스트 결과 해석
1. A/B 테스트의 결과를 보고 한, 우리의 추측을 얼마큼 신뢰할 수 있는가?
* 점 추정 : 전환율이 45%가 나올 것이다.
* 구간 추정 : 전환율이 40~50%가 될 것이다.
* 표준 오차 : 동일하게 설계한 실험을, 동일한 기준으로 선발한 서로 다른 표본 집단을 대상으로 진행했을 때, 각 표본 집단마다 결과값의 차이
EX. 전환율 40% 점추정, 표준 오차 3% -> 37~43%
* 신뢰 구간 : 실험 결과가 실제로 포함될 것으로 예측하는 범위
EX. 실험 100번 진행, 신뢰 수준 95%, 전환율 40% 점추정, 표준 오차 3%
-> ]95번은 37~43%안에 있고 나머지 5번은 아닐 수 있음
5) 우연인지 아닌지 판단
1. P-value
신뢰 수준이 95%일 때, P-value가 4%면 유의미 함 = A와 B의 결과에는 차이가 있음
P-value가 6%면 유의미하지 않음 = A와 B는 차이가 없음
6) 간편하게 A/B 테스트 결과 계산 사이트
A/B-Test Calculator - Power & Significance - ABTestGuide.com
Standard error B ( CRB * (1-CRB ) / VisitorsB)1/2
abtestguide.com
7) 표본 크기와 유의미한 결과의 관계
1. 표본(트래픽) 사이즈와 결과의 관계
표본이 많으면 많을수록 A와 B의 결과 차이가 적더라도 '유의미하다'라고 인정해주기 때문.
실험1 : 10명 중 2명(20%) VS 10명 중 3명(30%)
실험2 : 10,000명 중 2,000명(20%) VS 10,000명 중 3,000명(30%)
실험3 : 100,000명 중 2,000명 (2%) VS 100,000명 중 2,200명 (2.2%)
실험1 < 실험2 라고 생각하지만 실험3에 대해선 판단이 잘 안섬.
BUT 실험3도 신뢰수준 95% 양측 검정 기준으로 P-value가 0.0018로 유의미함
우리의 직관 : 100,000명끼리 비교해서 차이가 고작 0.2%p 수준이다
통계 : .2%p 차이밖에 없더라도 표본이 100,000명이나 되니 이정도면 충분하다 + 우연이라고 볼 수 없다
단순히 비율을 비교하는게 중요한 것이 아님!
비율의 차이가 믿을 수 있는 결과인지 확인하는 것임
'고작 차이가 #% 이다'에 집중하지 않고,
'우연인지 아닌지'에 대해 집중하기!!
표본이 커질수록 모집단의 크기에 가까워져
추측이 정확해지고,
우연일 확률이 줄어든다
표본이 클수록, 더 작은 차이로도 유의미한 평가를 얻을 수 있음!
두 그룹의 차이가 아무리 적어도 표본만 크면 충분히 유의미할 수 있음!
8) 표본은 얼마나 모아야 할까?
1. 'A안과 B안 사이의 차이가 어느 정도 되기를 기대하느냐'에 따라 다름
(동일한 신뢰수준이라도 표본의 크기에 따라 유의미한 결과 여부가 달라질 가능성이 있기 때문)
2. A/B 테스트를 기획하고 설계한 담당자의 추측, 경험을 바탕으로 하는 수 밖에 없음
* 샘플 사이즈 계산기 사이트
https://www.optimizely.com/sample-size-calculator/#/?conversion=3&effect=20&significance=95
Sample size calculator
Plan and estimate needed audience sizes for experiments by entering a couple of quick metrics
www.optimizely.com
https://experienceleague.adobe.com/tools/calculator/testcalculator.html
Adobe Target Sample Size Calculator
experienceleague.adobe.com
표본이 많으면 많을수록 A와 B의 결과 차이가 작더라도
실험 결과가 통계적으로 유의미할 수 있음
표본이 작더라도 A와 B의 결과 차이가 크면
통계적으로 유의미할 수 있음
9) A/B 테스트 시 주의 사항
1. 표본을 늘리기 위해 무작정 기다리지 않기
- 기다리는 리소스
- 다른 실험이 대기 중이라면 리소스, 트래픽 낭비
- 실험 기간 동안 방문 유저 중 절반에게 상대적으로 좋지 않은 방안이 노출되는 중임
2. '유의미함'을 생각하기
- 내가 원하는 결과가 이기고 있으면 트래픽이 쌓이기 전에 실험 종료해버리지 말 것
3. A안과 B안을 다른 날짜에 시작하지 않기
- 같은 시간에 시작해야, 결과의 차이가 실험에 의해서인지, 다른 요소에 의해서인지 판단할 수 있음
4. 외부 요인에 좌우되지 않도록 설계하기
- 테스트 시기가 동일한가
- 타깃이 동일한가
- 사용자의 방문 국가 또는 지역이 동일한가
5. 전체 비즈니스 목표와 연결지을 수 있어야 함
- 제품 및 서비스에 대한 이해
- KPI 및 각 수치의 연관성에 대한 이해
- AB 테스트 전략 수립 (어떤 수치를 높여야 제품 및 서비스 목표를 달성할 수 있을까?)
- 최종 목표 검토 (이로 인해 서비스 전반 및 사용자 경험에 어떠한 영향을 미칠까?)
10) A/B 테스트는 실패가 없다
A와 B가 통계적으로 유의미한 차이가 없다면?
: '결국 유저들이 한 쪽 안을 특별히 선호하지 않는다' 라는 것
: 유저에 대한 러닝
11) 결과 검증 어떻게?
1. 파이썬을 통해
import pandas as pd
from scipy.stats import chi2_contingency
def click_abtest(a_click, total_a, b_click, total_b):
click = [a_click, b_click] # A와 B의 클릭한 유저 수
no_click = [total_a - a_click, total_b - b_click] # A와 B의 클릭 안 한 유저 수
cont_table = pd.DataFrame([click, no_click], columns=['A', 'B'], index=['click', 'no_click'])
chi2, p_val, d_f, expected = chi2_contingency([click, no_click])
print("카이제곱 통계량 :", format(chi2, '.5f'))
print("pvalue :", format(p_val, '.5f'))
# A의 클릭수(13)와 A의 데이터 전체 개수(244), B의 클릭수(23)와 A의 데이터 전체 개수(287)를 정의한 클래스에 넣어줍니다.
click_abtest(13, 244, 23, 287)
# 결과
>>> 카이제곱 통계량 : 1.11053
>>> pvalue : 0.29197
## pvalue 가 0.05보다 높으면 디자인 시안 B가 더 낫다고 말할 수 없다
※ 참고사이트)
새로운 이야기들 | 요즘IT
요즘 IT 이야기가 가득한 요즘IT
yozm.wishket.com
'𝘼𝙣𝙖𝙡𝙮𝙨𝙞𝙨 > ꜱᴛᴜ𝙳𝚈' 카테고리의 다른 글
통계 개념 (1) | 2024.04.17 |
---|---|
의사결정을 위한 A/B 테스트 - 당근마켓 테크 블로그 리뷰(5) (0) | 2023.07.15 |
따뜻한 거래 후기를 위한 A/B TEST - 당근마켓 테크 블로그 리뷰(4) (0) | 2023.07.14 |
프로덕트 데이터 분석가의 역할 - 당근마켓 테크 블로그 리뷰(3) (0) | 2023.07.13 |
텍스트 속 주소 인식 - 당근마켓 테크 블로그 리뷰(2) (1) | 2023.07.13 |