Statistics/Practical Statistics for Data Scientists

[Practical Statistics for Data Scientist] Hypothesis Testing and Resampling

lfgwy 2022. 3. 31. 03:46

실험 설계는 현실에서의 통계 적용에 초석이 되고, 거의 모든 분야에 적용됩니다.

실험 설계의 목적은 가설을 채택하거나 기각하는 데에 있습니다.

데이터 사이언스에서는, 주로 특정 UI(User Interface)에 대해, 혹은 마케팅 방법에 대해 실험이 빈번히 이뤄진다고 합니다. 

 

전통적인 통계학에서의 실험은 다음과 같은 파이프라인을 따릅니다.

 

출처: Practical Statistics for Data Science, p.87

Formulate hypothesis: A약이 기존의 약보다 효과가 좋다, 가격A가 기존의 가격B보다 수익성이 좋다 등 증명하고자 하는 가설 세우기

Design experiment: 어떠한 종류의 테스트가 될지, 통제집단/실험집단의 구성, 처리 방법 등, 실험방법에 대한 설계

Collect Data: 설계된 실험을 바탕으로 데이터를 수집

Inference/conclusions: 수집된 데이터를 바탕으로 추론을 하거나 결론을 내림(A약이 실제로 기존 약보다 효과가 좋다 혹은 A약과 기존의 약의 효과에 차이가 존재하지 않는다 등)

 

출처: https://ko.wikipedia.org/wiki/A/B_%ED%85%8C%EC%8A%A4%ED%8A%B8

지금 보시는 이 사진이 데이터 사이언스의 실험의 대표적 예시로, 버튼의 디자인만 다른 두 가지 버전을 무작위로 방문자에게 제공해, 어떤 디자인이 더 나은지를 측정하는 실험입니다. 하지만 단순히 변경사항을 적용 전/후의 전환율을 비교하는 것만으로는 변경된 디자인의 영향력을 확인할 수 없습니다.

 

 

 

A/B Testing

A/B test란, 두 그룹에 대한 실험으로, 두 가지 처리방법, 제품, 디자인 중, 어느 것이 더 우수한지를 확인하는 실험입니다. 앞서 살펴본 버튼 디자인에 대한 실험이 A/B test의 대표적인 사례라고 할 수 있습니다. A/B test에서는 변경 사항 외의 외부 요인을 통제하여 변경 사항의 영향력을 데이터로 정확히 파악 가능합니다. (여기까지는 통계학의 통계적 가설 검정이나, 이표본 가설검정과의 설명과 동일합니다. 하지만 AB test는 이 중에서도, 웹이나, 인터넷 서비스에 한하는 실험을 칭하는 것으로 보입니다.)

책에서는 A/B test에 대해 위와 같이 설명하고 있으나, 서치해본 결과, 실제로 A/B test는 앱, 웹 등 인터넷 서비스 분야에만 국한되어 두 가지 버전 비교를 통해 무엇이 우수한지를 확인하는 실험만을 칭하는 것으로 보아도 무리가 없을 것 같습니다. 그룹이 A, B 두 그룹만이 아니라 여러 그룹이 존재할 때, 어느 그룹이 제일 우수한지를 검정하기 위해서는 Multi-arm bandit이라는 method가 주로 사용된다고 합니다.

 

A/B test는 다음과 같은 과정을 따릅니다.

 

출처: https://devopedia.org/a-b-testing

Set a goal: 더 많은 사람들을 사이트로 불러오기 -> 이를 바탕으로 측정항목 정하기: Click Rate

Decide what to test(Construct Hypothesis): 새로 만든 클릭 버튼이 클릭율이 더 높다

Create variations: 클릭 버튼의 색깔, 디자인 등을 차별화

Run Experiment: 유저들은 랜덤하게 대조그룹(기존의 버튼), 처치그룹(새로 만든 버튼)에 배정 후 실험 실시

Analyze Results: 실험 결과를 분석 후, 분석 결과를 반영

 

Hypothesis Tests(Significance Tests)

살펴본 두 가지 과정 모두에서 가설을 설정하는 것을 확인할 수 있었습니다. 가설이 왜 필요한 것일까요? 실험결과 클릭율이 더 높았으면 단순히 해당 버튼 디자인을 선택해서는 안되는 걸까요? 쉽게 설명하자면, 관측된 차이가 우연의 결과일 수도 있기 때문입니다. 

 

A와 B 중 어떤 것을 선택할지 결정하기 위해 2개의 가설을 세우게 되는데, 이를 귀무가설(Null Hypothesis)과 대립가설(Alternative Hypothesis)이라고 부릅니다. 귀무가설(Null hypothesis)은 두 처리방법 간에 차이가 없다, 즉 관측된 차이는 우연에 의한 것이라는 가설이고, 대립가설(Alternative Hypothesis)는 귀무가설에 반하는 가설로, 저희가 증명하고자 하는, 두 처리방법 간에는 차이가 존재한다라는 가설입니다. 즉, 저희는 관측된 차이가 우연으로 인한 차이로 보기에는 너무 크다라는 것을 입증하고자 하는 것입니다.

 

가설검정을 위한 방법 중에 하나가 곧 다룰 resampling입니다. A와 B의 결과를 섞은 다음, 비슷한 크기의 그룹으로 데이터를 반복적으로 처리한 후, 관찰된 차이만큼 극단적인 차이를 보이는 빈도를 관찰합니다.

 

Resampling

통계학에서 resampling이란 일반적으로 통계량의 변동성을 평가하는 목적으로 관찰된 데이터에서 반복적으로 샘플링하는 것을 의미합니다. 머신러닝에서는 모델의 정확도를 높이기 위한 방법으로 사용되기도 합니다. Resampling은 크게 bootstrap과 permutation test로 나눌 수 있습니다. Bootstrap은 주로 통계량의 정확도를 판단한데 쓰이는 반면 permutation test는 가설검정을 위해 주로 쓰인다고 합니다. 

 

Bootstrap에서는 sample에서 복원추출을 통해 n번 sampling해 얻어진 Bootstrap Sample을 이용하여 sampling distribution을 만들어 사용합니다.

 

Permutation test는 다음 과정을 통해 이루어집니다.

1. A그룹(대조그룹) B그룹(처치그룹)의 결과를 합쳐 하나의 데이터를 만듭니다.(이는 귀무가설인 두 그룹 간의 차이는 없다라는 가설에 기반합니다. 실제로 두 그룹 간에 차이가 존재하지 않는다면 샘플을 교환해서 계산하더라도 결과에 차이가 없어야합니다.)

2. 합쳐진 데이터를 랜덤하게 섞어, 비복원추출을 진행해 A그룹과 사이즈가 동일한 그룹 A'을 생성합니다.

3. 남아있는 데이터를 통해 B그룹과 사이즈가 동일한 그룹 B'을 생성합니다.

4. A'와 B'를 이용하여 통계량(두 그룹 간의 차이)을 계산합니다. 이렇게가 permuation iteration을 한 번 수행한 것입니다.

5. 위의 과정을 R번 반복해 statistic(두 그룹 간의 차이)의 분포를 생성합니다.

6-1. 만약 최초의 관측된 차이가 permuted differences의 분포 안에 잘 존재한다면, 두 그룹 간에 관측된  차이는 우연의 결과로, 두 그룹 간의 차이는 존재하지 않는 것입니다.

6-2. 만약 최초의 관측된 차이가 permutation distribution의 바깥쪽(alpha, p-value 등을 통해 정한 기준이 존재)에 존재한다면 두 그룹 간의 차이는 우연의 결과라고 하기엔 너무 큰 차이로, 실제로 두 그룹 간에 차이가 존재한다고 결론 내립니다.

 

ex) Web stickiness

가치가 높은 서비스(상품)을 파는 회사에서 어떠한 웹을 사용하는 경우가 더 판매율에 유리한지 실험하는 예시입니다. 가격이 비싸다보니, 판매빈도가 적고, 하나를 판매하는데까지 시간이 많이 소요되어, 실제 관심 있는 변수인 판매율 혹은 판매건수가 대신 대리변수로 소비자가 웹사이트에 머무는 시간을 사용했다고 합니다. 이때, 대리변수란, 실제 사용하고자 하는 변수에 대한 접근이 어려운 경우 사용하는 변수로, 실제 변수에 대한 정보를 일부 포함하고 상관계수를 파악할 수 있는 변수라고 합니다.

 

이 실험에는 36명의 유저가 참여했으며, A사이트에는 21명이, B사이트에는 15명이 할당되었습니다. 두 사이트의 이용자들이 사이트에 머무는 시간의 관측된 차이의 평균은 약 36초입니다. 이에 순열검정을 1000번 정도 실시한 결과 다음과 같은 분포를 얻을 수 있었고, 관측된 차이 36은 분포 안에 잘 위치한 것으로 판단되어 가설이 기각되었습니다. 실제로 계산을 해보아도, 순열검정에서 얻어낸 머무는 시간의 차이가 관측된 차이보다 길 확률이 약 12프로 정도라고 합니다.

R로 해당 실험을 구현한 결과입니다.

 

Exhaustive permutation test: 2번 과정에서 단순히 데이터를 랜덤하게 섞고 나누는 것이 아닌, 나누어질 수 있는 모든 경우의 수를 고려합니다. 따라서 현실적으로 sample size가 작은 경우에만  사용 가능합니다. Permutation test를 사용할 때, 랜덤하게 섞는 과정을 충분히 많이 반복한다면 Permutation test는 Exhaustive permutation test에 근사합니다.

 

Boostrap permutation test: 2번 3번 과정에서 비복원 추출이 아닌 복원 추출을 이용합니다. 이런 방식을 사용함으로, resampling을 통해 표본이 어느 그룹에 할당될 것인지에 대한 무작위성 뿐만 아니라, 모집단에서 표본을 추출할때의 무작위성 또한 어느정도 반영이 가능해집니다.

 

Bootstrap과 permutation test의 차이점

1. Bootstrap은 estimator의 CI를 확인하는 목적으로 주로 사용되는 반면, permutation test는 hypothesis test를 위해 사용됩니다.

2. Bootstrap은 복원추출을 통해 resampling이 이루어지지만, permutation은 비복원 추출을 통해 resampling이 이루어집니다. 

 

읽어주셔서 감사합니다.