데이터 분석/방법론

[A/B 테스트] A/B테스트와 파이썬 예제

sseozytank 2022. 9. 8.

✔️A/B테스트란 무엇일까?

 

A/B 테스트(버킷 테스트 또는 분할-실행 테스트)란 , 마케팅과 웹 분석에서 사용하는 방법으로, 대조 실험이라고 할 수 있다. 

 

상황을 하나 예로 들어보도록 하자. 한 서비스의 참여자를 모집함에 있어 카카오톡 배너로 광고를 실행하는데 

참여만 해도 경품 100% 증정과 , 참여자 모집 이라는 두가지 문구로 나누어 광고를 집행하였다. 

 

과연 어떤 문구가 사람들의 구미를 당겼을까? 

이걸 알아보는 것이 바로 A/B테스트 인 것이다. 

 

✔️왜 A/B테스트를 하는걸까? 

이유는 정의에서도 볼 수 있듯이, 최적의 고객 경험을 제공

 

✔️설계는 어떻게 하는걸까?

A/B테스트의 가장 큰 목적은 '전환'이다. A라는 원본을 B라는 대안으로 바꾸어 지표X를 상승시켜야 한다. 

https://www.oracle.com/kr/cx/marketing/what-is-ab-testing/

 

A/B 및 다변량 테스트의 정의, 필요성, 방법

A/B 테스트 및 이와 유사한 다변량 테스트를 사용하면 고객의 이메일 마케팅 캠페인, 웹사이트, 모바일 앱에서 효과를 거두는 부분과 그렇지 않은 부분을 알 수 있습니다. 여기서는 잠재고객의

www.oracle.com

A/B 테스트를 계획하고 실행하는 기본 단계

  • 1. 성과 기준 측정 및 검토
  • 2. 성과 기준을 사용하여 테스트 목표 결정
  • 3. 테스트에서 성과를 개선할 수 있는 방법에 대한 가설을 개발
  • 4. 테스트 대상 또는 위치 식별
  • 5. 테스트할 A, B 버전 생성
  • 6. QA 도구를 활용하여 설정 검증
  • 7. 테스트 실행
  • 8. 웹 및 테스트 분석을 사용하여 결과 추적 및 평가
  • 9. 결론을 적용하여 고객 경험 개선

위와 같은 과정을 통해 A/B테스트를 설계하고 결론 도출 및 최종 적용을 통해 CX를 개선하는 것이 A/B테스트의 총 프로세스이다. 

요약하자면 가설 수립 -> 실험 진행 -> 결과 분석의 과정을 따른다. 

지표 선정과 가설 수립 같은 경우는 회사의 내부 시스템과, 방향성 등에 대한 종합적인 고려가 필요하기 때문에 여기서는  A/B테스트의 결과를 검증하는 것만 다루도록 한다. 

 

✔️결과는 어떻게 검증할 수 있는 것일까? 

마케팅 결과를 데이터로 받았더니 다음과 같은 형태의 모습을 하고 있었다. 

대충 보기엔 비슷해 보이는데 이렇게 눈대중으로 보고 두개의 클릭율이 차이가 없다고 말할 수 있느냐!? 라고 하면 당연히 이 데이터만 보면 확신이 없다. 이 때 통계적 검증을 진행해 주장에 타당성을 보태야 한다.

  노출 수  클릭 수 신청 수 
문구[1] 경품 100% 증정 100,000 6,300 3,100
문구[2] 참여자 모집 80,000 4,800 1,200

1) 클릭율 :: 노출 -> 클릭

문구 [1] 0.063

문구 [2] 0.06

2) 전환율 :: 노출 -> 신청 전환

문구 [1] 0.031

문구 [2] 0.015

 

통계적 검증은 카이스퀘어 검정을 진행한다. 파이썬의 scipy 라이브러리로 카이스퀘어 검정을 진행할 수 있다. 

ver.1  출처 : https://data101.oopy.io/ab-test-python-or-without-code

 

파이썬으로 AB 테스트하기 (코딩 모르는 ver. 추가!)

예제 1. 디자인 시안 A,B에 따른 유저의 체류 시간 테스트하기

data101.oopy.io

import pandas as pd
from scipy.stats import chi2_contingency


def click_abtest(a_click, total_a, b_click, total_b):

    click = [a_click, b_click] # A와 B의 클릭한 유저 수
    no_click = [total_a - a_click, total_b - b_click]  # A와 B의 클릭 안 한 유저 수
    cont_table = pd.DataFrame([click, no_click], columns=['A', 'B'], index=['click', 'no_click'])
    chi2, p_val, d_f, expected = chi2_contingency([click, no_click])

    print("카이제곱 통계량 :", format(chi2, '.5f'))
    print("pvalue :", format(p_val, '.5f'))

click_abtest(6300, 100000, 4800, 80000)
카이제곱 통계량 : 6.86103
pvalue : 0.00881

ver2. 출처 : https://hleecaster.com/python-abtest/

 

파이썬으로 A/B 테스트 분석하기 - 아무튼 워라밸

요즘 A/B 테스트가 유행이긴한가보다. 마케팅에서 시작된 거긴 하지만 사실 아무데나 다 쓸 수 있다. 파이썬으로 A/B 테스트를 수행하는 연습을 약식으로 해보았는데, 간단히 소개해본다.

hleecaster.com

'''
contingency = [[A_click , A_no_click ],
               [B_click , B_no_click ],
               ]
'''

contingency = [[6300, 100000-6300],
               [4800 , 80000-4800],
              ]
from scipy.stats import chi2_contingency
chi2, pval, dof, expected = chi2_contingency(contingency)

print("카이제곱 통계량 :", format(chi2, '.5f'))
print("pvalue :", format(pval, '.5f'))
카이제곱 통계량 : 6.86103
pvalue : 0.00881

p= 0.009 < 0.05 이기 때문에 유의수준 0.05 에서 두 문구는 클릭율에 차이가 있다고 할 수 있다. 

 

같은 방식으로 전환율에 대해서도 검증을 진행해보면 p= 0.00000 < 0.05이기 떄문에 전환율은 훨씬 더 명확한 차이가 있다고 할 수 있다. 

그렇다면 문구[1] 경품 100%증정이 사람들을 전환시키는데 더욱 매력적인 카피라고 결론내릴 수 있게 되고, 이를 다음 마케팅에 고려사항으로 올리면 되는 것이다. 

 

✔️무엇을 주의해야 할까? 

아래는 뷰저블에 올라온 A/B테스트 실시할 때 주의해야할 점 7가지인데, 너무 잘 정리되어 있어서 링크로 대신 첨부한다! 너무 좋은 글이라 한 번 읽어보면 정말 좋을 것 같다.

https://www.beusable.net/blog/?p=2854 

 

A/B테스트를 실시할 때 주의해야 할 점, 7가지 | 뷰저블

A/B테스트를 실시하기 전 반드시 숙지해야 할 점

www.beusable.net

 

✔️A/B테스트 활용 예시

https://yozm.wishket.com/magazine/detail/897/

 

바로 활용하는 12가지 AB 테스트 사례 | 요즘IT

AB 테스트는 가설 수립, 실험 진행, 결과 분석의 3단계로 진행되는 그로스 해킹 방법론입니다. AB 테스트는 제품과 조직의 확실한 성장 엔진으로, 그랩(Grab), 넷플릭스(Netflix), 에어비앤비(Airbnb) 등

yozm.wishket.com

 

 

댓글