ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

贝叶斯网络的D-separation详解和Python代码实现

2022-03-03 10:03:20  阅读:224  来源: 互联网

标签:变量 Python 可以 Separation 贝叶斯 算法 separation active 节点


D分离(D-Separation)又被称作有向分离,是一种用来判断变量是否条件独立的图形化方法。相比于非图形化方法,D-Separation更加直观且计算简单。对于一个DAG(有向无环图),D-Separation方法可以快速的判断出两个节点之间是否是条件独立的。

了解 D 分离

在贝叶斯网络中,D 分离到底是什么,它可以用于什么?简单地说,它是一种常规的确定独立性的方法。如果两个变量X 和 Y 在有向图中相对于另外一组变量 Z 是 d 分离的,那么在这种图可以表示的所有概率分布中都是独立于 Z 的。这是什么意思?这意味着两个变量X和Y在Z上是独立的,如果一旦你知道了Z,那么关于X的知识是不会给你关于Y的任何额外信息的。

要完全理解它是如何完成的,首先需要介绍 active 和 inactive trails 。如果一条路径存在依赖关系,就可以说它是 active。例如,两个变量 X 和 Y 可能通过图中的多个路径连接。如果没有任何路径处于active状态,则 X 和 Y 是 d 分隔的。让我们看一下四种不同的情况,并确定那些是处于active 状态:

Case1:在这种情况下,我们相信X可以通过Z来影响Y。但是如果观察到Z,X不会通过Z影响Y,因为Z已知。

Case2:这种情况与上面是对称的:如果观察到Z,X不能通过Z影响Y,但是如果没有观察到Z,X可以通过Z影响Y。

Case3:当且仅当Z没有被观察到时,X可以通过Z影响Y

Case4:如果Z没有被观察到,X就不能影响Y。这也被称为v形结构。

所有这些分析可以用以下方式总结:

可达性分析(RA)算法

我们现在可以考虑另一种算法,所谓的可达算法(Reachable Algorithm),它用于从给定Z的active路径寻找X可达的节点。算法由:

为了一步一步地理解算法。从算法的输入开始:

输入很好理解,然后该算法将返回从 X 可到达的所有节点。这部分是通过两个阶段来实现的:

  • 阶段 1:这是算法的简单部分——找到 Z 中包含的所有节点的祖先。
  • 阶段 2:从 X 开始,找到可达节点——哪些节点可以直接从 X 到达,然后哪些节点可以从这些节点到达。然后循环这个过程。

为了将这个步骤可视化,假设有一个一下的贝叶斯网络:

可以从解决这个问题开始:

完整文章:

https://www.overfit.cn/post/7247991e27a74d7da6ae97c87a89eb6f

标签:变量,Python,可以,Separation,贝叶斯,算法,separation,active,节点
来源: https://www.cnblogs.com/deephub/p/15958396.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有