bnlearn::bn."mle"和"bayes"方法的拟合差异及计算
bnlearn::bn.fit difference and calculation of methods "mle" and "bayes"
我在bnlearn
.
包的bn.fit
函数中尝试理解bayes
和mle
两种方法的区别
我知道频率论者和贝叶斯方法之间关于理解概率的争论。在理论层面上,我认为最大似然估计 mle
是一种简单的频率论方法,将相对频率设置为概率。但是要进行哪些计算才能得到 bayes
估计值?我已经查看了 bnlearn documenation, the description of the bn.fit function and some application examples,但没有任何地方对正在发生的事情进行真实描述。
我还试图通过首先查看 bnlearn::bn.fit
、bnlearn:::bn.fit.backend
、bnlearn:::smartSapply
来理解 R 中的函数,但后来我卡住了。
当我将这个包用于学术工作时,我将不胜感激,因此我应该能够解释发生了什么。
bnlearn::bn.fit
中的贝叶斯参数估计适用于离散变量。关键是可选的 iss
参数:"the imaginary sample size used by the bayes method to estimate the conditional probability tables (CPTs) associated with discrete nodes".
因此,对于某些网络中的二进制根节点X
,bnlearn::bn.fit
returns(Nx + iss / cptsize) / (N + iss)
中的bayes
选项作为[=的概率16=],其中N
是你的样本数,Nx
是X = x
的样本数,cptsize
是X
的CPT大小;在这种情况下 cptsize = 2
。相关代码在 bnlearn:::bn.fit.backend.discrete
函数中,特别是行:tab = tab + extra.args$iss/prod(dim(tab))
因此,iss / cptsize
是 CPT 中每个条目的假想观察数,与 N
相反,'real' 观察数。使用 iss = 0
您将获得最大似然估计,因为您没有先前的假想观察。
相对于 N
,iss
越高,先验对后验参数估计的影响就越大。固定的iss
和增长的N
,贝叶斯估计量和最大似然估计量收敛到同一个值。
一个常见的经验法则是使用一个小的非零值 iss
,这样您就可以避免 CPT 中的零条目,对应于数据中未观察到的组合。这样的零条目可能会导致网络泛化能力很差,例如 Pathfinder system.
的一些早期版本
关于贝叶斯参数估计的更多细节你可以看看Koller and Friedman的书。我想许多其他贝叶斯网络书籍也涵盖了这个主题。
我在bnlearn
.
bn.fit
函数中尝试理解bayes
和mle
两种方法的区别
我知道频率论者和贝叶斯方法之间关于理解概率的争论。在理论层面上,我认为最大似然估计 mle
是一种简单的频率论方法,将相对频率设置为概率。但是要进行哪些计算才能得到 bayes
估计值?我已经查看了 bnlearn documenation, the description of the bn.fit function and some application examples,但没有任何地方对正在发生的事情进行真实描述。
我还试图通过首先查看 bnlearn::bn.fit
、bnlearn:::bn.fit.backend
、bnlearn:::smartSapply
来理解 R 中的函数,但后来我卡住了。
当我将这个包用于学术工作时,我将不胜感激,因此我应该能够解释发生了什么。
bnlearn::bn.fit
中的贝叶斯参数估计适用于离散变量。关键是可选的 iss
参数:"the imaginary sample size used by the bayes method to estimate the conditional probability tables (CPTs) associated with discrete nodes".
因此,对于某些网络中的二进制根节点X
,bnlearn::bn.fit
returns(Nx + iss / cptsize) / (N + iss)
中的bayes
选项作为[=的概率16=],其中N
是你的样本数,Nx
是X = x
的样本数,cptsize
是X
的CPT大小;在这种情况下 cptsize = 2
。相关代码在 bnlearn:::bn.fit.backend.discrete
函数中,特别是行:tab = tab + extra.args$iss/prod(dim(tab))
因此,iss / cptsize
是 CPT 中每个条目的假想观察数,与 N
相反,'real' 观察数。使用 iss = 0
您将获得最大似然估计,因为您没有先前的假想观察。
相对于 N
,iss
越高,先验对后验参数估计的影响就越大。固定的iss
和增长的N
,贝叶斯估计量和最大似然估计量收敛到同一个值。
一个常见的经验法则是使用一个小的非零值 iss
,这样您就可以避免 CPT 中的零条目,对应于数据中未观察到的组合。这样的零条目可能会导致网络泛化能力很差,例如 Pathfinder system.
关于贝叶斯参数估计的更多细节你可以看看Koller and Friedman的书。我想许多其他贝叶斯网络书籍也涵盖了这个主题。