繁体   English   中英

用于bnlearn中的贝叶斯Netoworks的Laplace Smoothig

[英]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是您的样本数, NxX = 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM