2021-09-04 프롬 특강 발표자료입니다.
---
많은 사람들이 A/B 테스트가 중요하다고 말합니다.
그런데 우리는 뭘 믿고 A/B 테스트에 의사결정을 맡기는 걸까요?
A/B 테스트는 그냥 돌리면 성과를 만들어주는 마법의 도구가 아닙니다.
신뢰할 수 있는 실험 결과를 위해 어떤 고민이 더 필요한지 살펴보려고 합니다.
2. 이민호
• 데이터 분석가로 커리어를 시작해서, 현재는 프로덕트 오너로 일하고 있습니다.
• 스타트업 데이터라이즈에서 이커머스를 위한 올인원 그로스 솔루션을 만듭니다.
• 비즈니스 의사결정에 도움을 줄 수 있는 데이터 활용 방법에 관심이 많습니다.
3. 많은 사람들이 A/B 테스트가 중요하다고 말합니다.
그런데 우리는 뭘 믿고 A/B 테스트에 의사결정을 맡기는 걸까요?
• 누군가 여러분의 서비스에서 A/B 테스트를 수행하고 결과를 가져왔습니다.
그 결과를 믿고 의사결정 하실 수 있나요?
• 실험 결과를 신뢰할 수 있으려면 어떤 것들이 필요할까요?
4. 실험 결과를 신뢰할 수 있으려면 무엇을 더 고민해야 할까요?
• (1) A/B 테스트가 어떤 방식으로 동작하는지 이해하고 있어야 합니다.
• (2) 실험을 잘 진행하기 위해 필요한 디테일을 고민해야 합니다.
• (3) 실험이 끝나고 결과를 분석해야 합니다.
5. A/B 테스트는 어떤 방식으로 동작할까요?
🧐
왜 굳이 "A/B 테스트" 를 사용하는 걸까요?
실제 A/B 테스트 환경에서는 A, B군을 어떻게 나눌까요?
신뢰할 수 있는 A/B 테스트 결과를 얻기 위해서는 어떤 조건들이 필요할까요?
실험 결과를 어떻게 해석해야 할까요?
6. 왜 굳이 "A/B 테스트" 를 사용하는 걸까요?
CASE : Office 365
• 마이크로소프트의 구독 서비스인 오피스 365 사용자 데이터를 분석해보니,
에러 메시지를 보거나 오류를 겪은 사람들의 구독 해지율이 더 낮았다고 합니다.
• 그렇다면 에러를 더 많이 발생시키면 사람들의 구독 해지율이 낮아질까요?
7. 왜 굳이 "A/B 테스트" 를 사용하는 걸까요?
"상관관계는 인과관계가 아닙니다."
• 데이터를 통해 확인할 수 있는 것은 상관관계이지 인과관계가 아닙니다.
• 오피스 365 케이스는 <서비스 사용량>이
<에러>와 <구독 해지율> 모두에 영향을 미치면서 발생한 현상입니다.
• 오피스 365의 헤비 유저들은 서비스를 오래 사용하다 보니 자연스럽게 에러를 많이 경험하게 되었습니다.
• 무엇인가 값을 바꿨을 때 직접적인 영향을 받아 변하는 것이 있다면 인과관계가 있다고 볼 수 있습니다.
• 하지만 인과관계가 없더라도 두 변수 사이에 연관성이 존재할 수 있습니다. 이런 연관성은 상관관계라고 합니다.
서비스 사용량
에러 구독 해지율 인과 관계
상관 관계
8. 왜 굳이 "A/B 테스트" 를 사용하는 걸까요?
인과 관계로 인한 효과를 파악하려면 어떻게 해야 할까요?
• 에러를 많이 볼 수록 구독 해지율이 낮아진다는 것은 상식적으로 말이 안되니, 이상하다는 것을 빨리 알아챌 수 있습니다.
• 그러면 일반적인 상황에서는 어떻게 이런 함정을 피할 수 있을까요? 🤔
• 기존 사이트 A안에서 구매 과정의 UX를 개선한 B안을 테스트해보기로 했습니다.
• 의도한 대로 된다면 구매전환율이 오를 것이라고 기대하고 있습니다.
• 이 때, UX 개선이 구매전환율에 미치는 영향을 어떻게 확인할 수 있을까요?
9. 왜 굳이 "A/B 테스트" 를 사용하는 걸까요?
인과 관계로 인한 효과를 파악하려면 어떻게 해야 할까요?
• A안을 겪었을 때와 B안을 겪었을 때
각각 구매하는지 여부를 비교해야 합니다.
• A안과 B안의 미래를 보고 와서 비교하는 것이
가장 이상적으로 인과 효과를 계산할 수 있는 방법입니다.
• 하지만 현실에서는 두 가지 방안 중에서
우리가 선택한 한 가지 케이스만 실제로 겪을 수 있습니다.
(1) 이상적인 경우 (2) 현실적으로 계산하려면?
• 사람들을 두 그룹으로 쪼개서
한 그룹은 A안만, 다른 그룹은 B안만 보여주고 평균을 비교합니다.
• 두 그룹의 특성이 모든 면에서 너무 비슷해서
어느 그룹인지 이름표를 붙이지 않을 경우 구분하기 어려울 정도가 되면,
두 그룹의 평균적인 차이가 바로 B안으로 인한 인과 효과라고 볼 수 있습니다.
A B
A B
10. 왜 굳이 "A/B 테스트" 를 사용하는 걸까요?
A, B군을 어떻게 나누어야 할까요?
• 사람이 구분하기 어려울 정도로 비슷하게
2개 그룹으로 나누려면 어떻게 해야 할까요?
• 성별, 연령대, 모바일 기기, 관심사, 구매 성향 등등
우리가 고민해야 하는 기준들은 어마어마하게 많습니다.
• 어떤 사람이 A안과 B안 중 어디에 배정되어야 하는지를
동전 던지기를 통해 확률적으로 결정하면 문제가 해결됩니다.
11. 실제 A/B 테스트 환경에서는 A, B군을 어떻게 나눌까요?
실험 그룹을 나누는 방식은 다음과 같은 조건을 만족해야 합니다.
• 같은 실험에서는 유저를 항상 동일한 그룹에 배정합니다.
• 같은 유저라도 실험이 바뀌면 새롭게 그룹을 배정합니다.
• 어떻게 하면 이 조건을 쉽게 만족시킬 수 있을까요?
12. 실제 A/B 테스트 환경에서는 A, B군을 어떻게 나눌까요?
버킷을 사용한 그룹 배정
• 유저 식별자와 실험 식별자에 해시 함수를 적용하고,
해당 값을 바탕으로 실험 그룹을 배정합니다.
• 해시 함수는 특정한 값을 받았을 때 임의의 숫자를 반환합니다.
(입력하는 값이 같으면 반환되는 숫자도 같습니다.)
• 해시 함수를 적용한 결과를 1000으로 나누었을 때
나머지가 얼마나 되는지 구합니다.
• 전체 트래픽의 20%만 실험을 진행하고 싶다면
0~199에 해당 하는 유저가 대상이 됩니다.
• A 그룹과 B 그룹을 50:50 으로 나누고 싶다면,
값이 0~99 이면 A그룹, 100~199 이면 B그룹에 배정합니다.
유저 식별자 실험 식별자
해시 함수 적용
실험 대상자 판별
실험 그룹 배정
"miika" "exp-01"
457843069
(1000으로 나눈 나머지는 69)
전체 트래픽의 20%만 실험 대상
(0~199 에 해당하는 유저가 대상)
A 그룹과 B그룹은 50:50
(0~99 사이의 값은 A그룹에 배정)
13. 신뢰할 수 있는 A/B 테스트 결과를 얻기 위해서는 어떤 조건들이 필요할까요?
실험 결과를 신뢰할 수 있으려면 다음과 같은 조건을 만족해야 합니다.
• A그룹과 B그룹이 균일하게 나누어져야 합니다.
• A그룹과 B그룹은 서로에게 영향을 미쳐서는 안됩니다.
• 의사결정이 가능할 정도로 충분히 많은 데이터를 확보할 수 있어야 합니다.
• 대상자가 실험 여부를 인지하게 되면 편향이 발생할 수 있습니다.
이와 같은 조건들을 만족하지 못하면,
A/B 테스트 결과를 신뢰할 수 없는 상태가 될 수 있습니다.
14. 실험 결과를 어떻게 해석해야 할까요?
기본적인 컨셉 : "무죄 추정의 원칙"
• p-value를 사용하는 일반적인 통계적 테스트는
무죄 추정의 원칙과 유사한 방식으로 의사결정이 진행됩니다.
• 확실한 증거가 나오기 전까지는 "증거 불충분" 상태로 봅니다.
• 통계적으로 판단할 수 있을 정도로 데이터가 쌓이고,
두 그룹간에 유의미한 차이가 존재하면 결론을 내립니다.
• 유의미한 차이가 존재하는지를 판단하기 위해 p-value를 사용합니다.
15. 실험 결과를 어떻게 해석해야 할까요?
p-value는 도대체 무엇일까요?
• A군과 B군에 각각 다른 시안을 보여주고 클릭률을 비교하는 실험을 진행하여 p-value를 계산했습니다.
• 이 때 p-value는 동일한 샘플 수로 A군과 B군을 나누고 같은 시안을 보여줬을 때도
클릭률이 지금보다 더 크게 차이가 날 확률을 의미합니다.
• 두 시안의 실제 클릭률에 큰 차이가 없다면 10% vs 10.1%,
동일한 시안을 보여줄 때 우연히 그 이상 0.1% 이상 차이가 날 확률이 높습니다. 이 경우 p-value 값이 높아집니다.
• 두 시안의 실제 클릭률에 큰 차이가 있다면 10% vs 15%,
동일한 시안을 보여줄 때 우연히 그 이상 5% 이상 차이가 날 확률은 높지 않습니다. 이 경우 p-value 값이 낮아집니다.
• p-value는 "A안과 B안에 차이가 없을 확률"을 의미하는 것이 아닙니다. 해석할 때 주의해야 합니다.
16. 실험 결과를 어떻게 해석해야 할까요?
구체적인 의사결정 절차는 다음과 같습니다.
1. A안과 B안 사이에 차이가 없을 것이라고 최대한 보수적으로 가정합니다.
• 이러한 가정을 귀무가설 이라고 합니다.
2. 유의수준을 설정하고 실험을 수행합니다.
• 보통 유의수준은 0.05로 설정합니다.
• 100번 중에 5번 정도는 두 안에 실제로 차이가 없는데도 차이가 있다고 판단해버리는 오류가 발생할 수 있습니다.
3. 실험이 끝나면 p-value를 계산하고, 이 값을 유의수준과 비교합니다.
• p-value 값이 유의수준보다 작으면, 두 안 사이에 차이가 없다는 귀무가설이 통계적으로 유효하지 않다고 판단합니다.
• p-value 값이 유의수준보다 크거나 같으면, 귀무가설이 여전히 유효하다고 판단합니다.
17. 실험 과정에서 어떤 것들을 주의해야 할까요?
🔬
(1) 실험을 어떻게 설계해야 할까요?
(2) 실험 중에 주의해야 하는 것은 어떤 것들이 있나요?
(3) 실험이 끝나고 무엇을 해야 할까요?
18. (1) 실험을 어떻게 설계해야 할까요?
A/B군을 나누는 기준이 무엇인지 결정합니다.
• 세션, 유저, 디바이스 등 다양한 기준을 통해 A/B 군을 나눌 수 있습니다.
• 일반적으로는 유저를 기준으로 하는 경우가 많습니다.
• 유저를 구분하는 방식은 서비스, 환경에 따라 크게 달라질 수 있기 때문에 그에 맞게 실험을 구성합니다.
19. (1) 실험을 어떻게 설계해야 할까요?
어떤 지표로 평가할지 결정합니다.
• 실험하고자 하는 지표를 미리 추출해서 분석해보세요.
• 측정을 못하는 상황이거나
애초에 측정할 수 없는 값인데 실험부터 고민하려고 하지 마세요.
• 지표를 어떻게 계산하는지 확인하세요.
• 특히, 비율의 경우 분모와 분자를 정확히 파악하세요.
• 예) 구매전환율? 🤔 [구매 / 상품 클릭] vs [구매 / 상품 노출]
20. (1) 실험을 어떻게 설계해야 할까요?
어떤 실험 방식을 사용할지 결정합니다.
이런 방식도 있어요
순차 가설 검정 Sequential Test
• 필요한 데이터 수를
사전에 계산하기 어려울 때 사용합니다.
베이지안 A/B 테스트 Bayesian A/B Test
• 계산과정이훨씬복잡하지만,
"B안이A안을이길확률"등직관적인결과를도출할수있습니다.
• 결과의 불확실성을 더 명확하게 계산할 수 있습니다.
• 사전에 알고 있는 도메인 정보를 반영할 수 있습니다.
적응형 테스트 Multi Armed Bandit
• A/B 테스트를 진행하면서
성과에 따라 트래픽을 실시간으로 조정합니다.
• 효과를 검증하는 것보다
최종 결과를 극대화하고 싶을 때 사용합니다.
일반적인 통계적 검정
• p-value 를 계산하여 통계적으로 유의미한 결과인지 계산합니다.
• 실험 전에 필요한 데이터 수를 계산해서, 그만큼 수집한 뒤에 의사결정을 해야 합니다.
대부분 여기서 시작합니다
21. (1) 실험을 어떻게 설계해야 할까요?
데이터가 얼마나 필요한지 확인합니다.
• 필요한 데이터 수를 계산하기 위해 결정해야 하는 값 (전환율 기준)
• 기본 전환율 Baseline Conversion Rate
• 실험의 민감도 MDE : Minimum Detectable Effect
• 신뢰도 Statistical Significance
• 검정력 Power
현재 기존 안의 전환율
얼마나 차이가 났을 때부터 개선 여부를 판단할까?
두 안에 차이가 없을 때 없다고 판단하는 정확도 (보통 95%를 사용)
두 안에 차이가 있을 때 있다고 판단하는 정확도 (보통 80%를 사용)
https://www.optimizely.com/sample-size-calculator/
https://www.evanmiller.org/ab-testing/sample-size.html
22. (1) 실험을 어떻게 설계해야 할까요?
데이터가 얼마나 필요한지 확인합니다.
• 데이터 수 결정 원칙
• 기본 전환율이 낮을수록 데이터가 더 많이 필요합니다.
• 디테일한 차이를 감지하려면 데이터가 더 많이 필요합니다.
• 실험의 정확도를 높이려면 데이터가 더 많이 필요합니다.
1% 5% 10% 20%
1% 15,563,867 2,986,813 1,414,681 628,615
5% 626,231 120,146 56,885 25,255
10% 157,697 30,244 14,313 6,347
20% 39,986 7,663 3,623 1,602
Baseline Conversion Rate
MDE
(Relative)
신뢰도 95%, 검정력 80% 로 고정된 상황을 가정합니다.
전환율을 기준으로 A/B 테스트를 진행한다고 할 때,
각 케이스에 따라 그룹별로 데이터가 얼마나 필요할까요?
23. (1) 실험을 어떻게 설계해야 할까요?
A/A 테스트를 통해 실험의 안정성을 확인합니다.
• 각 그룹을 나눈 다음에 모든 그룹에 동일한 안을 보여줍니다.
• 그룹이 의도했던 비율로 균일하게 나누어지는지 확인합니다.
• 지표의 변동성이 얼마나 되는지 확인합니다.
• 일반적으로 사용하는 95% 신뢰도를 가지는 실험을 진행한다면,
A/A 테스트를 100번 진행했을 때 5번 정도는 두 그룹간의 지표가 다르다는 결과가 나올 수 있습니다.
• 굳이 실험을 별도로 진행하지 않더라도, 기존 데이터를 통해 분석해 볼 수 있습니다.
24. (2) 실험 중에 주의해야 하는 것은 어떤 것들이 있나요?
실험을 시작했다면, 마무리하기 전까지 다음 항목들을 조심하세요.
• 사전에 계획한 대로 실험을 진행해야 합니다.
• 의사결정 기준이 되는 지표를 실험 중간에 바꾸지 않습니다.
• 실험 과정에서 A안과 B안이 서로에게 영향을 주지 않도록 주의하세요.
• 각 안이 서로 다른 세계처럼 분리되어 있을 때, 가장 정확하게 차이를 판단할 수 있습니다.
• 충분한 데이터를 확보하기 전에 의사결정하지 않도록 조심하세요.
• 데이터가 많이 쌓이지 않은 실험 초기에는 결과가 계속 변동하거나 실제와 다른 결론이 나올 수 있습니다.
• 요일에 따라 다른 영향이 있을 수 있기 때문에, 가능하면 일주일 단위로 실험 기간을 잡는 것이 좋습니다.
25. (3) 실험이 끝나고 무엇을 해야 할까요?
실험이 끝났다고 다 끝난 것이 아닙니다. 결과를 분석해보세요.
• A군과 B군이 의도했던 비율로 잘 나누어졌는지 확인하세요.
• 의도한 비율대로 그룹이 나누어지지 않았다면,
실험 과정에 문제가 없는지 확인해야 합니다.
• 유저의 다양한 특성이 A군과 B군에서 동일한 비율로
고르게 분포하는지 확인하세요.
• 특성에 따른 비율이 일정하지 않다면,
실험 결과의 신뢰성이 떨어집니다.
• 그룹을 나누는 실험 로직에 문제가 없는지 확인해야 합니다.
• 목표 지표 외에 다른 지표에 영향이 있었는지 확인하세요.
• B군이 A군보다 클릭률은 더 높은데 전환율이 크게 떨어지는 경우
• 배너의 크기를 키웠더니 배너 클릭률도 오르고 닫기 클릭률도 오르는 경우
• A군과 B군 사이에서 속도나 성능, 에러 등
의도치 않은 차이가 발생하지 않았는지 확인하세요.
• 두 그룹의 사이트 로딩 속도가 크게 차이나는 경우
• 특정 그룹에서 에러가 발생하는 경우
• 아웃라이어가 존재하는지 확인하세요.
• 헤비 유저, 도매상 등 일반적인 경우보다 높은 수치를 보이는 유저
• 봇 또는 어뷰징 유저
• 실험이 유저들에게 장기적으로 영향을 미치고 있는지 확인하세요.
• 실험의 효과가 일정 시간이 흐른 뒤에 나타날 수 있습니다.
• 실험으로 인해 유저의 사용성이 점진적으로 변화되었을 가능성이 있습니다.
• 실험 그룹별 코호트 분석을 시행해서 실험의 장기적인 영향을 확인할 수 있습니다.
26. 마무리
• A/B 테스트는 돌리기만 하면 성과가 나오는 마법의 도구가 아닙니다.
• 신뢰할 수 있는 실험 결과를 얻기 위해서는 많은 고민이 필요합니다.
• A/B 테스트를 고객을 이해하기 위한 과정으로 활용해 보세요.
27. Q & A
A/B 테스트를 시스템화한 사례가 있다면 공유 부탁드립니다.
초기 아이디어 단계에서도 A/B 테스트를 할 수 있을까요?
사전 질문