贝叶斯网络和朴素贝叶斯分类器有什么区别?

31
贝叶斯网络和朴素贝叶斯分类器有什么区别?我注意到其中一个只是在Matlab中实现为“classify”,而另一个具有整个网络工具箱。
如果可能的话,请在您的答案中解释哪个更可能提供更好的准确性,我将不胜感激(非必需)。
3个回答

39

简短回答:如果你只关心解决一个预测任务,那么请使用朴素贝叶斯。

贝叶斯网络(在维基百科上有很好的页面)以一种非常普遍的方式来建模特征之间的关系。如果你知道这些关系是什么,或者有足够的数据来推导它们,那么使用贝叶斯网络可能是合适的。

朴素贝叶斯分类器是描述贝叶斯网络中的特定类别的简单模型——其中所有特征都是类条件独立的。因此,有些问题朴素贝叶斯无法解决(以下是示例)。但是,它的简单性也使得它更容易应用,在许多情况下需要较少的数据就可以获得良好的结果。

示例:异或(XOR)

你有一个二元特征x1x2,以及一个目标变量y = x1 XOR x2的学习问题。

在朴素贝叶斯分类器中,x1x2必须被独立处理——所以你会计算像“在x1 = 1的情况下,y = 1的概率”这样的东西——希望你能看出这并没有什么用,因为x1 = 1并不能使y = 1更或者更少可能发生。由于贝叶斯网络不假定独立性,它将能够解决这样的问题。


那么对于基因-表型预测,哪种更好呢?我们知道一组基因可以构建一个通路,不同的生物可能使用不同的通路来实现相同的代谢。因此,在基因组学中,我们有“如果(基因1和基因2)或(基因3和基因4)则是,否则为否”的情况。 - dgg32

8
朴素贝叶斯只是一种特定的贝叶斯网络形式,约束了类节点没有父节点,属性变量节点之间没有边缘。因此,一般的贝叶斯网络同样可用于分类 - 预测的类别是所有其他变量设为预测实例值时概率最大的类别,按照通常的贝叶斯推理方法进行。关于这个问题,可以阅读一篇好的论文 "Bayesian Network Classifiers, Machine Learning, 29, 131–163 (1997)"。特别有趣的是第3节。虽然朴素贝叶斯是更普遍的贝叶斯网络的一个限制形式,但本文还讨论了为什么朴素贝叶斯在分类任务中能够胜过一般的贝叶斯网络。

3
作为分类器的贝叶斯网络,特征基于一些得分函数(例如贝叶斯得分函数和最小描述长度)进行选择(在理论上,只要有足够的训练数据,这两个函数就是等效的)。这些得分函数主要使用数据限制结构(连接和方向)和参数(似然性)。结构学习完成后,类仅由马尔可夫毯子中的节点(其父节点、子节点和子节点的父节点)确定,并且在给定马尔可夫毯子的所有变量都被丢弃。
对于现今更为知名的朴素贝叶斯网络,所有特征都被视为属性,并且在给定类的情况下是独立的。
贝叶斯网络和朴素贝叶斯网络各有优缺点,我们可以看到它们的性能比较(针对主要来自UCI存储库的25个数据集)如下所示:

enter image description here

我们可以看到,在对某些数据集进行分类时,朴素贝叶斯表现比贝叶斯网络更好,这些数据点位于对角线以下;而在其他一些数据集上,贝叶斯网络的表现则相反,数据点位于对角线以上。
贝叶斯网络比朴素贝叶斯更为复杂,但它们几乎表现同样出色的原因是,所有表现不如朴素贝叶斯的数据集都具有超过15个属性。在结构学习期间,一些关键属性被丢弃了。
我们可以将两种方法结合起来,并在朴素贝叶斯的特征之间添加一些连接,从而得到树增强朴素贝叶斯或k-相关贝叶斯分类器。

enter image description here

参考文献:
1. 贝叶斯网络分类器


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接