首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pymc意外模型输出

pymc意外模型输出
EN

Stack Overflow用户
提问于 2017-01-07 22:20:01
回答 1查看 76关注 0票数 2

我试图使用PyMC来确定广告点击率(CTR)的分布。假设我们有1000个广告,我有所有广告的点击量和浏览量。我假设广告CTR的基本分布是Beta分布,我想使用PyMC来估计这个分布的参数。我将在下面的代码段unknown_alphaunknown_beta中调用这些参数。

为了展示我的示例代码,下面是如何生成一个示例测试集:

代码语言:javascript
复制
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的代码:

代码语言:javascript
复制
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_alphaunknown_beta的模型还没有完成,但是我不知道为什么我只得到array([ 0.])。我希望能找到5k元素的痕迹。

有人能解释我哪里出了问题吗?

干杯!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-07 21:17:03

我猜是mc.sample(iter=5000,burn=5000)线。你以5000为样本,然后扔掉第一个5000。为了保存5000,您需要mc.sample(iter=10000,burn=5000)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41527225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档