1

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

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

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

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

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

4

1 回答 1

0

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

如果 event 或 evidence 设置为 TRUE,则针对该参数执行无条件概率查询。

例如,对于 asia 数据集:

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 
于 2019-06-26T13:52:26.437 回答