吉布斯抽样如何从条件概率中抽样?贝叶斯模型

机器算法验证 吉布斯 贝叶斯网络
2022-03-19 08:35:59

我想学习贝叶斯模型的吉布斯采样。如何从条件分布中采样变量?
贝叶斯模型
在这个例子中,箭头表示依赖;例如,Grade取决于DifficultyIntelligence要使用 Gibbs 抽样来计算联合分布,首先我将Difficultyand设置Intelligence为 (1,1)。
下一步是Grade中采样,但我该如何采样?P(Grade|Difficulty=1,Intelligence=1)

2个回答

由于我们正在计算联合分布,我们假设我们的初始样本是x=P(D=0,I=0,G=0,L=0,S=0)

为了计算下一个样本,我们需要从条件分布中对每个变量进行抽样。

  1. P(DG,I,S,L)从贝叶斯网络中的条件独立性简化为仅对进行采样。我们采样并得到值P(D)D=1
  2. 同样对于,我们采样并获得值II=1
  3. 由于贝叶斯网络编码的条件独立性,的采样由于我们已经采样了,我们使用这些值并采样在成绩的 CPD 中,我们可以从最后一行中选择一个值(其中)。我们采样得到值(值 0.3)P(GD,I,S,L)P(GD,I)D=1,I=1P(GD=1,I=1)D=1,I=1G=2
  4. P(LI,G,D,S)简化为P(LG). 我们从第二行采样 Letter CPD,其中G=2,我们采样得到L=1(值 0.6)。
  5. 同样,样本P(SI,L,G,D,)通过简化为P(SI). 我们得到S=1(从 CPD 的第二行采样,其中I=1.

我们会有一个新的样本x:P(D=1,I=1,G=2,L=1,S=1).

如果条件分布不能直接从标准随机生成器生成,您可以在 Gibbs 采样器中应用 Metroplolis-Hastings 模式。

  1. 抽取一个样本,Dt, 从P(D|Gt1,It1,St1,Lt1)使用具有初始值的 Metropolis 采样器Dt1
  2. 抽取一个样本,Gt, 从P(G|Dt,It1,St1,Lt1)使用具有初始值的 Metropolis 采样器Gt1
  3. 抽取一个样本,It, 从P(I|Dt,Gt,St1,Lt1)使用具有初始值的 Metropolis 采样器It1

...

参考: R第 7 章介绍蒙特卡洛方法