大師兄的貝葉斯網(wǎng)絡(luò)學(xué)習(xí)筆記(三十七):貝葉斯網(wǎng)絡(luò)(十一)
大師兄的貝葉斯網(wǎng)絡(luò)學(xué)習(xí)筆記(三十九):貝葉斯網(wǎng)絡(luò)(十三)
七、缺值數(shù)據(jù)最大似然估計(jì)
3. EM算法
- EM的E-步驟要計(jì)算的是
,就是要計(jì)算充分統(tǒng)計(jì)量
。
- 由于
。
- 所以,
可用下式來計(jì)算
。
- EM的M-步驟要計(jì)算
,只需要把從式得到的
代入即可。
- EM算法的偽代碼如下:
- 輸入:G - 貝葉斯網(wǎng)絡(luò)N的結(jié)構(gòu);
- 輸入:D - 一組關(guān)于N中變量的數(shù)據(jù);
- 輸入:δ - 收斂閾值。
- 輸出:N的參數(shù)的估計(jì):
- 1:
隨機(jī)參數(shù)值;
- 2:
;
- 3: while(true)
- 4: E-步驟:計(jì)算
;
- 5: M-步驟:計(jì)算
;
- 6:
;
- 7: if(newScore > oldScore + δ)
- 8:
;
- 9:
;
- 10: else
- 11: return
![]()
- 12: end if
- 13:end while.
- 關(guān)于參數(shù)向量
該如何表示,一種做法是把它表示為一個(gè)一維數(shù)組,但使用起來不方便。因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=%5Ctheta%5Et" alt="\theta^t" mathimg="1">是貝葉斯網(wǎng)絡(luò)中的所有參數(shù)組成的向量,所以比較好的辦法是用貝葉斯網(wǎng)絡(luò)的數(shù)據(jù)結(jié)構(gòu)來表示它。
- 假設(shè)已知
,如何來表示
?
- 直接的方法是對(duì)每一個(gè)I,先按照調(diào)用變量消元算法m次來計(jì)算
,然后再計(jì)算相應(yīng)的
。
- 這樣,在計(jì)算時(shí)會(huì)進(jìn)行mn次推理,在各次推理之間沒有實(shí)現(xiàn)計(jì)算共享。
- 可以用團(tuán)書傳播實(shí)現(xiàn)計(jì)算共享,從而加快
的計(jì)算的方法。
- 設(shè)T是一顆覆蓋N的團(tuán)樹,由以下4步組成:
- (1) 將
置零;
- (2)用
將團(tuán)書T初始化;
- (3)對(duì)每一個(gè)樣本
:
- 在團(tuán)數(shù)T中按
設(shè)置證據(jù),并調(diào)用算法CTP的第3~5步進(jìn)行信息傳遞;
- 對(duì)每一個(gè)變量
:
- 在團(tuán)書T中找到
的一個(gè)家族覆蓋團(tuán)
,并調(diào)用算法CTP得到函數(shù)
,進(jìn)而得到
;
- 在
中加上公式所得的結(jié)果;
- (4)將
代入公式,獲得
。
- 關(guān)于EM算法中如何計(jì)算
:
- 由于i.i.d假設(shè),可以對(duì)每一個(gè)樣本
分別調(diào)用VE算法來計(jì)算
,他們的和就是對(duì)數(shù)似然度
。
- 將上述計(jì)算
的方法稍加修改,就可以在計(jì)算
的同時(shí)獲得對(duì)數(shù)似然度
,從而實(shí)現(xiàn)計(jì)算共享。
- 其基本思想是在信息傳遞完成之后,任選一個(gè)團(tuán)C,將傳遞到C的信息以及儲(chǔ)存在C處的函數(shù)相城,得到一個(gè)函數(shù)
。
就是
![]()