2019년 1월 8일 화요일

Python : 베이지안 AB Test ( Bayesian A/B Test )

베이지안 A/B Test

마케팅 분석 혹은 웹 분석시 실험군과 대조군을 비교하여 상대적인 효용성을 측정하는 대조 실험.

일반적으로 측정하는 결과값으로 흔히 말하는 전환율를 사용한다. 전환율의 차이가 크다면 단순히 전환율만으로 판단할 수 있겠으나, 두 그룹간 대상수가 차이가 나거나 전환율의 차이가 미미하다면 이를 판단할 근거가 필요하다. 이런 상황에서 실험군의 전환율이 대조군의 전환율보다 높을 확률을 추정할 수 있다.

이 방법이 베이지안 A/B 테스트 이다.

Python Code: Github Link

import numpy as np
from numpy.random import dirichlet

def expected_revenue(P):
   return 100*P[:,0] + 0*P[:,1]

N_A = 10000
N_A_TRUE = 3300
N_A_FALSE = N_A - N_A_TRUE
observations_A = np.array([N_A_TRUE, N_A_FALSE])

N_B = 500
N_B_TRUE = 170
N_B_FALSE = N_B - N_B_TRUE
observations_B = np.array([N_B_TRUE, N_B_FALSE])

prior_parameters = np.array([1,1])

posterior_samples_A = dirichlet(prior_parameters + observations_A, size=100000)
posterior_samples_B = dirichlet(prior_parameters + observations_B, size=100000)


posterior_expected_revenue_A = expected_revenue(posterior_samples_A)
posterior_expected_revenue_B = expected_revenue(posterior_samples_B)
p = (posterior_expected_revenue_B > posterior_expected_revenue_A).mean()

print ("B 가 A 보다 전환율이 클 확률: %.3f"%p)
print ("Probability that p_B > p_A: %.3f"%p)




댓글 없음:

댓글 쓰기

추천 게시물

python: SVD(Singular Value Decomposition)로 간단한 추천시스템 만들기( feat. surprise )

svd_example In [15]: # !pip install surprise In [21]: from...