1
A
回答
1
我想這是因爲它可以消除一個變量是其有且只有一個變量,它是依賴於它。在貝葉斯網絡中,這些將很容易找到,因爲它們是單個孩子的節點。
2
貝葉斯網絡可以利用變量消除的順序的,因爲內置於條件獨立性假設。
具體地,想象具有聯合分佈P(A,B,C,d)和想知道的邊際P(a)。如果你對條件獨立性一無所知,你可以通過對b,c和d進行求和來計算。如果這些具有k-ary域,則需要執行O(k^3)操作。
另一方面,假設你有一個貝氏網,其中A是根,B是A的孩子,C是B的孩子,D是C的孩子。然後,你可以重寫關節作爲P(a | b)P(b | c)P(c | d)P(d)並且儘可能地將你的三個總和分配到等式的右邊。當你真的想計算P(a)時,你可以預先計算sum_d P(d)的值並存儲這個函數。同樣,您可以預先計算P(c | d)* sum_d P(d)的值並存儲它。
通過這種方式,您最終可以完成O(k^w * + 1)的工作,其中W *是貝葉斯網絡中任何節點的最大子數。在這種情況下,我們做O(k^2)的工作,這也是我們必須保留在內存中的最大條件概率表的大小。請注意,這比我們原來的O(k^3)結果要好,如果我們有更多的變量,情況會更好。
簡而言之,BN的條件獨立性允許您更有效地排除變量。對此的另一個解釋可以在http://www.cs.uiuc.edu/class/sp08/cs440/notes/varElimLec.pdf找到。
相關問題
- 1. 貝葉斯網絡
- 2. 貝葉斯網絡分類
- 3. 設計貝葉斯網絡
- 4. Clojure DAG(貝葉斯網絡)
- 5. 貝葉斯網絡在Matlab
- 6. 實現貝葉斯網絡
- 7. 貝葉斯網絡教程
- 8. 學習貝葉斯網絡
- 9. 貝葉斯網絡澄清
- 10. 貝葉斯網絡多層
- 11. 貝葉斯網絡中的OR關係
- 12. MATLAB中的貝葉斯網絡
- 13. MATLAB中的貝葉斯網絡錯誤
- 14. 貝葉斯網絡中的推理
- 15. 推斷高斯貝葉斯網絡
- 16. 與Java的貝葉斯網絡的API
- 17. 用於iphone的貝葉斯網絡庫?
- 18. 貝葉斯網絡的混淆矩陣
- 19. 貝葉斯網絡的預測
- 20. 貝葉斯網絡和模糊邏輯
- 21. AIMA實現貝葉斯網絡
- 22. 參考貝葉斯和神經網絡
- 23. 貝葉斯神經網絡:計算Hessian
- 24. 貝葉斯網絡MATLAB工具箱
- 25. 貝葉斯網絡實現與例子
- 26. Kim和貝葉斯珍珠的消息傳遞算法網絡
- 27. 使用bnlearn包從貝葉斯網絡中刪除節點
- 28. 人工神經網絡與貝葉斯網絡的區別
- 29. 使用貝葉斯網絡工具箱進行動態貝葉斯網絡推理用於Matlab
- 30. 動態貝葉斯網絡 - 多變量 - 重複性事件 - bnstruct R包
這看起來像是你最終解釋了完全不同的東西。 – ziggystar 2010-03-15 11:09:23
這可能是我誤解了,但這是一個很重要的原因,因爲能夠利用條件獨立性假設,國民黨對變量消除更有效。 變量消除是一個術語,通常指的是將變量邊際化的想法。如果你只是想從網絡中刪除一個節點,那麼第一個答案就足夠了。根據我的經驗,當VE大寫並且我們談論Bayes Nets時,它指的是第一種情況。 – user262063 2010-03-15 19:56:51