0

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

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

4

1 回答 1

0

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

一旦你有了一个结构,你就可以用bn.fit()函数学习参数。设置method = "bayes"使用贝叶斯估计,可选参数iss确定先验。的定义iss:“贝叶斯方法用于估计与离散节点相关的条件概率表 (CPT) 的假想样本量”。

例如,考虑某个网络中的二进制根节点 X。以 的概率bn.fit()返回,其中是您的样本数、具有 的样本数以及的基数;在这种情况下,因为是二进制的。拉普拉斯校正将要求 始终等于 1。然而,对所有 CPT使用相同的值,并且仅当所有变量具有相同的基数时才为 1。因此,对于二元变量,您确实可以通过设置进行拉普拉斯校正。然而,在一般情况下,这是不可能的。(Nx + iss / cptsize) / (N + iss)X = xNNxX = xcptsizeXcptsize = 2Xiss / cptsizebnlearnississ / cptsizeiss = 2

有关更多详细信息,请参阅bnlearn::bn.fit 方法“mle”和“bayes”的差异和计算

于 2018-12-13T15:24:20.267 回答