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

时间:2012-09-06 10:34:45

标签: matlab machine-learning bayesian naivebayes bayesian-networks

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

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

3 个答案:

答案 0 :(得分:31)

简短回答,如果您只对解决预测任务感兴趣:使用Naive Bayes。

贝叶斯网络(具有良好的wikipedia页面)以非常通用的方式模拟特征之间的关系。如果您知道这些关系是什么,或者有足够的数据来推导它们,那么使用贝叶斯网络可能是合适的。

Naive Bayes分类器是一个描述特定贝叶斯网络类的简单模型 - 其中所有特征都是类条件独立的。因此,Naive Bayes无法解决某些问题(例如下面的例子)。但是,它的简单性也使其更容易应用,并且在许多情况下需要较少的数据才能获得良好的结果。

示例:XOR

您对二元功能x1x2以及目标变量y = x1 XOR x2存在学习问题。

在Naive Bayes分类器中,x1x2必须独立处理 - 因此您可以计算“y = 1给出x1 = 1”的概率 - 希望如此您可以看到这没有帮助,因为x1 = 1不会使y = 1更有可能或更不可能。由于贝叶斯网络不具有独立性,因此能够解决这样的问题。

答案 1 :(得分:6)

Naive Bayes只是一般贝叶斯网络的受限制/约束形式,您可以在其中强制执行类节点不应具有父节点的约束,并且与属性变量对应的节点之间不应存在边缘。因此,没有任何东西可以阻止一般的贝叶斯网络被用于分类 - 预测的类是具有最大概率的类,当(通过条件)所有其他变量被设置为通常的贝叶斯推理方式的预测实例值时。关于此的一篇好文章是“贝叶斯网络分类器,机器学习,29,131-163(1997)”。特别感兴趣的是第3节。尽管朴素贝叶斯是一种更为普遍的贝叶斯网络的约束形式,但本文还讨论了为什么朴素贝叶斯在分类任务中能够并且确实胜过一般的贝叶斯网络。

答案 2 :(得分:2)

对于贝叶斯网络作为分类器,基于某些scoring functions(例如贝叶斯得分函数和最小描述长度)来选择特征(理论上,两者彼此等效,因为有足够的培训数据)。评分功能主要使用数据来限制结构(连接和方向)和参数(似然性)。在了解了结构之后,该类仅由Markov毯子中的节点(其父项,其子项以及其子项的父项)确定,并且丢弃给定Markov毯子的所有变量。

对于当今更为知名的朴素贝叶斯网络,所有功能都被视为属性,并且在给定类别的情况下是独立的。

贝叶斯网络和朴素贝叶斯网络各有优缺点,我们可以看到性能比较(主要针对UCI存储库中的25个数据集完成),如下所示:

enter image description here

我们可以看到,在那些数据集上,对角线下方的某些点表示朴素贝叶斯的性能优于贝叶斯网络,而在对角线上方的某些点则表示某些其他数据集的反向。

贝叶斯网络比朴素贝叶斯要复杂得多,但是它们的性能几乎一样好,原因是所有贝叶斯网络比朴素贝叶斯表现更差的数据集都有15个以上的属性。在结构学习期间,一些关键属性被丢弃。

我们可以将两者结合起来,并在朴素贝叶斯的特征之间添加一些联系,它成为树形增强朴素贝叶斯或k依赖贝叶斯分类器。

enter image description here

参考文献:
1. Bayesian Network Classifiers