如何从数据集中学习贝叶斯网络结构?

机器算法验证 贝叶斯 贝叶斯网络 计分规则
2022-03-13 01:50:55

我需要从数据集中学习贝叶斯网络结构。我读了那不勒斯和理查德写的名为“学习贝叶斯网络”的书,但我不清楚。

根据数据中的书,我可以:

1) 创建所有 DAG 模式,其中 DAG 模式是 DAG 的等价类(就马尔可夫等价而言)。

2)我可以创建与任何等价类相关的所有多项式增强贝叶斯newtowrk;

3)我使用一个评分函数来找到最好的多项式增强贝叶斯newtowrk;

现在我还不明白如何使用这个评分功能。在文献中,不止一个?您能帮我准确理解如何使用主要评分功能吗?

我还读到,与变量 N 的数量相比,这项研究是超指数的,对吗?相反,还有其他更有效的方法吗?

2个回答

score 函数衡量已经学习到的 DAG 结构是否适合数据集。当然,您可以根据数据集和学习 DAG 结构的最终目标,以多种方式定义得分函数。一种常用的评分函数是log-posterior

给定数据集D和一个向量X变量,对数后验得分函数S(D,G)定义为

S(D,G):=logppr(G)+logp(D|G)
在哪里ppr是 DAG 的先验。设参数集为θΘ.p(D|G)是边际可能性
p(D|G)=Θp(D|G,θ)ppr(θ)dθ

R 包根据bnlearn数据的性质(无论是分类的、连续的还是混合的)定义了几个评分函数。

分类数据(多项分布):

  • 多项对数似然;
  • 赤池信息准则(AIC);
  • 贝叶斯信息准则(BIC);
  • 分数等效 Dirichlet 后验密度 (BDe);
  • 稀疏的狄利克雷后验密度(BDs);
  • 基于 Jeffrey 先验 (BDJ) 的 Dirichlet 后验密度;
  • 用于混合干预和观察数据的修正贝叶斯狄利克雷;
  • K2分数;

连续数据(多元正态分布):

  • 多元高斯对数似然;
  • 相应的赤池信息准则(AIC);
  • 相应的贝叶斯信息准则(BIC);
  • 分数等效高斯后验密度(BGe);

混合数据(条件高斯分布):

  • 条件高斯对数似然;
  • 相应的赤池信息准则(AIC);
  • 相应的贝叶斯信息准则(BIC)。

为了n变量,可能的 DAG 的数量是超指数的。这是整数序列的链接。正如你所看到的,这个数字增长得非常快。https://oeis.org/A003024

您可以在 R 中使用许多包。

我熟悉的一个例子是 bnlearn。此包中的大量算法使用本地搜索。这意味着在大多数情况下,程序是:

  1. 生成随机 DAG 结构

  2. 使用某种方法对结构进行评分(在 bnlearn 中默认为 AIC 或 BIC)

  3. 对随机选择的结构的所有邻居进行评分(意味着与原始结构相同的结构,但改变了一个拱门)。

  4. 选择得分较高的邻居作为下一个要探索的 DAG 结构。

  5. 当你达到最佳分数时停止。

该算法可以收敛到局部最大值。