A/B 테스트 설계 시 고려해야 할 부분


A/B 테스트의 “A그룹과 B그룹에 무작위로 사용자를 할당하여 새로운 기능 또는 디자인의 효과를 측정한다”는 개념 자체는 직관적이지만, 실제 실험을 설계하고 진행하고 해석하기 위해서는 고려해야 할 부분이 상당히 많다는 생각이 듭니다. 실험 설계와 해석을 더욱 잘하고 싶은 마음에 PAP(Product Analytics Playground)의 A/B 테스트 스터디에 참여하게 되었습니다. 하마책으로 유명한 “Trustworthy Online Controlled Experiments - A practical guide to A/B Testing”을 함께 읽으며 경험과 질문을 공유하고 있습니다. 스터디 멤버분들과 “Trustworthy Online Controlled Experiments”의 2장까지 학습한 내용을 공유하고자 합니다. 도움이 되었으면 좋겠습니다.

A/B 테스트 실험을 설계하기 위해서는 크게 5가지 아래 요소들을 고려하여야 합니다.

1) OEC(Overall Evaluation Criterion)

A/B 테스트를 통해 새로운 기능 또는 디자인의 효과를 측정하려면, 실험의 성공을 판단할 수 있는 성공 지표(success metrics)를 정의해야 합니다. 이 때 성공을 나타내는 종합적인 평가 기준이 OEC(Overall Evaluation Criterion)입니다. OEC를 제대로 정하지 않으면 잘못된 방향으로 실험을 설계할 수 있고, 리소스(resource)를 낭비할 수 있습니다. 이러한 의미에서 OEC를 잘 선정하는 것은 상당히 중요합니다. 예를 들어 UI 변화를 통해 더 많은 수익을 창출하고자 한다면 수익(revenue)도 하나의 OEC가 될 수 있습니다. 아래 기준들을 참고하면 실험 관련 지표를 선정하는데 도움이 될 것입니다.

1) OEC만을 고려해서는 안 됩니다.

OEC는 핵심 지표이지만, OEC만을 고려해서는 부작용이 있을 수 있습니다. 예를 들어 수익(revenue)이라는 OEC를 최적화하기 위해 웹사이트에 광고로 도배해버린다면 수익을 높일 수는 있겠지만, 사용자 경험은 크게 해칠 수 있을 것입니다. 이 책에 소개된 검색엔진 Bing의 사례에서는 유저당 세션수(Sessions per user)를 비롯한 여러 지표를 함께 살펴봄으로써 사용자 경험을 크게 해치지 않았는지 확인했다고 합니다.

이렇게 목표 지표를 달성하는 과정에서 발생할 수 있는 부작용을 측정하는 지표가 가드레일 지표(guardrail metric)이며, 실험을 진행할 때는 가드레일 지표를 함께 측정하며 진행해나가야 합니다.

2) OEC는 단기적으로 측정 가능해야 합니다.

여기서 단기적으로 측정 가능해야 한다는 말은 설정한 실험 기간 안에 충분히 측정할 수 있어야 한다는 의미입니다. 설정한 실험 기간 안에 측정하여 효과를 확인할 수 없다면 실험을 통한 의사결정을 적절히 할 수 없을 것입니다. 그러므로 OEC는 단기적으로 측정 가능해야 합니다. 하지만 또 한 가지 고려해야 할 부분은 단기적으로 좋은 결과를 낼 수 있지만, 장기적으로 악영향이 있을 수 있는 지표는 좋지 않다는 것입니다. 이러한 이유로 쉽게 조작할 수 있는(game-able) 지표는 좋은 OEC가 아닙니다. 예를 들어 수익(revenue)의 경우 가격을 조정하여 단기적인 수익을 높일 수 있지만 장기적으로는 악영향을 미칠 수 있습니다. 이러한 부분을 고려한다면 보다 나은 OEC를 선정할 수 있습니다.

3) 사용자를 기준으로 정규화되는 지표가 보다 좋은 지표입니다.

OEC 선정 시 각 그룹에 속한 샘플의 수에 따라 달라지는 지표보다는 샘플 사이즈에 따라 정규화된 지표가 좋습니다. 그 이유는 무작위로 그룹에 샘플을 할당하더라도 그룹에 속한 샘플의 수는 차이가 날 수 있기 때문입니다. 그러므로 샘플 사이즈에 따라 정규화된 지표가 더욱 적절합니다. 예를 들면 A그룹과 B그룹의 수익(revenue)의 총합을 비교하는 것보다는 사용자당 수익(revenue per user)를 비교하는 것이 보다 좋습니다.

2) 실험 단위(randomization unit)

randomization unit이란 A/B 테스트를 수행할 때 각 그룹에 무작위로 할당할 대상을 말합니다. “A그룹과 B그룹으로 나눌 때 어떤 기준으로 나눌 것인가”를 말합니다. 대표적으로 세션(session), 사용자(user)가 될 수 있습니다. 이 기준이 중요한 이유는 추천 알고리즘의 A/B 테스트를 진행한다고 했을 때 A 또는 B 한 쪽의 알고리즘에만 적용되어야 사용자의 최종 구매 결정에 어떤 알고리즘이 영향을 미쳤는지 판단할 수 있기 때문입니다.

대개 세션(session)보다는 사용자(user)를 기준으로 각 그룹에 무작위로 할당해줍니다. 사용자가 여러 세션에 걸쳐 웹사이트에 접속할 때 하나의 세션은 이후의 세션에 영향을 미칠 수 있고, 한 세션에서는 A그룹이었지만 또 다른 세션에서도 A그룹으로 할당될 것이라는 것을 보장하지 못하기 때문입니다.

“사용자를 기준으로 한다고 했을 때 어떤 식별자를 기준으로 동일한 사용자를 식별할 것인가?”도 생각해볼 부분입니다. 사용자가 회원가입한 계정을 활용해서 구분할 수도 있고, 브라우저 쿠키를 사용하는 것도 방법입니다. 브라우저 쿠키를 사용한다면 회원가입 여부와 관계 없이 사용자를 식별할 수 있기 때문에 더 많은 사용자를 식별할 수 있지만, 쿠키를 삭제하는 경우 그리고 다른 장치를 사용하여 접속하는 경우 동일한 개인으로 식별할 수 없습니다. 아래 링크들을 참고하시면 실험 대상을 어떤 기준으로 나눌 것인지 고려하는데 도움이 되실 것입니다.

참고)

Choosing your randomization unit in online A/B tests
https://ianwhitestone.work/choosing-randomization-unit/

A/B 테스트 정복하기 (4) : 유저 식별자 세팅은 어떤 기준으로 하는게 좋은가요?
https://blog.hackle.io/post/conquering-abtest-4

3) 대상 모수(target population)

target population은 A/B 테스트를 진행할 대상을 말합니다. “어떤 특성의 사용자들에게 A/B 테스트를 진행할 것인가”를 말합니다. 예를 들어 “체크아웃 페이지에서 쿠폰 코드 필드(field)를 추가하는 것은 결제 프로세스를 시작하는 사용자들의 ‘사용자당 수익(revenue-per-user)’을 감소시킬 것이다.”라는 가설을 가정해보겠습니다. 이 때 A/B 테스트의 target population으로 아래 후보들을 고려해볼 수 있습니다.

  • 웹사이트를 방문하는 전체 사용자(All users who visited the site)
  • 결제를 완료한 사용자(Only users who complete the purchase process)
  • 결제 프로세스를 시작하는 사용자(Only users who start the purchase process)

첫 번째, 웹사이트를 방문하는 전체 사용자는 가능하지만 그 중 체크아웃 단계에 진입하지 않아 쿠폰 코드 필드의 영향을 받지 않은 사용자가 다수 섞여 있을 수 있습니다. A와 B의 효과를 더욱 명확하게 식별하려면 체크아웃 단계에 진입하지 않은 사용자는 배제하는 것이 적절합니다.

두 번째, 결제를 완료한 사용자는 적절하지 않습니다. 결제를 완료한 사용자들을 대상으로 하기 때문에 구매율(구매를 완료한 사용자수/장바구니에 담은 사용자수)을 알 수 없고, 쿠폰코드 필드의 유무가 구매금액에 영향을 줄 수 있습니다. 쿠폰코드 필드가 없는 UI가 노출되는 그룹은 쿠폰코드를 입력할 수 없는 반면, 쿠폰코드 필드가 있는 UI가 노출되는 그룹은 구매 사용자의 수가 늘어날수록 총 수익(total revenue)은 커지더라도 사용자당 수익(revenue-per-user)은 쿠폰으로 인해 줄어들 수 있습니다.

세 번째, 결제 프로세스를 시작하는 사용자가 가장 적절합니다. 모두가 쿠폰 코드 필드의 영향을 받을 수 있는 사용자들로 구성되어 있기 때문입니다.

위와 같이 A/B 테스트의 대상을 명확히 하는 것은 중요합니다. 자칫 편향된 샘플에 대해 실험을 진행하거나 A와 B의 효과와는 관계 없는 대상들이 다수 포함되어 노이즈(noise)가 섞일 수 있기 때문입니다. 실험의 목적에 따라 지역, 장치의 유형 등 특정 특성을 가진 사용자들에 대해 실험을 진행해야 합니다.

4) 샘플 사이즈(sample size)

샘플 사이즈는 실험의 신뢰도와 결과에 상당한 영향을 줍니다. 만약 실험의 결론에 대해 더욱 확신하려면 더 많은 샘플에 대해 실험을 진행해야 합니다. 아래는 샘플 사이즈를 결정할 때 고려해야 할 부분들입니다.

1) 비즈니스에서도 실제 유의미한 차이를 볼 수 있는가?

실험의 결과를 해석할 때 통계적 유의미성(statistical significance)도 중요하지만 비즈니스에서 실제 유의미한지를 판단하는 것도 중요합니다. 이를 나타내는 것이 practical significance입니다. 만약 Google이나 Bing 같은 서비스라면 0.2%의 변화도 비즈니스적으로 유의미할 것입니다. 하지만 작은 스타트업이라 트래픽이 많지 않다면 2% 변화도 작다고 볼 수 있을 것입니다.

웹에 공개된 A/B 테스트 샘플 사이즈 계산기에서 확인할 수 있는 “Minimum Detectable Effect”가 바로 비즈니스적으로 효과가 있는 것으로 간주하려면 A그룹과 B그룹이 최소 어느 정도 차이가 나야하는지에 대한 내용입니다. 샘플 사이즈를 결정할 때는 이러한 practical significance도 함께 고려해야 합니다.

2) 실험이 얼마나 안전한가?

실험을 통해 사용자들에게 노출된 UI나 기능이 사용자 경험을 해친다면 비즈니스에 좋지 않은 영향을 끼칠 것입니다. 사용자들이 어떻게 반응할지 불확실하다면 보다 작은 비율의 사용자들에 대해 먼저 실험을 해보는 것이 좋습니다.

3) 다른 실험과 트래픽을 공유하는가?

여러 실험을 진행해야 한다면, 동시에 진행할지 순차적으로 진행할지 결정해야 합니다. 여러 실험을 동시에 진행하되, 트래픽을 나누어주어야 한다면 각 실험은 더 작은 트래픽으로 진행해야 할 것입니다.

5) 실험 기간

“A/B 테스트 실험의 기간을 어떻게 결정할 것인가?”도 중요한 질문입니다. 실험 기간을 결정할 때는 아래 요소들을 고려해야 합니다.

사용자수

더 많은 사용자들을 대상으로 실험을 진행하려면 더 긴 기간동안 실험을 진행해야 합니다. 이 때 생각해야 하는 부분은 하루에 N명의 사용자가 방문한다고 2일동안 2배의 사용자가 방문하지 않는다는 것입니다. 중복하여 방문하는 사용자들이 있고, 사용자는 선형이 아닌 준선형(sub-linear)으로 늘어난다는 것을 고려해야 합니다.

요일 효과(Day of week effect)

평일에 접속하는 사용자수와 주말에 접속하는 사용자수는 다를 수 있고, 같은 사용자이더라도 다르게 행동할 수 있습니다. 그러므로 실험을 진행할 때는 평일과 주말을 모두 포함하도록 최소 한 주 이상 진행하는 것이 좋습니다.

계절성(Seasonality)

사용자들이 특별히 평상시와 다르게 행동할 수 있는 기간이 있다는 것을 고려해야 합니다. 예를 들어 크리스마스 시즌이라면 다른 때보다 기프트 카드(gift card)가 더 잘 팔릴 수 있습니다. 특정한 기간의 효과로 얻은 결과가 아니라 일반화할 수 있는 결과를 얻으려면 이 부분을 고려해서 실험을 설계해야 합니다. 만약 글로벌 서비스를 운영한다면 다른 나라의 공휴일 등으로 인해 실험의 결과가 달라질 수 있다는 것을 생각해야 합니다.

초두 효과와 신기 효과(Primacy and novelty effects)

초두 효과(primacy effect)는 처음 제시된 정보가 나중에 제시된 정보보다 더 큰 영향을 미치는 것을 말합니다. 첫인상의 중요성을 말할 때 자주 언급되는 효과입니다. 서비스 관점에서 봤을 때는 기존 사용자들은 기존 기능과 UI에 익숙해져 있고, 이것이 더 큰 영향을 미칠 수 있습니다.

신기 효과(novelty effect)는 사람들은 새롭고 낯선 대상에 주의 집중하지만 어느 정도 적응하게 되면 관심을 끌지 못하는 것을 말합니다. 예를 들어 사용자들이 처음 보는 버튼을 관심을 가지고 눌러볼 수는 있지만, 크게 유용하다고 생각하면 시간이 흐르면서 버튼을 클릭하는 빈도는 줄어들 것입니다.

처음 사용자들에게 기능과 디자인을 제공할 때 위의 효과들이 크고 작은 영향을 미칠 수 있고 안정화되는 시간이 필요합니다. 실험 기간을 설계할 때는 위와 같은 부분들을 고려해 실험을 설계하는 것이 좋습니다.

A/B 테스트를 설계할 때 고려해야할 중요한 요소들에 대해 알아봤습니다. 책의 초반부라 실험 설계를 위한 큰 원칙들을 소개하고 있습니다. 각 요소들에 대해 앞으로 상세히 다룰 예정으로 보입니다. 이후 각 요소를 다루는 글로 찾아뵙겠습니다. 도움이 되었으면 좋겠습니다.