(데이터 분석) A/B 테스트

*A/B 테스트는 여러 선택지 중에서 어느 것이 가장 좋은 결과를 가져다줄지 알아보기 위한 검증방법이다.

예를들어, 배너 A와 B를 따로 광고하게 되면 외부요인의 영향이 생길 수 밖에없지만, 배너 A와 B를 동시에 광고하면 외부요인의 영향을 배제할 수 있는 것이다.


예를들어, A와 B라는 2개의 제품을 만들고 동시에 판매해서 데이터를 수집하고, 타깃 고객층에 크게 어필한 것이 어느 쪽인지 검증하는 것이다. 비용이 제법 들지만, 같은 시기에 같은 타깃 고객층에 대한 분명한 인과관계를 알 수 있기 떄문에 많이 사용한다.

*A와B의 구분은 임의적이어야 한다.


A/B테스트를 실시하기 위해서는 먼저 유저를 A와 B두 그룹으로 나누어야 한다. 그룹 A에는 배너 A를, 그룹 B에는 배너 B를 보여준 후 그룹 A와 그룹 B의 구매율을 비교한다.
이떄 주의해야 할 점이 있습니다. 그것은 그룹 A와 그룹 B를 나누는 방법이다.
예를들어,
  • A: 남성
  • B: 여성
이렇게 나누더라도 시기적인 요인이나 게임의 이벤트, TV광고 등의 영향은 배제할 수 있을 것입니다. 그러나 게임에서 사용하는 금액은 남녀 간에 차이가 날 수 있습니다. 또한 앞에서 TV광고등의 영향을 배제할 수 있을 거라고 했지만, 곰곰히 생각해보면 남녀가 TV를 시청하는 시간이나 선호하는 방송이 다를 수 있습니다.


즉, 그룹 A와 B를 구분할 때는 두 그룹간에 '남녀'와 같은 명확한 차이가 나타나지 않도록 임의로 나눌 필요가 있습니다.
애당초 A/B테스트를 실시하는 것은 그런 '배너광고 이외의 영향'을 없애고 순순히 배너광고의 내용에 의한 차이를 보기 위해서이니깐요.

두 개의 그룹에서 조건의 차이가 생기지 않도록 하는 가장 단순한 방법은 유저 ID를 어떤 숫자로 나눈 나머지로 분류하는 방법입니다. 이 방법을 이용하면  성별, 연령대, 게임이용시작일 등의 조건이 모든 그룹에 균등학 배분될 것입니다.


*A/B 테스트를 동시에 여러 개 실시할 때의 함정


A/B테스트는 임의로 두 개의 그룹으로 나누어 그룹 A와 B간의 차이를 확인하는 검증 방법이지만, 기업에 따라서는 A/B테스트를 여러 개 동시에 실시할 때도 있다.
그런데 여러 개를 동시에 실시하면 각각 앞에서 설명한 방법으로 유저를 나누더라도 다른 테스트에 영향을 미칠 가능성이 있다.

예를들면,
1. 모든 A/B테스트에서 그룹을 완전히 똑같은 식으로 구분한 경우
2. 그룹 A와 그룹 B의 유저 비율이 다를 경우

1번은 완전히 같은 그룹이기 때문에, 두 개 그룹간에 차이가 나타나더라도 그것이 어떤 테스트에 의한 영향인지 알 수 없게된다. 2번은 그룹을 임의로 나눈다고 했는데, 실제로는 의도치 않게 다른 테스트를 실시 중인 유저 비율이 다르게 나타난 경우입니다. 
이때에도 그룹간에 테스트 항목 이외의 조건에 차이가 생기게됩니다. 다른 테스트를 실시 중인 유저가 포함되지 않도록 그룹을 나눌수 있는지 사전에 검토하면 테스트를 올바르게 수행할 가능성이 높아집니다.
하지만 다른 테스트의 그룹에 따라 그것이 힘든 경우도 있습니다. 예를들어,
"어떤 값으로 나눈 나머지가 1인유저" 와 같은방식으로 나눈 그룹이라면 이것과 겹치지 않게 다시 그룹을 나누는 것이 쉽지만, "어떤 값으로 나눈 나머지가 1~5인 유저" 와 같이 범위로 지정하면 이것과 겹치지 않게 다시 그룹을 나누는 것이 곤란할 수 있습니다.

이와 같은 경우 테스트의 시기를 달리하든지 사전에 A와 B의 KPI(Key Performance indicator(중요업적 평가지표))추이를 비교해서 차이가 없음을 확인한 후에 실시한다.
소셜게임에서 일반적인 KPI는 PV(Page View)=액세스 횟수, DAU(1일 이용 유저수), ARPU(유저 1명의 월간 평균 지출 금액),지속율, 과금율 등이있습니다.


*통계적 가설검정은 커트라인

A/B 테스트 이외에 '어떤 두 개의 그룹에 차이가 있는지 없는지' 조사하는 방법으로 통계학에는 '가설검정'이라는 기법이있다.

그러나 가설검정은
 "사람수(샘플사이즈)가 작은 데 따른 오차를 고려하더라도 두 그룹간에 차이가 있다고 할 수 있는가?"
를 확인하기 위한 수단에 그치기 때문에, 사람수가 많은 경우에는 대부분 '통계적으로 유의한 차이가 있다' 라는 결과가 됩니다.

사람수가 적은데 따른 오차란, 예를들어 두 그룹 모두 다섯명으로 구성했을 경우 결과저그로 두 그룹간에 구매율 차이가 없다 하더라도, 그것이 다음과 같이 어느 한쪽 그룹의 누군가의 '우연'에 의한 것일 수도 있다는 것이다.
  • 평소에는 잘 구매하지 않는데 '우연'히 구매했다.
  • 평소에는 자주 구매하던 사람이 '우연'히 아무것도 구매하지 않았다.
사람수가 적으면 한 명의 우연히 큰 영향을 끼치지만 사람수가 많으면 거의 영향을 끼치지 않는다. 따라서 가설검정은 사람수가 많아질수록 '통계적으로 유의한 차이가 있다'는 결론을 내리기 쉬워진다.


하지만 '통계적으로 유의한 차이'가 있어도 비즈니스에서 의미가 있는 차이라고 단정할 수는 없다. 즉, 가설검정에서 차이가 나타났기 떄문에 이걸로 끝'이 아니라 적어도 가설검정에서는 의미가 있는 차이가 나타났으므로 이제 이게 비즈니스상에서 의미가 있는 차이인지 검토하자라는 식으로 사용해야 한다.



*R에서 카이검정 실행하기

chisq.test(ab.test.imp$test_case,ab.test.imp$is.goal)


댓글

이 블로그의 인기 게시물

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬

(18장) WebSocekt과 STOMP를 사용하여 메시징하기