我尝试理解包bnlearn的bn.fit函数中的两个方法bayes和mle之间的区别。
我知道频率论者和贝叶斯方法之间关于理解概率的争论。在理论层面上,我认为最大似然估计mle是一种简单的频率论方法,将相对频率设置为概率。但是,如何计算才能得到bayes估计值呢?我已经检查了bnlearn documenation,description of the bn.fit function和一些application examples,但没有真正描述发生了什么。
我也试着通过首先检查bnlearn::bn.fit来理解R中的函数,首先是bnlearn:::bn.fit.backend,然后是bnlearn:::smartSapply,但后来我被卡住了。
当我使用这个包进行学术工作时,我将非常感激一些帮助,因此我应该能够解释发生了什么。
发布于 2018-08-25 21:12:52
bnlearn::bn.fit中的贝叶斯参数估计适用于离散变量。关键是可选的iss参数:“贝叶斯方法用来估计与离散节点相关的条件概率表(CPT)的虚构样本大小”。
因此,对于某些网络中的二进制根节点X,bnlearn::bn.fit中的bayes选项返回(Nx + iss / cptsize) / (N + iss)作为X = x的概率,其中N是样本的数量,Nx是样本的数量,cptsize是<代码>d11的CPT的大小;在本例中是<代码>d12。相关代码在bnlearn:::bn.fit.backend.discrete函数中,特别是行:tab = tab + extra.args$iss/prod(dim(tab))
因此,与N相反,iss / cptsize是CPT中每个条目的虚构观察值的数量,而N是“真实”观察值的数量。使用iss = 0,您将获得一个最大似然估计,因为您将没有事先想象的观察值。
相对于N的iss越高,先验对后验参数估计的影响就越强。对于固定的iss和不断增长的N,贝叶斯估计器和最大似然估计器收敛到相同的值。
一个常见的经验法则是使用一个小的非零iss,这样您就可以避免在CPT中出现零条目,这与数据中没有观察到的组合相对应。这样的零条目可能会导致网络泛化能力很差,例如Pathfinder system的一些早期版本。
关于贝叶斯参数估计的更多细节,你可以看看Koller and Friedman写的书。我想许多其他贝叶斯网络书籍也涵盖了这个主题。
https://stackoverflow.com/questions/51945372
复制相似问题