실험하기 - A/B Test의 단계별 주의사항과 Action
📍본 포스팅은 [인프런] 카일스쿨의 PM을 위한 데이터 리터러시 강의를 기반으로 요약 / 실습했습니다.
실험을 시작하는 기준
- 충분한 사용자 수가 존재
- 평가 지표를 정의할 수 있는 경우
- 사용할 수 있는 리소스가 존재하는 경우(개발, 데이터)
- 실험군과 대조군이 서로 간섭하지 않는 경우
- 법적인 이슈가 없는 경우
- 실험을 통해 배울 마인드가 존재하는 경우
무엇을 실험해야 할까?
👉 어떤 실험이 비즈니스 임팩트가 큰지 확인하기
- 제품 관점에서 제일 중요한 퍼널을 개선하는 것을 먼저 진행(퍼널 역순)
- 데이터로 실험할 영역에 하루 몇 명이 접근하는지 확인한 후, 유저 몇 명 정도에게 영향을 미치는지 확인해야 함 → 실험 기간을 결정할 때도 영향을 미침
📑 주요 실험 소재 예시
- 제품 : 특정 화면에서 A라는 기능이 있는 경우와 없는 경우 전환율 차이는?
- 제품 : 어떤 문구를 사용할 경우 전환율이 높을까?
- 마케팅 : 푸시 메시지를 어떻게 보내야 전환율이 높을까?
- 알고리즘 : 어떤 추천 시스템이 유저에게 더 잘 추천했다고 볼 수 있을까?
- 프로모션 : 어떤 고객에게 할인 쿠폰을 줘야 효과적일까?
A/B Test 단계
🏁 가설 탐색 → 실험 진행 여부 결정 → 실험 설계 → 실험 시작(기능 배포) → 실험 분석 →실험 회고
- 실험 진행 여부 결정 : 실험을 통해 해결하려는 문제가 확실한가?
- 실험 설계 : 목표, 지표, 실험 기간, 실험 방식, 멘털 시뮬레이션 & 실험을 위한 데이터 로그 설계
- 실험 시작 : 데이터가 잘 들어오는지 확인, 결과 분석 준비
- 실험 분석 : 결과 지표 확인, p-value 확인, 결과 해석
- 사후 분석(Segment 분석과 같이) 하기도 함 → 실험 종료 결정
- 실험 회고 : 실험에서 배운 것을 공유하고, 이후 Action Plan 수립
🧐 AB Test, 언제 해야 할까? (꼭 필요한지 고민해 보자)
- 비즈니스 임팩트가 예상되는데 불확실성이 존재하는 경우
- 대규모 변경이 일어나는 경우(버전 up, 화면 변경 등)
- 새로운 기능을 론칭할 경우
🧐 [실험 타깃] A와 B는 어떻게 나눌까? 어떤 유저에게 Test를 진행할까?
- 전체 유저에게 특정 비율(50:50)로 진행
- 신규 유저만을 대상으로, 실험군과 대조군을 나눠서 진행
- 특정 페이지에 진입한 유저들에게 특정 비율로 진행
- 전체 중 20%에게 실험군과 대조군을 일정 비율로 진행한 후, 전체 확대를 고민
- 특정 기능을 사용한 유저군을 대상으로 진행
🧐 [지표] 실험을 통해 어떤 지표를 개선하고 싶은가?
- Success Metric(Primary Metric) : 기능의 성공을 확인할 수 있는 성공 지표
- Sub Metric(Secondary Metric) : 기능의 성공을 보조적으로 확인할 수 있는 지표
- Guardrail Metric(Counter Metric) : 악영향이 미치면 안 되는 지표
🧐 [실험 기간] 실험을 언제, 어느 기간 동안 진행할 것인가?
- 실험 기간은 실험에 통계적으로 유의미함이 검증될 수 있는 샘플 수에 따라 달라짐
- (보통) 최소 2주는 지나야 샘플이 모이는 경우가 많다고 함
- 단, 실험 기간동안 외부 요소에 영향을 받는 시기가 적어야 함(프로모션, 연휴 등)
🧐 [통계] 입증하려는 가설이 맞을까?
- 빈도주의 접근과 베이지안 접근이 있음 → 처음에는 이해하기 쉬운 빈도주의 접근법을 택함
빈도주의 접근 | 베이지안 접근 |
일반적인 통계 분석 방법 | 빈도주의 대비 유연한 판단 방법 |
다르다 / 다르지 않다를 검정 | '얼마나' 다른지를 통계적으로 예측 |
p-value 등 알아야 하는 통계 개념 체크 | 확률 개념으로 A보다 B가 몇 % 좋다라는 결과가 나옴 |
신뢰성 있는 결과를 위해 몇 가지 규칙을 만족해야 함 | 판단 기준이 모호함(사전 확률에 주관적 믿음이 반영됨) |
많은 산업에서 사용해서 이해하기 수월 | 이해하는데까지 러닝 커브가 존재 |
- 귀무가설 : '차이가 없다'
- 대립 가설 : 통계적으로 '차이가 있다'
- p-value : 통계적으로 얼마나 유의미한지를 설명하는 값으로, 귀무가설이 참이라고 할 때 관찰한 결과나 그보다 극단적인 결과가 우연히 발생할 확률
🧐 [결과 분석] 실험 기간이 종료되면 무엇을 해야 할까?
- 가드레일 지표 확인
- Success Metric 확인 → 유의미한 상승이 있는가?
- p-value 확인 : 0.05(5%) 미만이면 귀무가설을 기각 → 두 집단의 차이가 있음(실험이 통계적으로 유의미한 영향을 미침) → 배포!
- 결과가 나타나는 양상 : 초두 효과 vs. 신기 효과
초두 효과(Primary Effect) | 신기 효과(Novelty Effect) |
최초엔 반응하지 않고, 시간이 지날수록 반응 | 최초에 신기해서 사용함 → 안정화에 시간이 걸릴 수 있음 |
🧐 [결과 분석] 실험 결과가 애매한 경우(결과가 NULL이라면?)
- A와 B를 세그먼트를 나눠서 분석해 보기
- 신규/기존 사용자
- 인구통계 기준으로
- 특정 이벤트를 경험한 사람
- 방문 빈도
- 특정 유입 채널 등
- 실험 전후로 A와 B가 어떻게 변했는지 확인
- 예) 특정 이벤트를 더 많이 한 집단이 있는가?
- A/A Test 시도
- 트래픽만 분할하고 화면은 그대로 두고 실험 진행
- 자연 발생하는 Variation을 확인할 수 있음
- A/A Test로 실험 결과를 확인할 때 기준 선을 만들 수 있음
- Decision Tree로 기준을 세우고, 프로세스를 다시 짚어보기
A/B Test를 잘 진행하기 위한 규칙
🎯 실험 전 고려할 규칙
(1) 실험의 목표가 무엇이고, 어떤 지표가 중요한지 미리 결정하기
(2) 실험의 결과 멘털 시뮬레이션하기
- 실험이 잘 되었을 땐 어떤 행동을 추가적으로 할까?
- 실험이 잘 안 되었을 땐 무엇을 해야 할까?
- 실험 결과가 Null이라면 무엇을 해야할까? (모호한 케이스도 생각해 본다)
(3) 회사에 임팩트를 줄 수 있는 실험하기 : 미시적인 영역보다는 비즈니스 임팩트를 우선시하여 실험을 선택
(4) 타기팅할 잠재 고객 구체적으로 정의하기 : 전체 고객 대상으로 하는 것은 처음엔 가능하나, 점점 구체적으로 정의하는 것이 필요
(5) 필요한 표본 크기, 최소 탐지 기간 미리 추정하기
- AB test period Calculator 활용 : 보통 Baseline이 낮고, Minimum improvement가 낮을수록 더 많은 표본이 필요함
(6) 처음부터 실험군과 대조군을 50:50으로 배포할 필요는 없음 : 점진적으로 전체 중 5%씩 배포해서 확인하는 것도 가능함
(7) 답을 정하고 실험하지 않기 : 언제나 답이 틀릴 수 있음을 인지하기
🎯 실험 중 고려할 규칙
(1) 실험이 진행되는 기간에 사내 전파하기 : 마케팅팀, CS팀에게 전파해서 실험에 영향받는 이슈가 있다면 바로 확인할 수 있는 파이프라인 마련
(2) 계획한 전체 기간에 테스트를 진행한 후, 끝나고 통계적 유의성 확인하기
- 중간에는 데이터가 잘 들어오는지 확인하고, 해석은 실험 기간이 끝난 후에!
(3) 실험 중간에 결론 내지 않기 : 가드레일 지표가 급격히 떨어진 것이 아니라면 지켜보자
🎯 실험 후 고려할 규칙
(1) 엄청 좋아 보이는 숫자는 의심하기 : 계산상의 실수를 확인
(2) 실험에 대해 잘 기록하고, 배운 내용도 기록하기
- 실험 문서(템플릿) 만들고, 배운 내용을 조직에 공유하기
(3) 분석 자동화 진행하기
- 실험 분석에 한정해 자동화하는 스크립트 개발 → 추후 실험 플랫폼을 만들 때 활용 가능
- 리소스가 부족하면 SaaS를 더 적극적으로 이용