r - Laplace smoothig for Bayesian Netoworks in bnlearn



我正在尝试使用R使用贝叶斯网络,目前我正在使用bnlearn框架。 我正在尝试从数据中使用基于分数的结构学习,并尝试不同的算法和方法。

我想知道是否有bnlearn实现的拉普拉斯平滑。我在文档中找不到有关它的任何信息。我错过了什么吗?有人知道吗?

不,不是。但是,这应该没有问题,因为bnlearn中提供了不同的先验,除非您有一些非常具体的原因使用拉普拉斯平滑(这是一个特定的先验),否则这些应该可以。

有了结构后,您可以使用bn.fit()函数学习参数。设置method = "bayes"使用贝叶斯估计和可选参数iss确定先验。iss的定义:"贝叶斯方法用来估计与离散节点相关的条件概率表(CPT)的虚样本量"。

例如,在某个网络中构建二进制根节点 X。bn.fit()返回(Nx + iss / cptsize) / (N + iss)作为X = x的概率,其中N是样本数,Nx样本数为X = xcptsizeX的基数;在这种情况下cptsize = 2因为X是二进制的。拉普拉斯校正要求iss / cptsize始终等于 1。然而,bnlearn对所有 CPT 使用相同的iss值,如果所有变量具有相同的基数,则iss / cptsize值仅为 1。因此,对于二进制变量,您确实可以通过设置iss = 2来进行拉普拉斯校正。但是,在一般情况下,这是不可能的。

有关其他详细信息,请参阅 bnlearn::bn.fit 差分和方法 "mle" 和 "Bayes" 的计算。

相关内容

  • 没有找到相关文章

最新更新