首页 > 人工智能 > 人工智能 > 为什么要在离线A/B测试中使用贝叶斯方法?

作者 | Alain Tanguy
编译 | VK
来源 | Towards Data Science
当涉及到假设检验时,贝叶斯方法可以取代经典的统计方法。这里将使用web分析的具体案例来演示我们的演示。
问题陈述
可以考虑两种设计来运行这个实验:
由于离线A/B测试问题需要截然不同的解决方案,因此本文只讨论离线情况。
频率方法:p值法和roc曲线法
每个用户被展示为创意A或B的概率为0.5,并直接以未知的概率p_A=0.04或p_B=0.05进行转换。
import scipy.stats as stats
#真实概率
p_A = 0.05
p_B = 0.04
#用户流量
n_users = 13500
n_A = stats.binom.rvs(n=n_users, p=0.5, size=1)[0]
n_B = n_users - n_A
#转换策略
conversions_A = stats.bernoulli.rvs(p_A, size=n_A)
conversions_B = stats.bernoulli.rvs(p_B, size=n_B)
print("creative A was observed {} times and led to {} conversions".format(n_A, sum(conversions_A)))
print("creative B was observed {} times and led to {} conversions".format(n_B, sum(conversions_B)))


解释测试结果
置信区间(CI)
置信区间表示与真实参数在建议范围内的置信度相关的未知参数的合理值范围。

贝叶斯方法:简单之美
对于本部分,我们将使用python的PyMC3库,这使我们能够轻松地构建贝叶斯非参数模型。
import pymc3 as pm
with pm.Model() as model:
n_users = 10000
#定义随机和确定性变量(构建网络)
#用户的数量
n_A = pm.Binomial("n_A", n_users, 0.5)
n_B = pm.Deterministic("n_B", n_users - n_A)
# 数量的转换
conversions_A = pm.Binomial("conversions_A", n_A, p_A)
conversions_B = pm.Binomial("conversions_B", n_B, p_B)
observed_conversions_A = pm.Deterministic('observed_conversions_A', conversions_A)
observed_conversions_B = pm.Deterministic('observed_conversions_B', conversions_B)
p_estimates = pm.Uniform("p_estimates", 0, 1, shape=2)
delta = pm.Deterministic("delta", p_estimates[1] - p_estimates[0])
#向网络提供观测数据
obs_A = pm.Binomial("obs_A", n_A, p_estimates[0], observed=observed_conversions_A)
obs_B = pm.Binomial("obs_B", n_B, p_estimates[1], observed=observed_conversions_B)
#运行MCMC算法
start = pm.find_MAP()
step = pm.Metropolis()
trace = pm.sample(50000, step=step)
burned_trace = trace[1000:]



结果
我们可以简单地计算出小于0的后验概率:
np.mean (delta_samples < 0)
在这里,我们得到了0.956,这意味着广告素材A产生的转化率比广告素材B高出96%!
但我们可以更进一步。想象一下,从设计B转换到设计A是很昂贵的,并且只有至少提高5%的性能才能盈利。我们有办法计算它!只需在我们的网络中插入一个新的确定性变量Tau = p_A/p_B,然后对后验分布进行采样。
tau = pm.Deterministic(“tau”, p_estimates[0] / p_estimates[1])

根据MCMC抽样估计的Tau的后验分布
np.mean (tau_samples > 1.05)
结论
贝叶斯框架为经典的A/B检验方法提供了一个易于执行和阅读的替代方法,并允许我们通过简单地计算后验分布来检验任何假设。
贝叶斯方法使我们能够在A/B测试的情况下实现更高效的离线决策,以及更高效的在线决策。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31555081/viewspace-2677352/ ,如需转载,请注明出处,否则将追究法律责任。