使用pymc模型生成新数据的预测

2024-09-28 23:29:04 发布

您现在位置:Python中文网/ 问答频道 /正文

从典型的机器学习的角度来看,在建模过程中通常会考虑两个阶段:培训和评分。我想用pymc实现类似的功能,但我发现这非常困难。在

考虑一些简单的事情,比如线性回归。我有一个输入数据矩阵X和一个目标向量y。也许我通过一个确定性函数给X添加一些新的变量,这样X_det就是一个确定性变量。正如通常所做的那样,我们定义了一个确定性y_hat,它结合了系数b和数据{},以及随机观测变量{}:

@pymc.deterministic
def y_hat(b=b, X=X_det):
    return np.dot(X, b)

Y_obs = pymc.Normal(name='Y', mu=y_hat, tau=tau, value=y, observed=True)

我还可以添加一个模拟变量来方便地捕捉预测的后验点:

^{pr2}$

我可以很容易地为此创建模型,运行MCMC来获得系数b和预测Y_sim的后验点。在

但是,有没有一种简单的方法来生成一个新的预测后验概率(即在推断中没有使用)预测数据,比如X_test?据我所知,您可能可以通过使用numpy.ma.MaskedArray来实现这一点,在这里您连接X和{}(称之为X_concat),并将{}与一些伪值连接,以匹配X_concat的长度,并屏蔽这些伪值。但是,这感觉很笨拙,需要一个固定的X_test。如果我想给X_test2打分,我必须重新运行MCMC采样。因为您已经有了跟踪数据,所以这感觉太过分了。在

我想我要搜索的是一种与pymc.Model相关联的函数,它获取随机变量的值并返回确定性变量的值。也许是一些

model = pymc.Model([X_det, Y_obs, Y_sim, b, y_hat, tau, ...])
mcmc = pymc.MCMC(model)

# Score new data:
y_predicted = model.magic_function(X_test, mcmc.trace)

这类似于predict回归函数。原则上看来,这应该是可能的,也不太难,但对我来说,我找不到一个好的方法来实现这一点。但我想这种情况经常出现。有人有什么想法或建议吗?在


Tags: 数据方法函数testmodelhatsimpymc