Ich versuche, PyMC zu verwenden, um die Verteilung von Anzeigenklickraten (CTRs) zu bestimmen. Nehmen wir an, wir haben 1000 Anzeigen und ich habe Messungen für Klicks und Aufrufe für alle Anzeigen. Ich gehe davon aus, dass die zugrunde liegende Verteilung der Anzeigen-CTRs eine Beta-Verteilung ist, und ich möchte PyMC verwenden, um die Parameter dieser Verteilung zu schätzen. Ich werde diese Parameter in den folgenden Snippets unknown_alpha
und unknown_beta
aufrufen.pymc unerwartete Modellausgabe
meinen Beispiel-Code zu zeigen, hier ist, wie man ein Beispiel Test-Set erzeugen konnte:
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
Und hier ist der Code, wie ich versuchte PyMC zu verwenden:
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)
Ausgang: array([ 0.])
ich weiß, dass das Modell nicht abgeschlossen ist, noch, zu folgern, über unknown_alpha
und unknown_beta
, aber ich don Ich weiß nicht warum ich array([ 0.])
bekomme. Ich erwartete eine Spur mit 5k Elementen zu bekommen.
Kann mir jemand erklären, wo ich falsch gelaufen bin?
Prost!
oh -, - danke für die Hilfe! –