loc*_*com 3 r bayesian bayesian-networks mle bnlearn
我试图了解这两种方法之间的差异bayes以及包mle的bn.fit功能bnlearn。
我知道频率论者和贝叶斯方法之间关于理解概率的争论。在理论上,我认为最大似然估计mle是一种简单的频率论方法,将相对频率设置为概率。但是进行了哪些计算才能得到bayes估计值?我已经查看了bnlearn 文档、bn.fit 函数的描述和一些应用示例,但没有任何地方对正在发生的事情进行真正的描述。
我还尝试通过首先检出bnlearn::bn.fit、导致bnlearn:::bn.fit.backend、导致来理解 R 中的函数,bnlearn:::smartSapply但后来我被卡住了。
当我将软件包用于学术工作时,我会非常感谢您的帮助,因此我应该能够解释会发生什么。
贝叶斯参数估计bnlearn::bn.fit适用于离散变量。关键是可选iss参数:“贝叶斯方法用于估计与离散节点关联的条件概率表 (CPT) 的假想样本大小”。
因此,对于X某个网络中的二元根节点, 中的bayes选项作为 的概率bnlearn::bn.fit返回,其中是您的样本数,具有 的样本数,以及的 CPT 大小;在这种情况下。相关代码在函数中,特别是这行:(Nx + iss / cptsize) / (N + iss)X = xNNxX = xcptsizeXcptsize = 2bnlearn:::bn.fit.backend.discretetab = tab + extra.args$iss/prod(dim(tab))
因此,iss / cptsize是 CPT 中每个条目的假想观察值的数量,而不是N“真实”观察值的数量。随着iss = 0你会得到最大似然估计,因为你将没有之前想象的意见。
越高iss,N先验对后验参数估计的影响就越强。随着 固定iss和增长N,贝叶斯估计量和最大似然估计量收敛到相同的值。
一个常见的经验法则是使用一个小的非零值,iss这样您就可以避免 CPT 中的零条目,这与数据中未观察到的组合相对应。这样的零条目可能会导致泛化性较差的网络,例如某些早期版本的Pathfinder 系统。
有关贝叶斯参数估计的更多详细信息,您可以查看Koller 和 Friedman的书。我想许多其他贝叶斯网络书籍也涵盖了这个主题。