贝叶斯网络中的变量必须是布尔值吗?

Posted

技术标签:

【中文标题】贝叶斯网络中的变量必须是布尔值吗?【英文标题】:Do variables in Bayesian Networks have to be Boolean? 【发布时间】:2018-05-09 15:30:45 【问题描述】:

我不敢相信我找不到任何有关这方面的信息,但我在教科书或网上找到的每个示例都使用 T/F 变量,但是如何表示在贝叶斯网络中具有两个以上可能值的变量?

例如,我遇到了以下问题:

我们有一袋三枚有偏硬币的 a、b 和 c,正面朝上的概率分别为 20%、60%, 和 80%,分别。从袋子中随机抽取一枚硬币(抽取的可能性相同) 三个硬币中的每一个),然后将硬币翻转 3 次以产生结果 X1、X2 和 X3。

绘制与此设置对应的贝叶斯网络并定义必要的 CPT(条件 概率表)。

任何人都可以帮助我指明开始使用这个的方向吗?

【问题讨论】:

【参考方案1】:

贝叶斯网络支持具有两个以上可能值的变量。 Koller 和 Friedman 的“概率图形模型”中有较大变量域的示例。

通常 BN 具有离散随机变量(具有有限数量的不同值)。但也可以用可数无限或连续变量来定义它们。不过,在后一种情况下,推理算法发生了很大变化。

现在我尝试在网上找到一些例子,我不得不承认你是对的。他们很难找到。这是取自上述书籍的示例。变量Grade 可以取三个不同的值。

【讨论】:

这是一个很好的例子。【参考方案2】:

很好的问题。就具体的作业问题而言,有人已经为您指出了正确的方向,所以我不会重复;我会尝试添加一些可能有用的直觉。

您需要的直觉是贝叶斯网络只不过是一种表示一组条件独立假设的视觉(图形)方式。 因此,例如,如果 X 和 Z 是给定 Y 的条件自变量,那么您可以绘制贝叶斯网络 X → Y → Z。相反,唯一贝叶斯网络 X → Y → Z 告诉你存在三个变量(X、Y、Z)并且在给定 Y 的情况下 X 和 Z 是条件独立的。

一旦你理解了这一点,你就会意识到任何你可以写一个条件独立假设的东西,你都可以画一个贝叶斯网,反之亦然。 即,它们根本不需要是布尔值。

【讨论】:

我认为“贝叶斯网络”一词的定义并不总是正确的。有时包括 CPT,有时仅涉及独立关系。这是我在制作教材时遇到的问题之一。【参考方案3】:

通常贝叶斯网络是用每个节点的离散值建模的,当这些值已知(或值由建模器设置)时,人们会说概率分布分解这些值。

我认为具有连续值的贝叶斯网络的理论框架也存在,但它们在数学上比离散更难(可能只适合博士?)

此外,我无法解决您的问题,但也许 在 R 中试试这个:

library(dplyr)                # loads mutate(), %>% (pipe operator)

Model <- c("Coin a", "Coin b", "Coin c")
Prior <- c(0.2, 0.6, 0.8)
Likelihood <- c(1/3, 1/3, 1/3)

bayes_df <- data.frame(Model=Model, Prior=Prior, Likelihood=Likelihood) 

# posterior probabilities
bayes_df %>%
        mutate(Product = Likelihood * Prior, Posterior = Product/sum(Product)) 

结果

   Model Prior Likelihood Product Posterior
1 Coin a   0.2     0.3333 0.06667     0.125
2 Coin b   0.6     0.3333 0.20000     0.375
3 Coin c   0.8     0.3333 0.26667     0.500

我认为“网络”只是用箭头硬币连接的 2 个气泡 -> 选择,CPT 是上面的数字,但我不确定。

【讨论】:

以上是关于贝叶斯网络中的变量必须是布尔值吗?的主要内容,如果未能解决你的问题,请参考以下文章

04 贝叶斯算法 - 贝叶斯网络

贝叶斯网络,看完这篇我终于理解了(附代码)!

贝叶斯网络

第七章 贝叶斯网络

从朴素贝叶斯分类器到贝叶斯网络(下)

R语言-贝叶斯网络语言实现及与朴素贝叶斯区别(笔记)