1
我試圖使用PyMC來確定廣告點擊率(點擊率)的分佈。假設我們有1000個廣告,而且我有針對所有廣告的點擊次數和觀看次數的衡量標準。我假設廣告點擊率的底層分佈是一個Beta分佈,我想用PyMC來估計這個分佈的參數。我將在以下片段中調用這些參數unknown_alpha
和unknown_beta
。pymc意外模型輸出
爲了表示我的示例代碼,這裏是一個如何生成一個例子測試設置:
from scipy.stats import beta
from scipy.stats import geom
from scipy.stats import binom
def generate_example_data(data_size=1000, unknown_alpha=30, unknown_beta=100):
ctrs = beta.rvs(a=unknown_alpha, b=unknown_beta, size=data_size)
data_views = geom.rvs(0.001, size=data_size)
data_clicks = []
for ctr, views in zip(ctrs, data_views):
data_clicks.append(binom.rvs(p=ctr, n=views))
return data_views, data_clicks
這裏是代碼,我如何試圖用PyMC:
import pymc
def model(data_views, data_clicks):
ctr_prior = pymc.Beta('ctr_prior', alpha=1.0, beta=1.0)
views = pymc.Geometric('views', 0.01, observed=True, value=data_views)
clicks = pymc.Binomial('clicks', n=views, p=ctr_prior, observed=True, value=data_clicks)
model = pymc.Model([ctr_prior, views, clicks])
mc = pymc.MCMC(model)
mc.sample(iter=5000, burn=5000)
return mc.trace('ctr_prior')[:]
views, clicks = generate_example_data()
model(views, clicks)
輸出: array([ 0.])
我知道該模型還沒有完成,但是,推斷約unknown_alpha
和unknown_beta
,但我不不知道爲什麼我只是得到array([ 0.])
。我預計會得到5k元素的痕跡。
有人可以解釋我哪裏出錯了嗎?
乾杯!
哦, - - 感謝您的幫助! –