贝叶斯网络框架

本文介绍了eBay的贝叶斯网络框架,重点解析了联合树算法,包括道德化、三角化和消息传递过程。通过实例展示了如何在Python中创建和使用贝叶斯网络,提供了框架的安装和测试文件的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

文章主要的目的是介绍eBay所使用的一个贝叶斯网络的框架,博主通过阅读相关论文和源代码以及代码测试,慢慢熟悉了该框架的使用方法及主要思想。

本文将尽量的阐述清楚贝叶斯网络的解决过程,如果你还不知道贝叶斯网络是解决哪一类问题的,请查看:贝叶斯网络笔记

如果你能通过阅读论文熟悉贝叶斯网络,请尽量阅读论文,因为论文里一般都有详细的解释和公式化的证明过程。而本文的重点并不在于公式证明。(贝叶斯网络论文可以自行Google)

在阐述联合树算法的过程中,尽量去理解每段话的含义,如果实在理解不了的话,后面会给出一个案例,可以去结合案例来理解联合树算法的过程。

简介:

Bayesian-belief-networks 允许你用纯Python创建贝叶斯信念网络和其他图模型,目前支持四种不同的推理方法。

支持的图模型:
- 离散变量的贝叶斯信念网络
- 有着高斯分布的连续变量的高斯贝叶斯网络

推理引擎:
- 消息传递和联合树算法(Junction Tree Algorithm)
- 和积算法(The Sum Product Algorithm)
- MCMC采样的近似推理
- 高斯贝叶斯网络中得Exact Propagation

项目开源地址:
https://github.com/eBay/bayesian-belief-networks

框架解读

核心算法

联合树算法(Junction Tree Algorithm):
其主要步骤包括:构建联合树 + 在联合树上进行消息传递

如何构建联合树

  1. 对于给定的贝叶斯网络进行道德化,也就是将有向图转换为无向图,
    将每个有共同子节点的父节点连接起来,把所有的有向边改为无向边。

  2. 将道德图三角化。原道德图记为G,复制得到的图记为g
    每次选择图g的点观测顺序,选择规则为:val = (节点V的所有邻居节点 两两不是相邻节点的对数),优先选择val值小的。
    按照上述规则选好点V后,将节点V的所有邻居节点,两两不是相邻节点连边,图G中也连上边.
    cluster = [v] + v.neighbours
    cliques中添加cluster,如果cluster不是cliques任何一个元素的子集。
    g图中消去点V 以及所有与该点V相连的边。
    重复上述步骤,直到g图中不存在节点。
    如此图G便是三角化后的图。(添加了最少的边)
    同时得到了三角化图中各个团,即cliques(用于后面联合树的构建)。

  3. 构建联合树。首先得到了三角化后的所有团节点Cliques,算法目的在于:将N个节点用N-1条边连接成一棵树,并且使得树最优,类似于克鲁斯卡尔算法(也就是一种最小生成树算法)。
    团节点之间两两组合取交集得到分离点Septor = intersection(Ci,Cj)
    选择最佳的分离点的标准为:

    1. 最大的mass = len(Septor),即分离点里变量的数量。
    2. cost越小,cost = weight(Ci) + weight(Cj)

如何在联合树上进行消息传递
(这里看着可能会比较懵,所以可以先看看后面的实例,再回头查看消息传递的过程)

下面就是在这颗树上进行若干次消息传递,从而完成数值的更新过程:
对于每个evidence variable,把它放到包括这个变量的表里,然后把所有不满足这个evidenceentry全设为0。

接着做一个自底向上的迭代,对

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值