如何使用 pymc 参数化概率图形模型?
假设我有一个带有两个节点的 PGMX
and Y
。
可以说X->Y
是图表。
And X
有两个值{0,1}
, and
Y
也有两个值{0,1}
.
我想使用 pymc 来学习分布的参数并填充
用于运行推理的图形模型。
我能想到的方法如下:
X_p = pm.Uniform("X_p", 0, 1)
X = pm.Bernoulli("X", X_p, values=X_Vals, observed=True)
Y0_p = pm.Uniform("Y0_p", 0, 1)
Y0 = pm.Bernoulli("Y0", Y0_p, values=Y0Vals, observed=True)
Y1_p = pm.Uniform("Y1_p", 0, 1)
Y1 = pm.Bernoulli("Y1", Y1_p, values=Y1Vals, observed=True)
Here Y0Vals
的值是Y
对应于X
值 = 0
和Y1Vals
的值是Y
对应于X
值 = 1。
计划是从中抽取 MCMC 样本,并使用以下方法:Y0_p
and Y1_p
填充离散贝叶斯网络的概率...所以概率表
为了P(X) = (X_p,1-X_p)
而P(Y/X)
:
Y 0 1
X
0 Y0_p 1-Y0_p
1 Y1_p 1-Y1_p
问题:
- 这是这样做的正确方法吗?
- 这不是很笨拙吗,特别是如果我有的话
X
有数百个离散值?
或者如果一个变量有两个父项X
and Y
每个有 10 个离散值?
- 我能做点更好的事吗?
- 有没有什么好书详细介绍我们如何进行这种互连?