私はPyMCを使用して広告クリック率(CTR)の分布を調べようとしています。 1000個の広告があり、すべての広告のクリック数と再生回数を測定しているとします。私は、広告CTRの基礎となるディストリビューションがベータ版であると想定しています.PyMCを使用してこのディストリビューションのパラメータを見積もりたいと思います。これらのパラメータは、次のスニペットunknown_alpha
とunknown_beta
で呼び出します。ここに私のコード例を示すためにpymc unexpected model output
は、1つの例のテストセットを生成することができる方法である:
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)
出力:
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を使用しようとしたかのコードです: array([ 0.])
私はモデルが終了していないことを知って、まだ約unknown_alpha
とunknown_beta
を推測するが、私ドン私がちょうどarray([ 0.])
を得る理由を知りません。私は5k要素でトレースを得ることを期待していました。
誰かが私がどこに間違っていたか説明できますか?
乾杯!
オハイオ州、 –