我正在尝试使用 R 与贝叶斯网络合作,目前我正在使用bnlearn
框架。我正在尝试从数据中使用基于分数的结构学习,并尝试不同的算法和方法。
我想知道是否实施了拉普拉斯平滑bnlearn
。我在文档中找不到任何有关它的信息。我错过了什么吗?有人知道吗?
我正在尝试使用 R 与贝叶斯网络合作,目前我正在使用bnlearn
框架。我正在尝试从数据中使用基于分数的结构学习,并尝试不同的算法和方法。
我想知道是否实施了拉普拉斯平滑bnlearn
。我在文档中找不到任何有关它的信息。我错过了什么吗?有人知道吗?
不它不是。但是,这应该没有问题,因为有不同的先验可用bnlearn
,除非您有非常具体的理由使用拉普拉斯平滑,这是一个特定的先验,否则这些应该可以。
一旦你有了一个结构,你就可以用bn.fit()
函数学习参数。设置method = "bayes"
使用贝叶斯估计,可选参数iss
确定先验。的定义iss
:“贝叶斯方法用于估计与离散节点相关的条件概率表 (CPT) 的假想样本量”。
例如,考虑某个网络中的二进制根节点 X。以 的概率bn.fit()
返回,其中是您的样本数、具有 的样本数以及的基数;在这种情况下,因为是二进制的。拉普拉斯校正将要求 始终等于 1。然而,对所有 CPT使用相同的值,并且仅当所有变量具有相同的基数时才为 1。因此,对于二元变量,您确实可以通过设置进行拉普拉斯校正。然而,在一般情况下,这是不可能的。(Nx + iss / cptsize) / (N + iss)
X = x
N
Nx
X = x
cptsize
X
cptsize = 2
X
iss / cptsize
bnlearn
iss
iss / cptsize
iss = 2
有关更多详细信息,请参阅bnlearn::bn.fit 方法“mle”和“bayes”的差异和计算。