brunch

You can make anything
by writing

C.S.Lewis

by 플래터 Jul 31. 2022

A/B 테스트의 뒤에 숨은 기초 통계 이해하기

A/B 테스트는 A와 B만 나누는 게 다가 아니다 (2)

https://brunch.co.kr/@539insight/138


앞선 글에서는 A/B테스트를 설계하거나 수행할 때 우리의 표면상의 질문-목표를 달성하기 위한 방안으로 A와 B 중 어느 게 더 나은가?- 뒤에 숨은 진짜 질문에 대해 살펴보았다.

“이번 며칠 동안 모은 000명~0,000명의 트래픽/고객에 대해서만 유효한 게 아니라, 앞으로도 & 해당 유형의 모든 고객에게 A안과 B안 중 어느 게 ‘확실하게’ 효과가 좋은가? 그리고 이 결과는 우연이 아닌 게 맞나? 이 결과는 정말로 A와 B의 차이 덕분에 생긴 게 맞는가?”


이어지는 이번 글에서는 이러한 우리의 진짜 질문에 답을 얻기 위한 A/B 테스트를 설계하고 또 결과를 해석하는 데 필요한 기초 통계의 개념을 설명하고자 한다.




1. 모집단과 표본 : 우리는 결코 '전체'를 알 순 없다. 이번 실험의 대상은 어디까지나 '일부'다.


가령 우리가 설계하는 실험이 네이버 지식in에 답변을 남기는 이들을 대상으로 진행된다고 하자. 특정 콘텐츠를 제공한 그룹 A가, 콘텐츠를 받지 못한 그룹 B보다 더 좋은 답변을 작성해서, 작성한 답변이 채택된 답변으로 전환되는 비율(%) 이 더 높을 거라고 가정하는 실험이다.


이 경우 우리는 결국 '지식in에 답변을 작성하는 지식인'들에 대해서 알고 싶다. 그들이 정말 더 좋은 답변을 작성할지 아닐지.


그런데, 우리가 실험을 통해 알 수 있는 지식인은 서비스에 존재했고, 존재하고 있고, 앞으로도 존재할 '모든' 지식인인가? 그럴 수는 없다. 실험의 기간은 한정되어 있고, 누군가는 실험 기간 동안 답변을 작성하지 않을 수도 있고, 누군가는 실험이 어떤 이유로 인해 노출되지 않을 수도 있다. 그리고 지금 당장은 지식in 서비스의 지식인이 아니지만, 며칠 뒤에 가입하게 될 예비 고객이라면?


결국 우리는 '전체'에 대해서는 알 수 없다. 다만 실험을 통해 만나는 '일부'에 대해서만 알 수 있다. 즉, 실험기간 동안 실험에 노출되는 일부 고객에 대해서만 알 수 있다.


통계에서는 이 전체를 '모집단'이라고 부르고, 이 일부를 '표본'이라고 부른다.


모집단과 표본의 이해



2. 중심극한정리 : '일부'를 통해서 '전체'에 대해 추론할 수 있다.


그런데 우리가 실험하는 대상이라 '일부'라면, 과연 이걸 토대로 '전체'에 대해서 왈가왈부해도 되는 걸까? 결과적으로는 가능하다. 아무리 '일부'일지라도 이 숫자가 충분하면, 일부를 통해 전체에 대해서 추측, 추론, 추정할 수 있다는 것이다.


다만 이는 A/B 테스트를 설계하거나 실행, 해석할 때의 고려 요소가 아니라 우리의 일상 속 모든 '통계적 추측' 뒤에 숨은 대전제에 가깝다. 따라서 이런 개념과 원리가 있고, 이걸 전제로 우리가 일부를 통해 전체를 추측할 수 있다, 추측해도 된다, 라는 안심을 갖고 A/B 테스트를 진행하면 된다.


(중심극한정리에 대한 자세한 내용은 다른 아티클, 통계 설명으로 갈음한다)



3. 귀무가설과 대립 가설, 양측 검정과 단측 검정 : 실험을 진행하면 두 그룹의 결과에 차이가 있을 것이다


결국 우리는 '표본'을 대상으로 실험을 하고, 그 안에서 A와 B 또는 더 나아가 A, B, C,... 등으로 그룹을 나눈 뒤 실험을 하게 된다. 그리고 각 그룹의 결과에 '평소라면 차이가 없지만, 이번 실험으로 인해 차이가 생길 것이다'라고 가정한다.


이처럼 평소에는 우리가 무언가를 하지 않으면 아무런 일이 일어나지 않으므로, 표본을 A와 B로 나누든, A, B, C로 나누든 결과에는 차이가 없다. 이러한 평소의 상태에 대한 가설을 귀무가설이라고 한다. 평소의 상황. 일반적인 상황. 무언가 조치를 취하지 않았으므로 두 그룹 사이에 아무런 차이가 없는 상황.

 

그런데, 우리는 이 표본을 A와 B 등으로 나누어 특정 조치를 취한 뒤에, A와 B 사이의 결과에 차이가 생길 거라고 가정한다. 즉, 평소와 다른, 반대되는 상황이 발생할 것이라고 가정한다. 이를 대립 가설이라고 한다. 평소의 상황(=차이가 없다)과 대립되는 결과(=차이가 생긴다)가 나올 것이라고 가정하는 가설인 것이다.


그런데 이때, 차이가 있긴 한데 그래서 한쪽이 무조건 더 나은 걸까? 아니면 어떤 쪽이 나을지는 해봐야 아는 걸까?


보통 우리가 웹/앱에서 실험을 할 때에는 특정 방안(가령 A안)이 더 나을 거다, 즉 그룹 A의 숫자가 더 높거나 낮을 것이다,라고 가정한다. 두 그룹에 차이가 있고, 특정 그룹이 더 높거나 낮을 거라고, 즉 결과가 한쪽으로 분명할 거라고 가정한다. 정말 이러한지 알아보는 실험을 단측(한쪽으로 알아보는, One-sided) 검정이라고 한다.


반면, 길고 짧은 건 대봐야 아는 법이듯이, 차이가 있긴 있되 어느 쪽이 더 나을지는 미리 가정할 수 없다면, 즉 어느 한 그룹이 무조건 더 높다/낮다고 가정할 수 없어서, 높을 수도 있고 낮을 수도 있다고 봐야 한다면, 이런 경우를 양측(양 쪽으로 알아보는, Two-sided) 검정이라고 한다.

단측 검정과 양측 검정. 단측 검정은 특정 방안의 승리 또는 패배를 가정하고, 양측 검정은 단순히 차이가 있을 것이라고만 가정한다.



4. 신뢰 수준 : 실험 결과도 결국 '추측'이다. 그런데 세상에 100%라는 건 없거나 무의미하니까.


그런데 우리의 실험 결과는 언제나, 모든 경우에, 무조건 100% 정확한 만고불변의 진리 truth일까? 당연히 아니다. 아마도 '100% 진리'라는 게 있다면 그건 현재로선 '인간은 생명활동을 위해 에너지를 필요로 한다'라거나 '유기물은 모두 탄생 이후 소멸/죽음을 맞이한다' 정도만 있을 것이다.


우리가 진행하는 A/B 테스트는 어디까지나 우리가 관심이 있는 특정 유형의 고객 중 실험에 노출된 일부를 바탕으로 해당 유형 고객의 전체를 '추측'한 것뿐이다. 다만 우리는 이 추측이 제법 유효한지, 공정한지, 정확한지 알아가려는 과정이고, 최대한 유효하고 공정하고 정확한 A/B 테스트를 만들려고 하는 것뿐이다.


100%가 아니라면, 그럼 결국 우리는 우리의 추측이 어느 정도로 신뢰할만한가?라는 질문을 하게 되는데, 이처럼 우리의 추측을 신뢰할 수 있는 수준을 '신뢰 수준'이라고 한다.


이는 A/B 테스트를 세팅할 때에는 쉽게 비유하면 '내가 얼마나 엄밀하게 실험하고 싶은가?'의 의미로, 보통은 95%를 기준으로 한다. 이는 '100번 중 95번은 내가 생각하는 결과가 나올 테지만, 나머지 5번은 아닐 수도 있다. 즉, 100번 중 5번은 실은 이 결과가 우리의 실험에서 설계한 장치와 별개로 순전히 우연에 의해 일어난 걸 수도 있다'는 뜻이다.


사실 신뢰 수준에 대해 이야기하기 위해서는 점추 정과 구간 추정, 표준 오차와 신뢰 구간 등에 대한 설명이 필요한데, A/B 테스트의 직접적인 설계 및 수행, 해석에는 당장 필요하진 않다. 따라서 아래와 같이 간략히 설명해두었다.

점 추정과 구간 추정 | 우리는 보통 콕 짚어 특정 숫자(Ex: 전환율 45.249575223...%)가 나올 거라고 추측하는 게 아니라 얼추 40~50% 정도가 될 거라는 식으로 어떤 '범위'로 추정한다. 이처럼 정확히 한 점을 콕 짚어 추측하는 걸 점 추정, 그리고 특정 범위/구간을 기준으로 추측하는 걸 구간 추정이라고 한다.
표준 오차 | 동일하게 설계한 실험을 동일한 기준으로 선발한 각기 다른 표본 집단을 대상으로 수행하는 경우, 실험의 설계는 동일했더라도 결과는 매번 다를 수 있다. '상세 페이지에 방문한 3등급 고객'을 대상으로 프로모션을 노출하는 실험이라고 가정해보자. '상세 페이지에 방문한 3등급 고객'이라는 유형은 동일해도, 오늘 방문한 3등급 고객 100명이 어제 방문한 3등급 고객 100명과 동일 인물이 아니니까. 그래서 각 표본 집단마다 결과 값이 정확히 똑같을 순 없다. 이렇게 생긴 차이를 표준 오차라고 이해하고 넘어가자
신뢰 구간 | 그래서 결국 우리가 생각하는 예상 결과치와, 생길 법한 차이인 표준 오차를 고려하면 '신뢰 구간'이란 게 나온다. 전환율이 40% 일 거 같은데 오차가 3% 정도 되니까 얼추 37~43% 사이일 거라는 구간. 결국 우리가 실제 실험을 진행하는 표본을 통해 추측하고 있는 전체 집단이 속할 거라고 생각되는 구간. 여기에 앞서 설명한 '신뢰 수준'의 개념을 더하면, "내가 이렇게 설계한 실험을 100번을 진행하면, 실험으로 얻는 결과 중에 95번은 37~43% 안에 있고, 나머지 5번은 아닐 수 있다"는 뜻이다.



5. P-value와 유의 수준 : 그래서 정말 우연이 아닌가? 이번 실험 결과가 정말로 전체에, 앞으로도 동일하게 유의미한가?


그런데, 앞선 글에서 살펴본 것과 같이 만약 이번 실험 결과가 꽤 차이가 있는데, 만약 이게 이번 한 번만의 우연한 결과, 또는 극단적인 결과라면? 이번 결과가 우연인지 아닌지는 어떻게 알 수 있는 걸까?


이는 실험 결과와 함께 표기되는 P-value를 통해 알 수 있다.


신뢰 수준이 95%라는 건 100번 중 95번은 실험의 결과가 내가 생각한 범위 내 결과를 도출, 즉 타당하지만, 나머지 5번은 아닐 수 있다는 뜻이다. 바꿔 말해 5번은 틀리더라도 봐주기로 한다는 뜻이기도 하다. 이 5번, 즉 5%를 우리는 유의 수준이라고 한다. A와 B가 정말로 유의미하게 차이가 있다고 봐줄 수 있는 수준, 또는 마지노선. "5번까지는 우연에 의한 결과가 발생해도 봐주겠다. 다시 말해, 만약 5번이 넘어가면 A와 B에는 실제로는 차이가 없고 차이가 있는 것처럼 보여도 그저 우연 때문이라고 판단하겠다."


그래서 만약 신뢰 수준 95%의 실험에서, 우리의 실험 결과로 나온 P-value가 0.04(4%)라면, 앞서 실험의 유의미함을 판단하는 기준으로 세운 0.05(5%) 안에 안착하게 되므로 우리의 실험에서 A와 B는 정말로 차이가 있는게 맞다고 판단하게 된다. 다시 말해, 우연이 아니라고 판단한다는 셈이다.


반면 P-value가 0.51이라면? 이는 5번(0.05)을 넘겼으므로 신뢰 수준9%를 따르면 실험은 타당하지 않다. 5번까지만 봐주기로 했는데 5번, 5%를 넘겼으니까. 이 경우 우리가 실험을 통해 얻은 결과는 우연일 가능성이 우리가 세운 기준보다 크다는 뜻이다. A와 B에는 실질적인 차이가 없다고 본다는 의미다.


그런데, 애초에 '우연'이라는 개념은 왜 나오는 걸까? 왜 신경 써야 하는 걸까? 애당초 이번 실험에서 이겼으면 이긴 것 아닌가?


그건 앞서 말했듯이 우리가 '일부'를 통해 '전체'를 추측하기 때문이고, 매일 또는 매번 우리의 A/B 테스트에 노출되고 있는 '일부'는 사실은 동일인물이 아닌 서로 다른 사람들이 모인 '일부'이므로, 그 결과가 매번 다를 수도 있기 때문이다.


가령 우리가 이틀 동안 트래픽을 5:5로 나누는 실험을 했다고 가정해보자. 그럼 7/30(토)의 A그룹의 전환율과, 7/31(일)의 A그룹의 전환율은 100% 일치할까? 당연히 아니다. 왜냐하면 7/30(토)에 테스트에 노출된 A그룹의 유저와 7/31(일)에 테스트에 노출된 A그룹의 유저는 결국 '다른 사람'이니까.

AB 테스트에 노출된 어제의 그룹A 유저들과 오늘의 그룹A 유저들은 동일한 그룹A 표본이어도 결국 각기 다른 사람들이다. 그러므로 어제,오늘의 그룹A 전환율은 같을 수가 없다.


그런데 매번 결과가 다르다면, 어떤 때에는 A가 이기고 어떤 때에는 B가 이길 수도 있게 된다. 그리고 차이의 폭이 매우 작을 수도 있지만, 어떤 때에는 차이의 폭이 매우 클 수도 있다. 그리고 만약 이런 경우가 반복되면, 우리는 어느 쪽이 확실하게 이겼다고 이야기하기 어려울 것이다. 이번엔 이겼지만 다음엔 어떨지 모르니까. 즉, A와 B으 차이라고 보이는 게 실은 순전히 '우연'일 수 있는 것이다.


그래서 우리는 지금까지의 승리가 정말 이 실험 덕분에 생긴 결과인지, 혹은 우연인 건 아닌지 P-value와 유의 수준을 통해 비교하는 것이다.

매번 다른 표본, 그리고 이에 따라 매번 다른 결과가 나온다. 그래서 이번 결과가 우연인지 아닌지 우리는 신경 쓰게 된다.



이렇게 해서 우리가 A/B 테스트를 설계하며 가진 진짜 질문-차이가 유의미한가? 이번 한 번만 우연인 건 아닌가?-를 알기 위해 필요한 기초 통계에 대해 간략히, 이해를 위한 왜곡을 조금 가미해 설명해보았다.


이어지는 글에서는 이러한 기초 통계적 지식을 바탕으로, A/B 테스트 계산기를 세팅하고 해석하는 방법에 대해 살펴보고자 한다.


다음 글



더 많은 지식과 경험, 노하우가 궁금하다면

홈페이지 방문하기

뉴스레터 구독하기

이전 07화 A/B 테스트를 설계할 때의 우리의 진짜 질문
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari