[英]Laplace smoothig for Bayesian Netoworks in bnlearn
我正在嘗試使用R使用貝葉斯網絡,目前正在使用bnlearn
框架。 我正在嘗試從數據中使用基於分數的結構學習,並嘗試不同的算法和方法。
我想知道是否在bnlearn
實現了Laplace平滑。 我在文檔中找不到有關它的任何信息。 我錯過了什么嗎? 有人知道嗎?
不它不是。 但是,這應該沒問題,因為bnlearn
中提供了不同的先驗,並且除非您有某些非常特殊的理由使用拉普拉斯平滑(這是一個特定的先驗),否則這些都應該做到。
一旦有了結構,就可以使用bn.fit()
函數學習參數。 設置method = "bayes"
使用貝葉斯估計,可選參數iss
確定先驗。 iss
的定義:“貝葉斯方法用來估計與離散節點關聯的條件概率表(CPT)的虛擬樣本大小”。
例如,考慮某個網絡中的二進制根節點X。 bn.fit()
返回(Nx + iss / cptsize) / (N + iss)
作為X = x
的概率,其中N
是您的樣本數, Nx
是X = x
的樣本數,並且cptsize
的基數X
; 在這種情況下cptsize = 2
因為X
是二進制。 拉普拉斯校正將要求iss / cptsize
始終等於1。但是, bnlearn
對所有CPT使用相同的iss
值,並且,如果所有變量具有相同的基數,則iss / cptsize
將僅為1。 因此,對於二進制變量,通過設置iss = 2
確實可以進行拉普拉斯校正。 但是,在一般情況下,這是不可能的。
有關其他更多信息,請參見bnlearn :: bn.fit的區別和方法“ mle”和“ bayes”的計算 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.