ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [A/B testing] 예시 프로젝트 1
    Data miner/Kaggle Notetaking 2023. 1. 18. 12:07
    728x90

    "새롭게 런칭한 웹페이지의 고객 전환율이 이전 웹페이지에 비해 나아졌을까?" 

     

    실제로 새롭게 수정한 웹페이지의 화면을 서비스에 배포하기 전에, 이 방식이 이전보다 나은 방식인지를 통계적으로 유의한지 검증하는 작업이 필요하다. A/B testing은 그것을 검증하는 방법이다. 

     

    1. 실험설계하기

    1-1. 가설설정하기 

     

    귀무가설 : "수정된 웹페이지 화면이 고객 전환율에 의미있는 영향을 끼치지 못한다/ 고객 전환율 향상이 없다"

    대립가설 : "수정된 웹페이지 화면이 고객 전환율에 의미있는 영향을 준다/ 고객 전환율 향상이 있다 (예. 2%의 향상)"

     

    양측검증, 왼/오 단측검증의 방법이 있으며, 이번 포스팅에서는 양측 검증*에 대해 다루고자 한다. 귀무가설 혹은 대립가설을 채택할 것인가 기준이 되는 값이 그 유명한 p-value 이다. p-value는 다음을 뜻한다.

    • 기준이 되는 통계 분포에서 더 희귀하거나 극단적인 값들이 나올 확률 (관측한 x보다 더 극단적인 값들이 관측될 확률)
    • 특정 가설이 실제 관측될 확률. 무작위로 x라는 변수를 측정했을 때 기준이 되는 통계 분포 영역에 들어올 확률.
    • 동일하게 희귀하게 다른 것들이 나올 확률

    실험 결과 p-value가 0에 가까운 값을 가진다면, 실험대상이 되었던 두 집단의 분포가 다르기에 귀무가설을 기각하고 대립가설을 채택하게 된다. 왜냐면 기존의 분포가 아니라 다른 분포가 특정 데이터들을 더 잘 설명한다는 것을 의미하기 때문이다.

    또한 실제로는 차이가 없지만, 작은 p-value를 얻게 되는 것을 거짓 양성(False Positive)라고 한다. 

     

    0.05의 값은 보편적으로 쓰이는 값이며, 만약 가설에 대해 보다 강한 기준으로 보수적으로 채택하고자 할 때, 0.05보다 더 작은 임계값을 가지고 실험하면 된다. p-value가 0.05라면, confidence는 (1-pvalue) 인 0.95가 된다. 이 경우에는 

     

    "귀무가설을 기각하기 전에, 이전 웹페이지 화면이 고객전환율에 있어서 통계적으로 다른지 여부를 95% 신뢰하여 확인한다"

     

    는 것을 뜻한다. 만약, 실제 데이터로부터 관측된 p-value가 0.05보다 작게 나온다면, 홈페이지 업데이트 이전과 이후의 고객전환율이 동일하다는 데이터상 증거가 충분하지 않다는 것을 의미한다. 혹은 홈페이지 업데이트 이전과 이후의 고객전환율이 95%의 신뢰도를 가지고 다르다고 이야기할 수 있다. 결과적으로, 귀무가설(영가설)을 기각하는 통계적인 증거가 된다. 

     

    1-2. 변수 설정하기 

     

    테스트 전에 두 개의 테스트 그룹이 필요하다.

     

    - 통제집단(Control group) - 변경 전의 그룹 집단. 본 포스팅의 경우에는 홈페이지 디자인 변경 전

    - 실험집단(treatment/experimental group) -  변경 후의 그룹 집단. 홈페이지 디자인이 변경 후

     

    하나의 독립변수(수정된 홈페이지 디자인 여부)가 고객전환율에 영향을 미치는 영향을 의미있게 검증하기 위해서는 계절성과 같은 그 외의 변수들을 통제해야 한다. 종속변수는 고객전환여부 (0: 고객이 구매하지 않음, 1: 고객이 구매함)와 같은 이진 변수로 표현될 수 있다.  

     

    1-3-1. 자료에 이상치가 있는지 확인하기

    정규분포를 따르는 것을 가정하므로, 자료에서 해석에 지장을 주는 이상치인지를 확인하고 실험에서 제거한다(보정한다). 

     

     

    1-3-2. 샘플 사이즈 선택하기 

    Q: 샘플링 수를 증가시키면서 '유의하다'고 판단하는 경우, 2종 오류(False Postive)의 확률이 늘어날까?

    A : 그렇다. 

     

        우리는 전체의 유저의 케이스를 테스트할 수 없기 때문에, 홈페이지 고객 전환율에 대해서는 추정치를 구할 수 밖에 없다. 따라서 모집단의 표본집단이라고 할 수 있는 샘플로 A/B 테스트를 진행해야 한다. 그리고, 이 샘플의 크기는 사전에 고정되어야 있어야 실험결과가 정확해질 수 있다. 샘플의 크기를 무작정 증가시켜가면서 통계적 유의성을 판단해서는 안된다. 단지, 동일한 크기의 샘플로 테스트를 A/B 테스트를 수행하여, 의사결정을 할지를 고민해야 한다. 샘플의 크기를 증가시켜서 통계성 유의성을 판단하는 방식은 False positive 비율을 늘릴 수밖에 없다. 실제로는 홈페이지 디자인이 고객전환율에 영향을 미치지 않음에도, 그렇게 생각하는 것이다. 이러한 문제(peeking problem)가 발생하지 않도록 하기 위해서는 반드시 샘플의 크기를 고정시켜서 실험을 해야 한다. 

     

     

    한편으로, 샘플의 크기는 아래의 공식으로 구할 수 있다. 

    standard deviation : sample variance, 혹은 이항분포에서의 p(1-p)값

    required change : 과거 홈페이지 대비 개선된 홈페이지의 전환율 차이

    https://www.evanmiller.org/ab-testing/sample-size.html 사이트에 접속하면, 위 두 개의 변수를 입력하면 n을 구할 수 있게 도와준다. 

     

    A/B 테스트시 유의해야 할 점은, 통제집단과 실험집단 사이의 차이점이 유의미한 통계적 의미를 가지는지를 하나의 특정 시점에서 판단하는 것이 아니다. 그 결정 경계를 넘은 차이점이 최소한 한 번 이상 전체 데이터 컬렉션 과정에서 이뤄졌다는 점을 확인 해야 한다.

     

    1-4. 각 집단별 샘플링 크기만큼 실험 데이터셋을 만들기

    각 홈페이지 마다 한 번 이상 방문한 사람들을 빼고 실험해야 함.  

     

    각 집단 별 고객 분포를 최대한 비슷하게 가져가야 실험 결과를 신뢰할 수 있음.

    위의 공식대로 각 집단별 4523명을 샘플링하여 AB테스트를 위한 데이터셋을 생성.

     

    1-5. 결과를 시각화 하기

    두 집단별 고객전환율을 보면, 12.3% vs 11.8%로 바뀐 디자인의 전환율이 오히려 낮다는 결과값을 얻었다. 

     

    이를 시각화해보면 다음과 같았다.

     

    1-6. 가정을 테스트하기

    우리는 1000개 이상의 샘플을 가지고 테스트 하므로, normal approximation 정규근사값을 사용하여 가정을 테스트해볼 수 있다. 

     

     

    1-7. 결과값을 도출하기

     

    도출한 p-value값이 0.274로 가설을 기각할 수 있는 p-value 0.05의 값보다 크다. 따라서, 귀무가설 "홈페이지 디자인 개선으로 2%이상의 고객전환율이 차이가 없다"를 기각할 수 없다. 즉, 기존 홈페이지 디자인이나 개선된 홈페이지 디자인이나 고객전환율의 관점에서 유의미한 차이점을 볼 수 없다. 또한, 개선된 홈페이지 상에서 우리의 baseline이었던 13%보다 0.3% 낮은값의 고객전환율을 가지고 있음을 확인할 수 있었다. 

     

     

     

     

    참고 : https://www.evanmiller.org/how-not-to-run-an-ab-test.html

     

    How Not To Run an A/B Test

    Are you falling victim to the peeking problem? Learn how to design and run an experiment properly.

    www.evanmiller.org

    kaggle dataset : https://www.kaggle.com/datasets/zhangluyuan/ab-testing?select=ab_data.csv 

     

    A/B testing

     

    www.kaggle.com

    읽어보면 좋은 글 참고 : https://gopractice.io/data/peeking-problem/

     

    Peeking problem – the fatal mistake in A/B testing and experimentation - GoPractice

    You can make many mistakes while designing, running, and analyzing A/B tests, but one of them is outstandingly tricky. Called the “peeking problem,” this mistake is a side effect of checking the results and taking action before the A/B test is over. An

    gopractice.io

     

    *양측검증 : 이 포스팅에서 '수정된 홈페이지의 화면'이 고객전환율에 의미있는 영향(+2%)을 끼치는가를 실험하는 것으로, 양측 검증을 사용하였다. 

Designed by Tistory.