關於在數據缺失情況下使用EM算法估計貝葉斯網絡結構


當我們要建立貝葉斯網絡時,需要首先通過因果關系得到貝葉斯的網絡結構,再訓練得到貝葉斯網的參數集。這里,參數集往往是通過給定數據集進行統計計算得到,但是,有的時候,給定的數據集不一定是完整的,可能某一條或多條的數據缺失一個或兩個數據。

這是需要我們在數據缺失的情況下計算參數集,當然最簡單的方法是去掉具有缺失數據的行,這樣顯然在數據集較小的時候會造成參數集的嚴重不准確。

在貝葉斯引論那本書中提到要用EM算法來解決這個問題。其實EM算法就是最大化期望值算法,這個過程中我們計算在某隨機參數情況下的最大似然值,然后根據此似然值對參數值進行了修正,再次計算極大似然值,不斷迭代,知道計算得到的值在可接受的閥值范圍內。

下面來說一下,他是咋實現的。

首先,輸入數據是貝葉斯網絡結構、缺失的數據集、收斂閥值

1、設初始迭代次數為0,網絡參數為任意值。收斂閥值a

2、根據貝葉斯估計公式計算網絡參數的似然值。

其中:

這里面最值注意的是,在計算的時候一定要進行進行一下歸一化才能得到真正的結果哦。

進入循環體:

a、用oldscore記錄似然值。

b、計算(E步驟)

c、計算的最大值,即“最大似然”撒(M步驟)

d、此時,得到了newScore,比較newScore和oldscore,如果在收斂閥值內,則迭代結束,newscore就是最終結果。否則,使用oldscore記錄newscore,迭代次數加一,繼續迭代。

 

在書中他還介紹了,使用團樹傳播方法來簡化計算過程。后面再記錄。流程。

 

這個算法可以將參數和缺失數據同時計算出來,雖然對方也不清楚他們要什么,但是跑不出這兩個。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM