问题标签 [bayesian-networks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
706 浏览

artificial-intelligence - 设计贝叶斯网络

我有一个关于贝叶斯网络的基本问题。

  1. 假设我们有一个引擎,它有 1/3 的概率可以停止工作。我将把这个变量称为 ENGINE。
  2. 如果它停止工作,那么你的车就不能工作。如果发动机工作,那么您的汽车将在 99% 的时间内工作。我会称这为一辆车。
  3. 现在,如果您的汽车是旧的(OLD),而不是 1/3 的时间不工作,您的引擎将在 1/2 的时间停止工作。

我被要求首先设计网络,然后分配与表相关的所有条件概率。

我会说这个网络的图表类似于

现在,对于条件概率表,我执行了以下操作:

现在,我在如何定义 OLD 的概率方面遇到了麻烦。在我看来,old 不是与 ENGINE 有 CAUSE 关系的东西,我会说它更像是它的一个特征。也许在图中有不同的方式来表达这一点?如果图表确实正确,我将如何制作表格?

0 投票
3 回答
2528 浏览

matrix - 贝叶斯网络的混淆矩阵

我正在尝试了解贝叶斯网络。我有一个有10个属性的数据文件,我想获取这个数据表的混淆表,我想我需要计算所有字段的tp,fp,fn,tn。是真的吗?如果是这样,那么我需要为贝叶斯网络做些什么。

真的需要一些指导,我迷路了。

0 投票
1 回答
6450 浏览

bayesian - 决策树和贝叶斯网络有什么区别?

如果我理解正确,两者都使用贝叶斯定理生成无环图并根据每个节点上应用的函数计算百分比。

有什么区别?

0 投票
3 回答
276 浏览

statistics - 人工智能/确定颜色名称的统计方法

我正在考虑编写一个小库来从预定的候选列表中猜测(RGB 值)颜色的名称。

我的第一次尝试纯粹基于 3 维 RGB 颜色空间内的毕达哥拉斯距离——这并没有取得巨大成功,因为大多数命名的颜色点都位于空间的边缘(例如蓝色在 0、0、255),所以,对于空间中间的大多数颜色,它最接近的命名颜色也是相当随意的。

所以,我正在考虑更好的方法,并提出了一些候选人

  • HSV 颜色空间内的圆柱距离 - 这可能与上述问题类似,但是,HSV 在人类意义上似乎比 RGB 更有意义,这可能是有用的。

  • 上述任何一种,但每个命名的颜色点都使用任意值加权,该值表示其对周围空间中点的吸引力强度。这种模型有名字吗?我意识到这有点模糊,但对我来说这似乎是一个相当直观的想法。

  • 一个贝叶斯网络,它检查 HSV 颜色的属性并返回最可能的颜色名称(我想象的节点类似于,例如 P(Black | Saturation < 10), P(Red | Hue = 0),但是,这似乎不太理想 - 例如,给定颜色为红色的概率与其色调与 0 的接近程度成正比,而不是离散值。有没有一种方法可以调整贝叶斯网络来处理在正在测试的变量?

  • 最后,我想知道在 HSV 或 RGB 颜色空间中是否有某种基于支持向量机的分类,但对这些分类并不十分熟悉,我不确定这是否会比基于勾股距离的方法提供任何特别的优势我最初尝试过,特别是因为我只处理三维空间。

因此,我想知道,你们中是否有人遇到过类似的问题,或者知道任何可以帮助我决定方法的资源?如果有人能指出我正确的方向(无论是上述之一,还是完全不同的东西),我将非常感激。

干杯!

蒂姆

0 投票
1 回答
2921 浏览

neural-network - 人工神经网络和贝叶斯网络的区别

我是一名从事实习项目的学生,我们正在使用贝叶斯网络从给定的一组离散父变量中预测可能的结果。我们现在打算使用人工神经网络来完成这项任务。所以任何人都可以帮助我找出贝叶斯网络和人工神经网络之间的异同吗?有关如何进行迁移的任何建议都会有所帮助。

谢谢

0 投票
3 回答
634 浏览

c++ - iphone的贝叶斯网络库?

我正在寻找适用于 iphone 的贝叶斯网络库。任何提示?

0 投票
4 回答
8703 浏览

python - 针对特定应用程序的贝叶斯网络的 Pythonic 实现

这就是我问这个问题的原因: 去年我编写了一些 C++ 代码来计算特定类型模型(由贝叶斯网络描述)的后验概率。该模型运行良好,其他一些人开始使用我的软件。现在我想改进我的模型。由于我已经为新模型编写了稍微不同的推理算法,因此我决定使用 python,因为运行时并不是至关重要的,python 可以让我编写更优雅和更易于管理的代码。

通常在这种情况下,我会在 python 中搜索现有的贝叶斯网络包,但我使用的推理算法是我自己的,我还认为这将是一个了解更多关于 python 良好设计的好机会。

我已经为网络图 (networkx) 找到了一个很棒的 python 模块,它允许您将字典附加到每个节点和每个边。本质上,这可以让我给出节点和边的属性。

对于特定网络及其观察数据,我需要编写一个函数来计算模型中未分配变量的可能性。

例如,在经典的“亚洲”网络(http://www.bayesserver.com/Resources/Images/AsiaNetwork.png)中,已知“X 射线结果”和“呼吸困难”的状态,我需要编写一个函数计算其他变量具有某些值的可能性(根据某些模型)。

这是我的编程问题: 我将尝试一些模型,将来我可能会想尝试另一种模型。例如,一种模型可能看起来与亚洲网络完全一样。在另一个模型中,可能会从“访问亚洲”到“患有肺癌”添加有向边。另一个模型可能使用原始的有向图,但给定“肺结核或癌症”和“患有支气管炎”节点的“呼吸困难”节点的概率模型可能不同。所有这些模型都将以不同的方式计算可能性。

所有模型将有大量重叠;例如,如果所有输入均为“0”,则进入“或”节点的多条边将始终为“0”,否则为“1”。但是有些模型的节点会在某个范围内采用整数值,而其他模型将是布尔值。

在过去,我一直在为如何编写这样的东西而苦苦挣扎。我不会说谎;有相当多的复制和粘贴代码,有时我需要将单个方法中的更改传播到多个文件。这次我真的很想花时间以正确的方式做到这一点。

一些选项:

  1. 我已经以正确的方式这样做了。先写代码,再问问题。复制和粘贴代码并为每个模型设置一个类会更快。世界是一个黑暗而杂乱无章的地方……
  2. 每个模型都是它自己的类,也是一般贝叶斯网络模型的子类。这个通用模型将使用一些将被覆盖的函数。Stroustrup 会感到自豪。
  3. 在同一个类中创建几个计算不同可能性的函数。
  4. 编写一个通用的 BayesianNetwork 库并将我的推理问题实现为该库读取的特定图表。节点和边应该被赋予像“Boolean”和“OrFunction”这样的属性,给定父节点的已知状态,可以用来计算不同结果的概率。这些属性字符串,例如“OrFunction”,甚至可以用来查找和调用正确的函数。也许几年后我会做出类似于 1988 年版 Mathematica 的东西!

非常感谢你的帮助。

更新: 面向对象的思想在这里有很大帮助(每个节点都有一组指定的特定节点子类型的前驱节点,并且每个节点都有一个似然函数,可以根据前驱节点的状态计算其不同结果状态的可能性等。 )。哎呀!

0 投票
1 回答
1568 浏览

algorithm - 用于对无向图进行三角剖分的通用算法?

我正在尝试在贝叶斯网络上实现一个用于信念传播的连接树算法。我在对图表进行三角剖分时有点挣扎,以便可以形成连接树。

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

这是一个学习练习(爱好,而不是家庭作业),所以我不太关心空间/时间复杂度,只要算法在给定任何无向图的情况下产生三角图。最终,在尝试进行任何近似之前,我试图了解精确的推理算法是如何工作的。

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

谢谢!

0 投票
4 回答
1956 浏览

java - 贝叶斯信念网络框架“Infer.NET”是否有 java 替代品?

是 Java 替代贝叶斯信念网络框架 - Infer.NET 吗?如果它是可扩展的(大型数据集的在线学习)、良好的支持(自 2010 年以来最后一次更新)、开源且易于编写的网络结构,则更可取。因此,所有功能都来自 Infer.NET。

0 投票
1 回答
186 浏览

combinatorics - 计算边缘化贝叶斯网络的步骤数

我正在尝试制作一种算法,该算法将找到消除小型贝叶斯网络(由 DAG 表示)中节点的最有效排序。所有节点都是布尔值,可以采取两种可能的状态,除了没有后继节点的节点(这些节点必须有一个观察值;否则将它们边缘化与删除它们相同)。

我最初的计划是,我将递归地选择一个没有剩余前任的剩余变量,并针对其每个可能的状态,通过图形传播该值。这将导致所有可能的拓扑排序。

给定一个拓扑排序,我想找出边缘化的成本。

例如,这张图:

U --> V --> W --> X --> Y --> Z

只有一个这样的排序 (U,V,W,X,Y,Z)。

我们可以分解关节密度 g(U,V,W,X,Y,Z) = f1(U) f2(V,U) f3(W,V) f4(X,W) f5(Y,X) f6 (Z,Y)

所以这个排序对应的边缘化将是

∑(∑(∑(∑(∑(∑(∑(g(W,X,Y,Z),Z),Y),X),W),V),U) =
∑(∑(∑(∑(∑ (∑(f1(U) f2(V,U) f3(W,V) f4(X,W) f5(Y,X) f6(Z,Y),Z),Y),X),W), V),U) =
∑(f1(U)
 ∑(f2(V,U)
  ∑(f3(W,V)
   ∑(f4(X,W)
    ∑(f5(Y,X)
     ∑(f6(Z, Y),Z)
    ,Y)
   ,X)
  ,W)
 ,V)
,U)

对于该图,U --> V可以分 4 步转换为 V 的符号函数(所有 U x所有 V。鉴于此,V --> W同样可以分 4 步转换为符号函数。所以总体而言,需要 18 步(4+4 +4+4+2 因为 Z 只有一种状态)。

Here is my question: how can I determine the fastest number of steps that this sum can be computed for this ordering?

Thanks a lot for your help!