标签: bayesian-networks

用于三角测量无向图的通用算法?

我正在玩实现用于贝叶斯网络上的置信度传播的连接树算法.我在对图形进行三角测量时遇到了一些困难,因此可以形成连接树.

我知道找到最优的三角剖分是NP完全的,但是你能指出一个通用算法,它可以为相对简单的贝叶斯网络产生"足够好"的三角剖分吗?

这是一个学习练习(爱好,不是家庭作业),所以我不太关心空间/时间的复杂性,只要算法导致给定任何无向图的三角图.最后,我试图在我尝试进行任何近似之前理解精确推理算法的工作原理.

我正在使用NetworkX修补Python,但使用典型的图遍历术语的这种算法的任何伪代码描述都是有价值的.

谢谢!

algorithm graph-theory bayesian-networks belief-propagation

5
推荐指数
1
解决办法
1412
查看次数

如何使用pymc参数化概率图模型?

如何使用pymc参数化概率图形模型?

假设我有两个节点的PGM XY.让我们说X->Y是图表.

并且X采用两个值{0,1},并且 Y还采用两个值{0,1}.

我想使用pymc来学习分布的参数,并用它来填充图形模型以进行推理.

我能想到的方式如下:

X_p = pm.Uniform("X_p", 0, 1)
X = pm.Bernoulli("X", X_p, values=X_Vals, observed=True)
Y0_p = pm.Uniform("Y0_p", 0, 1)
Y0 = pm.Bernoulli("Y0", Y0_p, values=Y0Vals, observed=True)
Y1_p = pm.Uniform("Y1_p", 0, 1)
Y1 = pm.Bernoulli("Y1", Y1_p, values=Y1Vals, observed=True)
Run Code Online (Sandbox Code Playgroud)

这里Y0ValsY对应于X值= 0 Y1Vals的值,并且是Y对应于X值= 1的值.

计划是从这些中抽取MCMC样本,并使用Y0_pY1_p 填充离散贝叶斯网络的概率...所以概率表适用P(X) = (X_p,1-X_p)P(Y/X):

  Y  0 …
Run Code Online (Sandbox Code Playgroud)

bayesian-networks pymc pymc3 probabilistic-programming

5
推荐指数
0
解决办法
414
查看次数

通过修复参数来限制功能

如何通过修复它的参数来创建比原始维度更小的维度的函数:

例如,我想用sum函数制作后继函数,如下所示:

def add(x,y):
    return x+y
Run Code Online (Sandbox Code Playgroud)

现在我正在寻找这样的东西:

g = f(〜,1),它将是后继函数,即g(x)= x + 1.

python function bayesian-networks argument-passing belief-propagation

4
推荐指数
1
解决办法
4067
查看次数

如何在R中使用bnlearn增加贝叶斯网络图中的文本大小

我正在尝试使用bnlearn在R中绘制一个Bsyesian网络。这是我的R代码

library(bnlearn)
library(Rgraphviz)

first_variable <- rnorm(100)
second_variable <- rnorm(100)
third_variable <- rnorm(100)
v <- data.frame(first_variable,second_variable,third_variable)

b <- hc(v)
hlight <- list(nodes = nodes(b), arcs = arcs(b),col = "grey", textCol = "red")
pp <- graphviz.plot(b, highlight = hlight)
Run Code Online (Sandbox Code Playgroud)

上面的代码可以工作,但是情节中文本的大小比我预期的要小得多。这里是:

在此处输入图片说明

我认为这是因为我的变量名很长。在我的真实数据中,变量名称甚至更长。这是我的真实数据集的BN图:

在此处输入图片说明

有什么办法可以增加图中文字的大小吗?

size text r bayesian-networks bnlearn

4
推荐指数
1
解决办法
990
查看次数

为什么马尔可夫毯子包含孩子的父母?

我很困惑为什么马尔可夫毯子包含孩子的父母.维基百科

它的孩子的父母也必须被包括在内,因为他们可以用来解释有问题的节点.

但是什么the node in question?我还从BayesiaLab找到了另一个信息.它说

配偶(或共同父母,深绿色)用于切割来自儿童的后裔(蓝色节点)的信息.目标节点略微独立于配偶,但有条件依赖,即当儿童可获得某些证据时.

为什么目标节点和配偶在有关儿童的证据时会变得有条件依赖?儿童可获得一些证据是什么意思?

我希望有人可以帮助澄清它,尤其是.用一个具体的例子.谢谢:)

machine-learning bayesian-networks

4
推荐指数
1
解决办法
1742
查看次数

使用 KL 散度时,变分自动编码器为每个输入 mnist 图像提供相同的输出图像

当不使用 KL 散度项时,VAE 几乎完美地重建了 mnist 图像,但在提供随机噪声时无法正确生成新图像。

当使用 KL 散度项时,VAE 在重建和生成图像时给出相同的奇怪输出。

在此处输入图片说明

这是损失函数的pytorch代码:

def loss_function(recon_x, x, mu, logvar):
    BCE = F.binary_cross_entropy(recon_x, x.view(-1, 784), size_average=True)
    KLD = -0.5 * torch.sum(1 + logvar - mu.pow(2) - logvar.exp())    
    return (BCE+KLD)
Run Code Online (Sandbox Code Playgroud)

recon_x 是重建图像,x 是 original_image,mu 是均值向量,而 logvar 是包含方差对数的向量。

这里出了什么问题?提前致谢 :)

bayesian-networks autoencoder deep-learning pytorch loss-function

4
推荐指数
1
解决办法
2578
查看次数

用Java编写的开源NaïveBayes分类器

我正在寻找一个用Java编写的开源NaïveBayes分类器库.非常感谢找到一个帮助.

NaïveBayes分类器与贝叶斯网络相同吗?

java open-source classification bayesian bayesian-networks

3
推荐指数
1
解决办法
8498
查看次数

bnlearn::bn.fit 方法“mle”和“bayes”的差异和计算

我试图了解这两种方法之间的差异bayes以及包mlebn.fit功能bnlearn

我知道频率论者和贝叶斯方法之间关于理解概率的争论。在理论上,我认为最大似然估计mle是一种简单的频率论方法,将相对频率设置为概率。但是进行了哪些计算才能得到bayes估计值?我已经查看了bnlearn 文档bn.fit 函数描述和一些应用示例,但没有任何地方对正在发生的事情进行真正的描述。

我还尝试通过首先检出bnlearn::bn.fit、导致bnlearn:::bn.fit.backend、导致来理解 R 中的函数,bnlearn:::smartSapply但后来我被卡住了。

当我将软件包用于学术工作时,我会非常感谢您的帮助,因此我应该能够解释会发生什么。

r bayesian bayesian-networks mle bnlearn

3
推荐指数
1
解决办法
601
查看次数

我应该使用直方图或其他更高级的数学工具(如贝叶斯网络)进行材料分类/识别吗?

我正在学习OpenCV的基础知识,我认为一个好的项目可以帮助我让学习变得更有趣.在思考了一些想法之后,我想出了一些物质识别项目.比方说,我给自己做了一台输送机,它正在运输用于生产某种产品的材料(这个产品并不重要,所以).有3种材料,照明条件会有所不同(早上到下午使用自然光,晚上使用灯泡).这将是问题描述.

我正在考虑使用容易获得的沙子,木头和岩石.并将它们放在塑料表面上.在拍完照片之后,我将应用一些直方图来获得颜色,并使用这种颜色我将识别材料.但是,由于闪电条件会随着时间的推移而变化,当我拍摄这张照片并应用直方图时,颜色会发生变化,材料将无法正确识别.而且我想,如果我使用沙子和灰尘,他们有非常相似的颜色,但不同的质地,有什么东西可以帮助我吗?

我只是想要一些想法,也许该领域的一些专家可以指导我.

python opencv bayesian-networks object-recognition material

2
推荐指数
1
解决办法
521
查看次数

bnlearn + Rgraphviz:自定义绘图时,双箭头而不是无向边

我正在尝试自定义bnlearn使用图表学习的图表RGraphviz.当我有无向边时,RGraphviz当我尝试自定义图形的外观时,将它们转向两个方向的有向边.

一个可重复的例子可能是:

set.seed(1)
x1 = rnorm(50, 0, 1)
x2 = rnorm(50, 0, 1)
x3 = x2 + rnorm(50, 0, 1)
x4 = -2*x1 + x3 + rnorm(50, 0, 1)
graph = data.frame(x1, x2, x3, x4)

library(bnlearn)
library(Rgraphviz)

res = gs(graph)
options(repr.plot.width=3, repr.plot.height=3)
g1 <- graphviz.plot(res)
Run Code Online (Sandbox Code Playgroud)

图未定制:

在此输入图像描述

到现在为止还挺好.但是,如果我尝试自定义它:

plot(g1, attrs = list(node = list(fontsize=4, fillcolor = "lightgreen")))
Run Code Online (Sandbox Code Playgroud)

自定义图表

在此输入图像描述

无向边缘被转换.

即使我只使用情节(g1),我也会遇到这个问题.问题是这(保存g1然后使用绘图)似乎改变了图形的外观.

r bayesian-networks bnlearn r-graphviz

2
推荐指数
1
解决办法
625
查看次数