大师兄的贝叶斯网络学习笔记(三十七):贝叶斯网络(十一)
大师兄的贝叶斯网络学习笔记(三十九):贝叶斯网络(十三)
七、缺值数据最大似然估计
3. EM算法
- EM的E-步骤要计算的是
,就是要计算充分统计量
。
- 由于
。
- 所以,
可用下式来计算
。
- EM的M-步骤要计算
,只需要把从式得到的
代入即可。
- EM算法的伪代码如下:
- 输入:G - 贝叶斯网络N的结构;
- 输入:D - 一组关于N中变量的数据;
- 输入:δ - 收敛阈值。
- 输出:N的参数的估计:
- 1:
随机参数值;
- 2:
;
- 3: while(true)
- 4: E-步骤:计算
;
- 5: M-步骤:计算
;
- 6:
;
- 7: if(newScore > oldScore + δ)
- 8:
;
- 9:
;
- 10: else
- 11: return
![]()
- 12: end if
- 13:end while.
- 关于参数向量
该如何表示,一种做法是把它表示为一个一维数组,但使用起来不方便。因为
是贝叶斯网络中的所有参数组成的向量,所以比较好的办法是用贝叶斯网络的数据结构来表示它。
- 假设已知
,如何来表示
?
- 直接的方法是对每一个I,先按照调用变量消元算法m次来计算
,然后再计算相应的
。
- 这样,在计算时会进行mn次推理,在各次推理之间没有实现计算共享。
- 可以用团书传播实现计算共享,从而加快
的计算的方法。
- 设T是一颗覆盖N的团树,由以下4步组成:
- (1) 将
置零;
- (2)用
将团书T初始化;
- (3)对每一个样本
:
- 在团数T中按
设置证据,并调用算法CTP的第3~5步进行信息传递;
- 对每一个变量
:
- 在团书T中找到
的一个家族覆盖团
,并调用算法CTP得到函数
,进而得到
;
- 在
中加上公式所得的结果;
- (4)将
代入公式,获得
。
- 关于EM算法中如何计算
:
- 由于i.i.d假设,可以对每一个样本
分别调用VE算法来计算
,他们的和就是对数似然度
。
- 将上述计算
的方法稍加修改,就可以在计算
的同时获得对数似然度
,从而实现计算共享。
- 其基本思想是在信息传递完成之后,任选一个团C,将传递到C的信息以及储存在C处的函数相城,得到一个函数
。
就是
![]()