*본 포스팅은 구글 데이터 사이언티스트 출신인 DataInterview 님의 유튜브 영상을 참고해 만들어졌습니다
a/b 테스트는 기본적으로 a와 b 옵션 중 우리 프로덕트를 개선하기 위해 어떤 선택을 할 것이냐는 문제를 수치를 이용해 의사결정을 내리기 위한 과정 중 하나다. 지금까지 내가 알고 있던 a/b 테스트 메트릭은 그저.. 랜덤한 집단인 a 그룹과 b 그룹에 각각 a 행동과 b 행동을 하고, 클릭율, 전환율, 오픈율과 같은 수치를 이용해 뭐가 더 나은 것인지 판단하는 것이다.
그런데, 항상 궁금했던 점이 있다. "어디까지가 통계적으로 유의미한 지표인가", 만약 메트릭들을 비교했을 때 수치상으로 5프로 정도의 차이가 났다면 이는 통계적으로 유의미한 결과인가? , "p-value 만 참고해 의사결정을 내리는게 맞는가?"
이에 대한 대답은 "상황마다 다르다" 이다. 저 통계 수치가 우리가 보려는 1차 메트릭에만 영향을 준 게 아니라, 2차 메트릭에도 영향을 주며 편향을 불러일으켰을수도 있고, 외부의 통제 불가한 어떤 다른 요인 (재난, 경쟁사의 우위 점령 등) 에 따라서 테스트 결과값에 영향을 주었을 수도 있다. 그래서 A/B 테스트를 공부하다보면 결국 의사결정을 내리기 위한 "명확한 가이드라인" 이나, 통계적으로 "유의미한 수치 기준" 같은건 없는 것 같다. 다만, a/b 테스트를 할 때 고려해야 할 사항들과 몇가지 사례를 학습하면서 점점 더 좋은 해석에 도달할 수 있겠다는 점에서, a/b 테스트를 설계하기 위한 가이드라인으로 사용하고자 이 포스팅을 쓰게 되었다.
1. A/B 테스트 절차
우선, A/B 테스트는 기본적으로 다음과 같은 절차를 따른다
1. 문제 정의 : 해결하려는 문제는 무엇인가? 우리의 유저에게 묻고 싶은 것은 무엇인가?
2. 가설 정의: 귀무가설과 대립가설을 세우자
3. a/b 테스트 실험 설계: 어떤 유저를 타깃해 실험을 할것인가?, 우리가 실험할 파라미터는 무엇인가?
4. a/b 테스트: 실제로 테스트를 하며 데이터가 수집되는 과정이다.
5. 유효성 검증: 테스트 과정에서 데이터가 잘못 수집되거나, 버그가 일어나는 등의 현상은 없었는가?
6. 결과 해석: p-value 와 1차, 2차 metric, 참고지표 등의 변화를 보면서 결과를 해석한다
뭐 그러니까, 그렇게 엄청나게 대단한 데이터 기술이 들어갔다거나, 어려운 코딩이 필요한 task 는 아니다 (개인적인 의견입니다) 하지만 비즈니스 의사결정의 파급력은 중대하기 때문에, 결정을 내리는 데에 있어 내가 할 실험을 분명히 하고, 의사결정의 과정에서 어떤 요인으로 인한 편향된 사고를 하진 않았는지를 되짚어보는게 더 중요할 것 같다.
2. 실험 상황 정의
지금 당신이 보고있는 이 웹사이트는 티스토리 블로그로, 글의 정렬 순서는 시간순이다. 그런데, 여기에 유저의 검색어나 방문 경로에 따라서 다른 글의 정렬 순서를 제공하는 추천 알고리즘을 넣는다고 가정해보자. (티스토리는 그렇게 고급 기능을 제공하진 않는다 ^^) 우리는 어떻게 실험을 설계해야할까?
우선 이 웹사이트를 이해해보자. 글쓴이 본인의 이 티스토리 블로그는... 배운 내용을 정리하고 동시에 블로그에 찾아온 방문자들이 원하는 / 관심있는 정보를 더 잘 제공함으로서 방문자들이 웹사이트에 오래 체류하게 하고, 더 많은 광고수익을 내려는 것이 목적이다.
따라서, 이때 개선해야 할 예시 지표로는, "유저의 평균 체류 시간", "유저의 방문 당 확인한 게시글 개수", "유저의 평균 카테고리 탭 클릭 횟수", "좋아요/댓글 등의 직접적 반응 지표" 등이 있을 수 있다.
3. 유저 여정 탐색
다음으로, 우리 웹사이트를 방문하는 유저의 여정을 탐색하고 우리가 타깃할 유저는 어떤 단계에 있는 유저인지 확인할 필요가 있다. 위와 같은 그림의 방문자 퍼널에서 (예시 사진으로 대체합니다) 타깃할 유저는 어떤 퍼널에 해당하는 유저인지 확인해 보자.
4. Metric 지정
이제 우리는 개선하고 싶은 지표를 정해야 한다. 이 때, 모든 지표를 참고하면 더 많은 정보를 얻을 수 있을거라고 생각할지도 모르겠지만, 실상 그렇진 않다.
- 측정이 가능한 지표인지
- 변화를 일으킬 수 있는 지표인지
- Sensitive 한 지표인지 (변동성이 너무 높은 지표면 테스트 하기 부적합해요 ex. 머무른 총 시간)
- 짧은 시간에 측정이 가능한 지표인지 (a/b 테스트는 굉장히 빠르게 진행합니다 1-2 주)
이런 점들을 다 고려해서 측정하고 싶은 지표를 구해보자. 나의 경우에는 메인 지표로 "유저의 방문 당 확인한 게시글 개수" 를 사용한다고 가정하겠다
5. 가설 세우기
귀무가설(Null Hypothesis) : 시스템을 바꾸기 전과 후의 유저의 방문 당 확인한 게시글 수 에는 큰 차이가 없을 것이다
대립가설(Alternative Hypothesis) : 시스템을 바꾼다면 유저의 방문 당 확인한 게시글 수는 유의미한 차이가 있을 것이다.
우리는 실험을 통해 귀무가설을 반박하고 대립가설을 채택할지, 말지를 결정하게 될 것이다.
이 때, 이 수치가 통계적인 차이가 있는지를 검증하는 지표로 p-value 를 이용하게 되는데, (보통 95% 유의수준을 따르기 때문에 0.05 미만이면 귀무가설을 반박하고 대립가설을 채택한다) 귀무가설, 대립가설과 p-value 가 무엇인지에 대해서는 글쓴이가 학생 시절 써둔 이 게시글들을 참조하길 바란다.
https://blog.naver.com/didpql533/222691075234
[통계] 가설검정, 귀무가설, 대안가설
1. 가설검정과 귀무가설 여기 모집단을 추출해 가설을 새우고 그것을 검증하는 일련의 실험이 있다. 우리는...
blog.naver.com
https://blog.naver.com/didpql533/222691277811
[통계] T-test
T-test 란... 모집단의 표준편차가 알려지지 않았을 때.. 표본의 분산과 표준편차를 통해 모집단의 평균을...
blog.naver.com
검정력 (statistical power): 대립가설이 사실일 때, 이를 채택할 확률
은 보통 80프로로 잡는다. 그러니까, 검정력이 80프로라면, 대립가설이 사실이더라도 귀무가설을 채택할 확률은 (2종 오류) 20프로가 되는 것이다.
최소 효과 기준 (MDE) : MDE 는 우리의 메트릭이 개선되어야하는 최소 단위라고 생각하면 된다. 예를 들어, 저 검색 시스템을 바꾸기 위한 개발 비용이 미래 불러일으킬 파급효과보다 작으려면! (적자가 안 나려면! ㅋㅋㅋ) 5프로 이상 지표가 개선되어야 한다고 가정해보자.
그래서 보통은 그 효과를 일으키리 위해 a/b 테스트를 할 유저의 표본의 최소 단위를 구하기 위한 지표로 참조된다. 만약 모수가 너무 적다면, 그 A/b 테스트는 유의미하지 않을 것이며, 모수가 너무 크다면 실험 기간이 너무 길어질 것이기 때문이다.
이 역시 상황에 따라 다르게 설정되는데, 손익과 관련된 지표들을 계산해 MDE 를 구할 수 있다. 이를 위해서는 이 블로그 글을 참조하자 https://playinpap.github.io/abtest-setting-mde/
A/B 테스트에서 의미있는 효과 기준 (MDE)을 설정하는 방법
부제: A/B 테스트의 가장 찾기 힘든 파라미터를 알아보기 이 글은 개인 블로그 에 먼저 작성된 글입니다…
playinpap.github.io
6. 실험 설계
- 어떤 유저 여정 퍼널에서 랜덤한 유저들을 선택할 것인지를 정한다
- 샘플 사이즈를 결정한다 (보통은 아래의 공식을 따른다)
- 실험 기간을 결정한다 (요일에 따른 수치 차이가 있을 수 있기 때문에 1주 이상으로 잡는다)
7. 실험하기
데이터를 수집하면 된다! Amplitude 같은 SASS 툴을 이용하거나, 아주 전통적인 방법으로,, 그냥 로그 데이터를 긁어모으는 방법도 할 수 있다.
8. 데이터 유효성 검증
다음으로, 우리의 데이터의 유의성을 검증해야 한다. a/b 테스트는 중간에서 일어나는 통제불능한 여러가지 변수로 인해 실험이 방해될 수 있다. 아래 항목들을 검사하며 결정을 내리기 전에 꼭 통계적 유의성을 검증하자
- 외부 요인 : 재난, 휴일 등의 영향
- 랜덤화 검사: 카이제곱 검정을 통해서 샘플들의 비중이 비슷한지 검사하자
- 신기 효과 (Novelty Effect) : 신규 유저 / 기존 유저 간의 비중이 비슷한지 검사하자
9. 결과 해석 / 결정
마지막으로, 결과를 해석하고 결정을 내리면 된다! 실험에 따른 결과가 다음과 같이 나왔다고 가정하겠다.
모수는 둘 다 10만으로 지정하였다.
Test | 방문 당 평균 확인 게시글 수 | 절대 수치 차이 | 상대 수치 차이 (증가율) | p-value | 신뢰구간 |
바꾸기 전 | 2 | 0.5 | 200% | 0.2 | 95% |
바꾸기 후 | 4 |
수치계산은 a/b test 계산기를 이용하면 된다
위의 실험 결과에 따르면 p-value 가 0.05 이상이기 때문에 귀무가설을 반박할 수 없고, 두 변화에 유의미한 차이가 있지 않다고 결론내릴 수 있다.
10. 의사결정
만약 p-value 가 충분히 작아 귀무가설을 기각하고 대립가설을 채택한다면, 다음과 같은 점들을 추가로 고려해 최종 결정을 내리자
- 1차 수치 이외의 보조 지표들에서 trade-off 가 일어나진 않았는가?
- 변화를 위한 가격이 (개발, 기획,,, 등등) 효과를 상쇄하진 않는가?
위와 같은 a/b 테스트의 단계와 통계적 의미들을 충분히 이해한다면 더 완고한 a/b 테스트를 설계하는데 도움받을 수 있을 것이다
* 해당 글은 하단 유튜브 영상을 참고하여 작성되었습니다
https://www.youtube.com/watch?v=DUNk4GPZ9bw
'데이터 분석 Data Analysis > 통계 Statistics' 카테고리의 다른 글
데이터분석에서 로그를 취하는 경우 (세상에서 제일 쉬운 설명) (0) | 2022.10.12 |
---|---|
다중선형회귀 이론과 파이썬 코드 (0) | 2022.09.26 |
단순선형회귀 이론과 파이썬 예제코드 (0) | 2022.09.26 |