我想拟合一系列贝叶斯模型,其中我有一个独特的先验知识。每个模型基本上都有自己的观测向量。例如,假设我想找到一个网站中每个产品的转化率。我可以使用网站的转换率作为所有项目的通用优先级,然后根据每个项目的观察数据更新我的可能性。举个例子,为了得到A项转化率的后验分布,我将使用目前为止收集到的A项的所有数据和常见的先验数据(网站转化率)。你知道吗
这是我从Twiecki的Europy presentation中借用的一些代码:
np.random.seed(9)
algo_a = sp.stats.bernoulli(.5).rvs(300) # 50% profitable days
algo_b = sp.stats.bernoulli(.6).rvs(300) # 60% profitable days
import pymc as pm
model = pm.Model()
with model: # model specifications in PyMC3 are wrapped in a with-statement
# Define random variables
theta_a = pm.Beta('theta_a', alpha=5, beta=5) # prior
theta_b = pm.Beta('theta_b', alpha=5, beta=5) # prior
# Define how data relates to unknown causes
data_a = pm.Bernoulli('observed A',
p=theta_a,
observed=algo_a)
data_b = pm.Bernoulli('observed B',
p=theta_b,
observed=algo_b)
# Inference!
start = pm.find_MAP() # Find good starting point
step = pm.Slice() # Instantiate MCMC sampling algorithm
trace = pm.sample(10000, step, start=start, progressbar=False) # draw posterior samples using slice sampling
他所做的是推断哪个样本在A/B测试中表现更好。这是一个类似的问题,我有一个,唯一的区别是,我不是比较基线和实验,但在一个网站上的项目。你知道吗
如果我们只有两个样本,基线和实验,这是非常有效的。但是,如果我们同时进行100个实验,我们能做些什么呢?有没有办法把一系列的观察结果传递给似然分布(在本例中是伯努利分布)?在这种情况下,它将是一个300x100数组,其中300是每个样本的二进制观测值,100是样本数。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐