首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bnlearn中贝叶斯网络的拉普拉斯平滑

bnlearn中贝叶斯网络的拉普拉斯平滑
EN

Stack Overflow用户
提问于 2018-03-14 23:57:33
回答 1查看 153关注 0票数 0

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

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

EN

回答 1

Stack Overflow用户

发布于 2018-12-13 23:24:20

不,它不是。然而,这应该没有问题,因为在bnlearn中有不同的先验,除非你有一些非常具体的原因使用拉普拉斯平滑,这是一个特殊的先验,这些应该可以。

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

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

有关更多详细信息,请参阅bnlearn::bn.fit difference and calculation of methods "mle" and "bayes"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49282381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档