标签: bayesian-networks

决策树与朴素贝叶斯分类器

我正在研究不同的数据挖掘技术,并遇到了一些我无法弄清楚的事情.如果任何人有任何想法会很棒.

在哪种情况下,使用决策树和其他情况更好的是朴素贝叶斯分类器?

为什么在某些情况下使用其中一个?而另一个在不同的情况下?(通过查看其功能,而不是算法)

有人对此有一些解释或参考吗?

data-mining bayesian-networks decision-tree

47
推荐指数
1
解决办法
6万
查看次数

用于特定应用的贝叶斯网络的pythonic实现

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

通常在这种情况下我会在python中搜索现有的贝叶斯网络包,但我正在使用的推理算法是我自己的,我也认为这将是一个很好的机会,可以在python中学习更多有关优秀设计的知识.

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

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

例如,在经典的"亚洲"网络(http://www.bayesserver.com/Resources/Images/AsiaNetwork.png)中,以"XRay Result"和"Dyspnea"状态着称,我需要编写一个函数计算其他变量具有某些值的可能性(根据某些模型).

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

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

在过去,我一直在努力解决如何编程这样的事情.我不会撒谎; 有相当数量的复制和粘贴代码,有时我需要将单个方法中的更改传播到多个文件.这次我真的想花时间以正确的方式做到这一点.

一些选择:

  1. 我已经以正确的方式做到了这一点.首先编码,稍后再提问.复制和粘贴代码更快,每个模型都有一个类.世界是一个黑暗无序的地方......
  2. 每个模型都是它自己的类,但也是一般BayesianNetwork模型的子类.这个通用模型将使用一些将被覆盖的函数.Stroustrup会感到自豪.
  3. 在同一个类中创建几个函数来计算不同的可能性.
  4. 对一般的BayesianNetwork库进行编码,并将此推理问题作为此库读入的特定图形来实现.应给予节点和边缘属性,如"布尔"和"OrFunction",给定父节点的已知状态,可用于计算不同结果的概率.这些属性字符串,如"OrFunction"甚至可用于查找和调用正确的函数.也许在几年后我会制作类似于1988版Mathematica的东西!

非常感谢你的帮助.

Update: Object oriented ideas help a lot here (each node has a designated set of predecessor nodes of a certain node subtype, and each node has a likelihood function that computes its likelihood of different outcome states given the states of the predecessor nodes, etc.). OOP FTW!

python bayesian bayesian-networks

34
推荐指数
1
解决办法
8278
查看次数

创建贝叶斯网络并使用Python3.x学习参数

我正在Windows上为python3.x搜索最合适的工具来创建贝叶斯网络,从数据中学习其参数并执行推理.

网络结构我想自己定义如下: 在此输入图像描述

它是取自文件.

除"大小"和"GraspPose"之外,所有变量都是离散的(并且只能采用2种可能的状态),它们是连续的,应该被建模为高斯混合物.

作者使用期望最大化算法来学习条件概率表的参数,并使用Junction-Tree算法来计算精确推理.

据我所知,所有这些都是在MatLab中与墨菲的贝叶斯网络工具箱一起实现的.

我试图在python中搜索类似的东西,这是我的结果:

  1. Python的贝叶斯网络工具箱http://sourceforge.net/projects/pbnt.berlios/(http://pbnt.berlios.de/).网站不起作用,项目似乎不受支持.
  2. BayesPy https://github.com/bayespy/bayespy 我认为这是我真正需要的,但我找不到类似于我的案例的一些例子,以了解如何构建网络结构.
  3. PyMC似乎是一个功能强大的模块,但我在Windows 64,python 3.3上导入它时遇到了问题.我安装开发版时遇到错误

    警告(theano.configdefaults):未检测到g ++!Theano将无法执行优化的C实现(针对CPU和GPU),并且将默认为Python实现.性能将严重下降.要删除此警告,请将Theano标记cxx设置为空字符串.

更新:

  1. libpgm(http://pythonhosted.org/libpgm/).正是我需要的,遗憾的是python 3.x不支持
  2. 非常有趣的积极开发图书馆:PGMPY.遗憾的是,不支持连续变量和从数据中学习.https://github.com/pgmpy/pgmpy/

任何建议和具体的例子将受到高度赞赏.

machine-learning probability bayesian-networks python-3.x scikit-learn

22
推荐指数
2
解决办法
2万
查看次数

用于Python的贝叶斯垃圾邮件过滤库

我正在寻找一个进行贝叶斯垃圾邮件过滤的Python库.我查看了SpamBayes和OpenBayes,但两者似乎都没有维护(我可能错了).

任何人都可以建议一个很好的Python(或Clojure,Common Lisp,甚至Ruby)库实现贝叶斯垃圾邮件过滤?

提前致谢.

澄清:我实际上在寻找贝叶斯垃圾邮件分类器,而不一定是垃圾邮件过滤器.我只想用一些数据训练它,然后告诉我一些给定的数据是否是垃圾邮件.对不起任何困惑.

python spam-prevention bayesian bayesian-networks

19
推荐指数
3
解决办法
9062
查看次数

贝叶斯网络与贝叶斯分类器

贝叶斯网络和朴素贝叶斯分类器有什么区别?我注意到一个是在matlab中实现的,因为classify另一个有一个完整的网络工具箱.

如果你能在答案中解释哪一个更有可能提供更好的准确性,我将不胜感激(不是先决条件).

matlab machine-learning bayesian bayesian-networks naivebayes

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

贝叶斯网络图书馆

你好伙计号码

正如标题所示,我正在寻找一个用于学习和推理贝叶斯网络的库.我已经找到了一些,但我希望得到一个推荐.

要求快速概述:

  • 最好用Java或Python编写
  • 配置(也是网络本身)是a)可能的和b)可能通过代码(而不仅仅是通过GUI).
  • 源代码可用
  • 项目仍然保持
  • 越强大越好

你推荐哪一个?

machine-learning bayesian-networks

16
推荐指数
3
解决办法
6780
查看次数

在python中学习和使用增强的贝叶斯分类器

我正在尝试使用森林(或树)增强贝叶斯分类器(原始介绍,学习)python(最好是python 3,但python 2也可以接受),首先学习它(结构和参数学习)然后使用它用于离散分类并获得具有缺失数据的那些特征的概率.(这就是为什么只有离散分类甚至好的天真分类器对我来说都不是很有用.)

我的数据进入的方式,我喜欢使用不完整数据的增量学习,但我甚至没有在文献中发现任何这两种情况,所以任何进行结构和参数学习和推理的东西都是好的回答.

似乎有一些非常独立且没有维护的python包大致朝着这个方向发展,但是我没有看到任何适度的近期(例如,我希望pandas用于这些计算是合理的,但OpenBayes几乎没有使用numpy)我看到的任何东西似乎完全没有增强分类器.

那么,我应该在哪里寻找一些实现森林增强贝叶斯分类器的工作?在python类中是否有一个很好的Pearl传递消息传递算法的实现,或者不适合增强的贝叶斯分类器?是否有一个可读的面向对象的实现,用于学习和推理其他语言的TAN贝叶斯分类器,可以转换为python?


我知道现有的包,但发现不合适

  • milk,它确实支持分类,但不支持贝叶斯分类器(我绝对需要分类和未指定功能的概率)
  • pebl,这只是结构学习
  • scikit-learn,它只学习朴素的贝叶斯分类器
  • OpenBayes自从有人将其移植numarraynumpy文档后,它几乎没有变化,文档可以忽略不计.
  • libpgm,声称支持一组甚至不同的东西.根据主要文档,它进行推理,结构和参数学习.除了似乎没有任何方法可以进行精确推理.
  • Reverend声称是一个"贝叶斯分类器",文档可以忽略不计,根据罗宾逊和类似的方法,而不是贝叶斯分类器,根据源代码,我得出的结论是它主要是一个垃圾邮件分类器.
  • eBay的bayesian信念网络允许建立通用的贝叶斯网络并实现对它们的推断(精确和近似),这意味着它可用于构建TAN,但其中没有学习算法,以及BN的构建方式意味着实现参数学习比假设的不同实现更困难.

python classification bayesian-networks

15
推荐指数
1
解决办法
4242
查看次数

贝叶斯网络教程

对于初学者来说,这是开始研究贝叶斯网络的最佳书籍?

machine-learning bayesian-networks

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

因果模型和有向图形模型之间有什么区别?

因果模型和有向图形模型之间有什么区别?因果关系和定向概率关系之间有什么区别?更具体地说,你会把什么放在一个DirectedProbabilisticModel类的接口中,以及一个CausalModel类中的什么?一个人会继承另一个吗?

machine-learning bayesian-networks causality probability-theory

11
推荐指数
2
解决办法
1922
查看次数

贝叶斯网络和神经网络之间有什么关系?

我正在寻找用CUDA实现的计算量很大的任务,并想知道神经网络或贝叶斯网络是否适用.但这不是我的问题,而是两种网络类型之间的关系.它们似乎非常相关,特别是如果你看一下具有学习能力的贝叶斯网络(维基百科上的文章提到).一眼就看出,贝叶斯网络看起来有点像特定类型的神经网络.任何人都可以总结他们的关系,如果有任何超出明显相似性的联系?

bayesian-networks neural-network

10
推荐指数
1
解决办法
1万
查看次数