【问题标题】:Probability of a record to belong to the same data-set given a Bayesian Network built with BNlearn给定使用 BNlearn 构建的贝叶斯网络,记录属于同一数据集的概率
【发布时间】:2019-05-02 22:46:18
【问题描述】:

我正在尝试确定新记录属于现有数据集的概率。我正在使用 BNlearn R 包来构建一个使用大型训练集的贝叶斯网络。

然后我想评估新记录的异常程度。为此,我想获得一个我有充分证据但不需要预测任何变量的记录的概率。

pcquery 方法似乎需要至少一个变量来预测。 文档指出 predict 方法将忽略具有完整证据的条目。

我花了一天时间搜索 BNlearn 文档,但没有成功。所以我认为 BNlearn 要么不可能,要么我缺少正确的词汇来在文档中找到我需要的内容。

欢迎有更多 BNlearn 经验的人提供任何见解。

【问题讨论】:

  • 迈克尔;鉴于您的其他问题,您已经找到了 pEvidence 函数 - 请考虑在此处将其写为答案,因为其他人可能会发现它很有用。
  • 我会,但是 pEvidence 函数不起作用,因为我期望它适用于未知的证据值。我首先需要了解为什么它的行为如此。目前,一旦存在未知的证据值,概率就会急剧上升。

标签: bayesian-networks bnlearn


【解决方案1】:

cpquery 估计给定evidenceevent 的条件概率。但是,bnlearn 文档指出:

如果任一事件或证据设置为 TRUE,则针对该参数执行无条件概率查询。

以亚洲数据集为例:

library(bnlearn)

data(asia)

bn.dag <- model2network("[A][S][T|A][L|S][B|S][D|B:E][E|T:L][X|E]")
bn.fitted  <- bn.fit(bn.dag, asia)

for (i in c(1:1000)) {
  prob[i] <- cpquery(bn.fitted, 
                     event = (A == "no") & (S == "no") & (T == "no") & (L == "no") & 
                             (B == "no") & (E == "no") & (X == "no") & (D == "no"), 
                     evidence = TRUE)
}

summary(prob)

# Result:
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 0.2714  0.2864  0.2908  0.2909  0.2954  0.3132 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-25
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    • 2022-06-11
    相关资源
    最近更新 更多