책 <A/B 테스트(론 코하비.다이앤 탕.야 쉬 지음)>의 02장을 요약정리한 내용입니다.
이번 2장에서는 실험의 설계, 실행 및 분석의 기본 원리에 대해 학습합니다.
이러한 원칙은 소프트웨어가 배포되는 모든 곳(웹 서버와 브라우저, 데스크톱 어플리케이션, 모바일 어플리케이션, 게임콘솔, 보조장치)에 적용됩니다.
저희는 단순하고 구체적인 내용을 위해 웹사이트 최적화 사례에 초점을 맞춰 학습하겠습니다.
예제 설정
위젯을 판매하는 가상의 온라인 상점 사이트를 대상으로 예제를 설정하겠습니다.
여기에는 테스트 할 수 있는 다양한 변화들로
새로운 기능 도입, 사용자 인터페이스(UI)의 변화, 백엔드의 변화 등이 있고
이러한 변화들을 테스트할 수 있습니다.
즉, 사용자가 이 쿠폰 필드를 본다는 사실만으로도 속도가 느려지며
코드를 검색하게 하고 심지어는 사용자를 떠나게 할 수 있다는 우려가 존재한다.
단순히 쿠폰 코드를 추가하는 것의 영향을 평가하기 위해
가짜 문이나 페인트칠을 한 문을 이용하는 방법을 사용하겠습니다.
이런 경우, 체크아웃 페이지에 쿠폰 코드 필드를 더하는 간단한 추가 변경을 구현합니다.
실제로 사용할 수 있는 코드가 없기 때문에 쿠폰 코드 시스템을 구현할 필요가 없으며,
사용자가 들어올 때 언제나 시스템은 "유효하지 않은 쿠폰 코드"라 말하면 됩니다.
(->아이디어는 쿠폰 코드를 더하는 것, 구현은 특정 UI변화로 만들어내는 것)
이러한 간단한 변화이기 때문에 2개의 UI 구현을 테스트할 것입니다.
평가에 대한 우리의 목적은
쿠폰 코드 필드가 끼치는 매출에 대한 영향을 평가하는 것
쿠폰 코드 필드가 사람들의 체크아웃을 방해한다는 우려를 평가하는 것입니다.
▶체크포인트
구현 하나에 아이디어 하나를 평가하기 위해 여러 실험 군을 동시에 테스트하는 것이 일반적이다.
단순한 A/B 테스트는 새로운 비즈니스 모델의 실행가능성을 평가하는 데 있어 중요한 스텝임.
제안된 UI 변화를 가정으로 바꿀 때 아래와 같이 온라인 쇼핑 프로세스를 퍼널로 생각하는 것이 유용합니다.
이미지 속 퍼널 모델은 단순화된 것으로, 실제 사용자는 퍼널을 따라 선형적으로 진행하지는 않을 것이며
단계를 앞뒤로 왔다 갔다 하는 것을 반복할 것입니다.
그러나 간단한 모델은 실험 디자인과 분석을 통찰하는데 도움이 됩니다.
왜냐하면 실험은 일반적으로 퍼널의 특정 스텝을 개선하는 것을 목표로 하기 때문입니다.
2개의 상이한 UI를 테스트하며 수입에 대한 영향을 평가해보려 합니다.
여기서 우리의 가설은
쿠폰 코드 필드를 체크아웃 페이지에 더하는 것은 매출을 저하할 것이다입니다
지표 선택
변화를 측정하고자 목적지표 혹은 성공지표를 정의해야 합니다.
하나의 지표만 있다면, 그 지표를 직접 우리의 OEC(장기적 목표에 영향을 미치는 종합 평가 기준)으로 사용할 수 있습니다.
이 실험에 대한 명백한 지표 선택은 매출입니다.
전체 매출을 증가시키는 것이 목표이지만, 이를 지표로 선택하는 것은 권장하지 않습니다.
권장하는 지표는 샘플의 크기에 대해 표준화된 지표를 사용하는 것입니다.
따라서 사용자당 매출 OEC는 좋은 OEC입니다.
사용자 선택
이 다음으로 중요한 질문은 사용자 당 매출 지표의 분모로
어떤 사용자들을 고려할 것인지 결정하는 것입니다.
- 사이트를 방문하는 모든 사용자 : 이는 유효하지만, 불필요한 노이즈가 추가되어 있습니다. 체크아웃을 전혀 개시하지 않은 사용자들을 제외할 때, 더 민감한 A/B 테스트가 될 것입니다.
- 구매 프로세스를 완료한 사용자: 이 선택은 변화가 사용자 당 구매액에만 영향을 준다고 가정하고 있습니다. 하지만 구매를 완료하지 않은 사용자 수에도 영향을 줄 수 있으므로 잘못된 선택입니다.
- 구매 프로세스를 시작한 사용자: 변화가 퍼널 내에 있다는 전제하에 이것은 최적의 선택입니다. 잠재적으로 영향을 받은 모든 사용자를 포함하지만, 퍼널 영향을 받지 않는 사용자들(체크아웃을 전혀 시작하지 않은 사용자들)은 포함하지 않습니다.
대조: 과거 체크아웃 페이지
실험 1: 신용카드 정보 아래 쿠폰 또는 기프트 코드 필드|
실험 2: 팝업으로 쿠폰 또는 기프트 코드
이렇게 테스트를 진행했다
실험을 진행한 뒤 세울 수 있는 이 테스트에 대한 더 정교한 가설은
"쿠폰 코드 필드를 체크아웃 페이지에 더하면, 구매 프로세스를 시작하는 사용자에 대한 사용자당 수입이 저하한다."입니다
가설 검정: 통계적 유의성 확립
실험을 설계 실행, 분석 또는 분석을 하기에 앞서
통계적 가설 검사와 관련된 몇 가지 기본 개념을 살펴보겠습니다
통계적 가설 검사
지표의 추정치
기준 평균값과 평균의 표준오차
변동성
지표의 추정치가 어느 정도로 변동성이 큰지 이해함으로써 지표의 기능을 파악한다.
실험의 크기를 적절하게 조정하고 분석 중에 통계적 유의도를 계산하기 위해 변동성을 알 필요가 있다.
대부분의 경우 지표로 평균을 측정하지만 백분위수와 같은 다른 요약 통계량을 선택할 수도 있다.
민감도
통계적으로 유의미한 차이를 탐지하는 능력인 민감도는 평균의 표준오차가 낮을수록 개선된다.
실험을 할 때, 하나의 지표로 요약할 수 있는 한 개의 샘플이 아니라, 여러 개의 샘플을 사용한다.
종합 대조 실험의 경우 대조군을 위한 샘플 하나와 실험군을 위한 샘플 하나를 갖고 있다.
평균이 같다는 귀무가설하에 두 비교군 간의 차이가 있을 가능성이 낮은지에 대한 여부를 정량적으로 시험한다.
평균이 같을 가능성이 낮다면 귀무가설을 기각하고 그 차이가 통계적으로 유의하다 주장한다.
구체적으로는 대조군 실험군 샘플로부터의 사용자당 매출 추정치가 주어졌을 때, 차이에 대한 p값을 계산하는데, 이때 p값이 0.05보다 작을 때 차이가 통계적으로 유의하다고 선언한다.
또는, 통계적 유의성을 평가하기 위한 95% 신뢰구간을 사용하는 동일한 견해,
만약 0이 신뢰구간 바깥에 있을 경우 유의성을 선언합니다.
"통계적 검정력"은 변형군 간에 실제로 차이가 있을 때, 이 차이를 유의미하다고 판별할 확률입니다.
실무적으로 이야기하자면, 당신의 실험은 기대했던 변화 수준보다
더 큰 변화가 있었는지를 높은 확률로 결론 내릴 수 있는 검정 능력이 요구됩니다.
이때 일반적으로 표본 크기가 클수록 검정력은 커집니다.
일반적으로는 80~90%의 검정력을 가지는 실험을 설계합니다.
"통계적 유의도"는 귀무가설을 가정할 때, 우연히 관찰한 결과 또는 더 극단적인 결과가 발생할 수 있는 가능성을 측정합니다.
모든 통계적으로 유의한 결과가 실질적으로 의미 있는 것은 아니기 때문에, 이러한 실질적인 경계를 설정하는 데에는 그 차이가 변경 비용을 지불할 가치가 있는지 여부를 이해하는 데 중요합니다.
수십억 달러를 창출하는 웹사이트의 경우 0.2%의 변화는 실질적으로 중요합니다.
이에 비해, 스타트업은 10% 이상의 개선된 변화를 추구하기 때문에 2%의 변화라도 이들은 너무 작게 생각할 수 있습니다.
실질적인 경계에 대해 예를 들자면 사업 관점에서 사용자당 수익의 1% 이상 증가는 중요하거나 실질적으로 유익한 변화라 할 수 있습니다.
실험 설계
위에서 가설과 실제적인 유의도 경계를 설정했고, 지표를 특정지었습니다.
- 가설: "쿠폰 코드 필드를 체크아웃 페이지에 더하면, 구매 프로세스를 시작하는 사용자에 대한 사용자당 수입이 저하한다."
- 실제적 유의도 경계: 과학적 표준인 p값 0.05 미만, 신뢰구간 0을 포함하는지 여부
- 지표: 사용자당 매출 OEC, 이때 사용자는 구매 프로세스를 시작한 사용자이다.
이제 설계를 정의해야 하는데, 설계 정의를 위해 아래와 같은 일련의 결정을 사용할 것입니다.
- 무작위 추출 단위는 무엇인가?
- 무작위 추출 단위의 모집단을 어느 정도 대상으로 하고 싶은가?
- 어느 정도 규모의 실험이 필요한가?
- 실험을 얼마나 오래 진행할 것인가?
일단 사용자들이 우리의 무작위 추출 단위라 가정해 보자.
여러 대안이 있지만 가장 일반적인 방법이 사용자들을 단위로 추출하는 것이다.
이 장에서 우리가 모든 사용자를 대상으로 한다고 가정하고 예를 든다.
실험의 크기(우리 실험의 경우 사용자 수)는 결과 정밀도에 직접적인 영향을 미친다.
작은 변화를 감지하거나 결론에 충실해지려면 더 많은 사용자로 더 큰 실험을 해야 한다.
변경사항으로 고려할 수 있는 몇 가지 사항이 있다.
+) 우리 실험은 모든 사용자를 대상으로 하지만 반대의 경우도 있다.
특정 모집단을 대상으로 한다는 말은 특정 특성을 지닌 사용자에 대해서만 실험을 실행하려는 것을 의미한다.
예시로 새 텍스트를 실험하려 하는데, 새 텍스트가 단지 몇 개의 언어로만 표시되는 경우 해당 언어로 인터페이스 로케일(사용자의 언어, 국가뿐 아니라 UI에서 사용자가 선호하는 출력 형식 등을 정의하는 파라미터)이 설정된 사용자만 타깃으로 삼을 수 있다.
- OEC로 사용자당 수익이 아닌 구매지표를 사용하면 표준오차가 작아져 동일한 민감도를 얻기 위해 많은 사용자를 실험에서 사용할 필요가 없게 된다. (구매지표: 사용자가 구매금액과 무관하게 구매했는가 여부. 예 / 아니오)
- 실질적인 유의도 수준을 높일 경우, 예를 들어 1% 변화 감지는 신경 쓰지 않고, 더 큰 변화만 감지하겠다. 이럴 경우 큰 변화는 감지하기 쉽기 때문에 표본의 크기를 줄일 수 있을 것이다.
- 귀무가설을 기각하기 전 변화가 발생했다는 것을 더욱 확신하기 위한 목적으로 0.01과 같은 낮은 p값 임계치를 사용하려면 표본 크기를 늘려야 한다.
여기에서 실험 크기를 결정할 때 고려해야 할 몇 가지 사항이 있다.
- 실험은 얼마나 안전한가? 사용자가 어떤 반응을 보일지 모를 대규모 변경일 경우 먼저 더 적은 비율의 사용자로 시작하는 것이 좋다. 이 논리는 실제 실험 크기 선택에 영향을 미치지 않아야 한다. 그러나 실험에 참여하는 사용자 수를 확대하기 위한 전술에 영향을 미칠 수는 있다.
- 이 실험이 다른 실험과 트래픽을 공유할 필요가 있는가? 그럴 경우 트래픽 요구사항의 균형을 어떻게 맞출 것인가? 높은 수준에서 테스트할 다른 변경 사항이 있는 경우 이러한 변경사항을 동시 혹은 순차적으로 실행하도록 선택할 수 있다.
실험을 얼마나 오래 할 것인지 또한 주요한 문제인데, 이 문제에 대해 고려해야 할 요인은 아래와 같다.
- 더 많은 사용자:온라인 실험에서 시간이 흐를수록, 실험이 오래 실행될수록 더 많은 사용자들이 실험을 참여하게 된다. 이는 일반적으로 통계적 검정력을 증가시킨다. (측정된 지표가 누적된 경우(= 세션 수와 분산이 증가할 경우) 예외가 발생하기도 한다.) 또한 동일한 사용자가 다시 돌아올 수 있다는 점을 고려할 때 시간에 따른 사용자 누적률은 저선형이 될 가능성이 높다.
- 주간 효과: 평일과 주말에는 사용자의 분포가 달라질 수 있다. 실험이 주간 사이클을 포착했는지 확인하는 것은 중요한 부분이다. 최소 1주일 동안 실험을 하는 것을 추천한다.
- 계절성: 공휴일과 같이 사용자들의 행동이 달라지는 주요하게 고려할 시기가 있을 수 있다. 예를 들어 기프트 카드를 파는 것은 크리스마스 시즌에는 효과가 좋을 수 있지만 일 년 중 다른 기간에는 효과가 없을 수 있다. 이를 외적 타당성이라 한다. (외적타당성: 어떤 기간의 결과를 다른 기간에 일반화할 수 있는 정도를 나타낸다.)
- 초두효과 및 신기성효과: 실험 초기의 효과는 정상보다 크거나 작은 경향이 있어서 효과의 안정화에는 시간이 걸리는 실험들이 존재한다. 새로운 기능을 추가했는데 사용자들이 이것이 유용하지 않다는 것을 발견함에 따라 새로운 기능의 버튼 클릭수는 시간이 지나면서 줄어들 것이다. 반면 익숙해지는 것이 필요한 기능의 경우 사용자들이 익숙해져서 효과가 나타나는 데 시간이 걸린다.
▶이러한 요소들을 고려한 우리의 실험 설계는 다음과 같다.
- 무작위 추출 단위는 사용자다.
- 모든 사용자를 대상으로 체크아웃 페이지를 방문하는 사용자를 분석한다. (체크아웃 페이지: 결제를 위한 페이지. 체크아웃 프로세스 마지막에 표시되며, 고객에게 일련의 지불 옵션을 제공하고 장바구니에 대한 개요를 보여준다.)
- 사용자당 수익 1% 이상의 변화를 감지할 수 있는 80%의 통계적 검정력을 갖기 위해 검정력 분석을 실시해 실험의 크기를 결정한다.
- 이들 조건은 대조군/ 실험군 1/ 실험군 2 간에 34/ 33/ 33%로 분할된 상태로 최소 4일 동안 실험을 실행. 요일효과를 이해하기 위해 일주일 내내 실험을 실행할 것이며, 신기성이나 초두효과를 감지하면 잠재적으로 더 오래갈 것이다.
일반적으로, 검정력을 과하게 높게 설정하는 것은 문제가 없다.
세그먼트(예시로 지리적 지역 또는 플랫폼)를 검사하고 실험이 몇 가지 주요 지표의 변화를 감지하기에
충분한 검정력을 갖고 있는지 확인해야 할 때도 있기 때문에 오히려 권장된다.
예를 들어, 모든 사용자의 수익영향을 감지할 수 있는 충분한 검증력은 있지만 캐나다 사용자만을 보려면 충분한 검정력을 확보하지 못할 수 있다.
또한 대조군과 실험군에 대해 거의 동일한 크기를 선택했지만, 실험군의 종류가 증가하면
대조군의 크기를 실험군 크기보다 크게 늘리는 것을 고려할 수 있다.
실험실행과 데이터 수집
이제 실험을 실행하고, 필요한 데이터를 수집하자.
실험을 실행하려면 다음 세 가지 요소가 모두 필요하다.
- 사용자가 사이트와 상호작용하는 방식
- 이러한 상호작용이 어떤 실험에 속하는지에 대한 로그 데이터를 얻기 위한 계측
- 실험 구성부터 변형 할당에 이르기까지 실험을 수행할 수 있는 인프라
실험을 실행하고 필요한 계측으로 로그데이터를 수집하면,
데이터를 처리하고 요약 통계를 계산하고 결과를 시각화할 준비가 된 것이다.
결과해석
이제 실험으로부터 데이터를 얻게 됐다.
이 데이터로 사용자당 수익 결과를 보기 전에
실험이 제대로 실행되었는지 확인하기 위해 적절성 검사를 수행할 필요가 있다.
사용자당 수입, 실험군 |
사용자당 수입, 대조군 |
차이 | p값 | 신뢰구간 | |
실험군 1: 대조군 | $3.12 | $3.21 | - $0.09 (-2.8%) |
0.0003 | [- 4.3%, - 1.3%] |
실험군 2: 대조군 | $2.96 | $3.21 | - $0.25 (-7.8%) |
1.5e -23 | [- 9.3%, - 6.3%] |
실험결과를 무효로 할 수 있는 버그가 숨어 들어올 수 있는 방법이 많다.
이들을 포착하기 위해 가드레일 지표 또는 불변성 지표들을 살펴본다.
이러한 지표들은 대조군과 실험군 사이에서 변경되어서는 안 된다.
만약 변경된다면 측정된 차이는 테스트된 기능에 의한 것이 아닌 우리가 수행한 다른 변경의 결과일 가능성이 높다.
이러한 불변성 지표에는 두 가지 유형이 있다.
- 예를 들어 대조군 및 실험군 샘플의 크기가 실험 설정을 그대로 따르거나 이들의 캐시 적중률이 동일하리라 기대하는 신뢰 관련 가드레일 지표
- 조직에 중요하고 많은 실험에서 불변할 것으로 예상되는 지연 시간과 같은 조직 가드레일 지표. 체크아웃 실험에서 지연 시간이 변한다면 매우 놀랄 것이다.
두 가지 실험군에 대한 p값이 0.05보다 작기 때문에, 실험군과 대조군의 평균이 같다는 귀무가설은 기각된다.
이는 UI에 쿠폰코드를 추가하면 수익이 감소한다는 패턴을 확인했다는 뜻을 의미한다.
숫자들을 더 자세히 보면 구매과정을 완료한 숫자가 적기 때문에 감소했다는 것을 보여준다.
쿠폰 코드를 발송하는 마케팅 이메일 = 쿠폰 처리 + 유지보수를 추가하는 데 드는 구현 비용 + 쿠폰 코드를 처음 추가할 때 발생하는 부정적인 영향의 비용도 회수할 필요가 있다는 것을 의미한다.
마케팅 모델은 대상 사용자에 대한 작은 수익 증가를 추정했으나, A/B 테스트 결과 모든 사용자에게 상당한 수익감소를 나타냈다. 때문에 프로모션 코드를 도입하는 해당 아이디어는 폐기하는 것으로 조직은 의사결정을 내릴 수 있다.
출시 전에 최소 테스트로 A/B테스트를 수행함으로써 많은 노력이 절약되었다.
결과에서 의사결정으로
A/B 테스트의 실행 목표는 의사결정을 유도하기 위한 데이터를 수집하는 것이다.
올바른 결정을 내릴 수 있도록 결과가 반복 가능하고 신뢰할 수 있게 하는 데는 많은 노력이 필요하다.
발생할 수 있는 몇 가지 사례에 대한 의사 결정 과정을 살펴보자.
사례별로 실험결과를 갖고 있으며, 그 결과를 출시/ 미출시 결정으로 바꾸는 것이 목표다.
의사결정 부분을 강조하는 이유는 의사결정이 측정의 결론과 함께 다음과 같은 광범위한 맥락 모두를 고려할 필요가 있기 때문이다
- 여러 지표 간의 트레이드오프를 고려할 필요가 있는가?
- 서비스를 출시하는 데 드는 비용은 얼마인가? - 출시 전 기능을 완전하게 구축하기 위한 비용 - 신규 코드를 유지 보수하는 것이 더 비용이 많이 들 수 있으므로, 출시 후 지속적인 엔지니어링 유지 보수에 대한 비용
- 잘못된 의사결정의 단점은? 영향을 미치는 변화를 포기한다면 기회비용은 높을 수 있으며, 그 반대의 경우도 마찬가지일 수 있다.
통계적 및 실무적 유의도 임계값을 구축할 때 이러한 상황을 고려해야 한다.
임계값은 실험의 결과에서 결정 또는 행동으로 옮아갈 때 매우 중요하다.
임계값을 사용해 의사결정을 도축하는 법은 아래 그림을 참고하자.
1. 결과는 통계적으로 유의하지 않다. 실무적 유의도가 없다는 것도 분명하다. 이는 변화가 별 효과가 없다는 쉬운 결론으로 이어진다. 당신은 실험을 반복하거나 이 아이디어를 포기하기로 결정할 수 있다.
2. 결과는 통계적으로 그리고 실무적으로 유의하다. 다시 말해 쉬운 결정이다. 출시한다!
3. 결과가 통계적으로는 유의하지만 실무적으로 유의하지 않다. 이 경우, 변화의 규모에 대해서는 확신하지만, 그 규모가 비용과 같은 다른 요인보다 크지 않을 수 있다. 이 변화는 출시할 가치가 없을지도 모른다.
4. 이 예를 우리의 첫 번째 예와 같이 중립적인 것으로 간주한다. 그러나 신뢰구간은 실무적으로 유의한 범위를 벗어났다. 만약 실험을 실행해서 수익을 10% 증가시키거나 감소시킬 수 있다는 것을 알아낸다면, 정말로 그 실험을 받아들이고 변화가 중립적이라고 말할 것인가? 강력한 결론을 도출할 검정력이 부족하고, 우리가 어떤 출시 결정을 내릴 만한 자료도 부족하다고 말하는 것이 좋다. 이 결과에 대해 더 큰 통계적 검정력을 제공하도록 더 많은 단위를 갖고 후속 테스트를 실행하는 것을 권장한다.
5. 실무적으로 유의한 결과지만 통계적으로는 유의하지 않다. 따라서 비록 이 변화가 당신이 관심 있어하는 영향을 갖는다고 확실히 추측할지라도, 전혀 영향이 없을 가능성도 충분히 있다. 측정의 관점에서 최선의 권장사항은 이 테스트를 반복하되 더 큰 검정력으로 결과에 대한 더 큰 정밀도를 얻는 것이다.
6. 결과는 통계적으로 유의하며, 실무적으로 유의할 가능성이 있다. 5와 마잔가지로, 그 변 화가 실무적으로 유의하지 않을 가능성이 있다. 따라서 여기서는 앞의 예와 마찬가지로 더 많은 노력을 기울여 테스트를 반복하는 것이 좋다. 그러나 출시/미출시 결정만 고려하면, 출시 선택을 하는 것이 합리적인 결정이다.
기억해야 할 중요한 것은 결과에서 명확한 답이 나오지 않을 수 있지만, 결정을 내려야 할 때가 있을 것이라는 점이다. 그러한 상황에서는 어떤 요인을 고려하고 있는지, 고려하는 요인들이 실무적 및 통계적 유의도 경계에 어떻게 반영되는지에 대해 명확하게 할 필요가 있다.
퀴즈 1. 검정력을 과하게 높게 잡았을 경우 모든 사용자의 수익영향을 감지할 수 있는 충분한 검증력은 있지만 캐나다 사용자만을 보려면 충분한 검정력을 확보하지 못할 수 있다. (Y / N)
퀴즈 2. 가설 검정 단계에서 사용한 지표는 사용자당 매출 OEC이다 (Y / N)
'Data > AB Test' 카테고리의 다른 글
실험 간의 누출 및 간섭 (0) | 2023.09.25 |
---|---|
분산 추정 및 민감도 개선: 함정 및 해결 (0) | 2023.09.03 |
[A/B 테스트] 10. 보완 기법들 (0) | 2023.08.15 |
[A/B 테스트] 05. 속도의 중요성: 엔드-투-엔드 사례 연구 (1) | 2023.07.25 |