[英]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.