贝叶斯网络和朴素贝叶斯分类器有什么区别?我注意到一个刚刚在 Matlab 中实现,因为classify
另一个有一个完整的网络工具箱。
如果您能在回答中解释哪个更有可能提供更好的准确性,我将不胜感激(不是先决条件)。
贝叶斯网络和朴素贝叶斯分类器有什么区别?我注意到一个刚刚在 Matlab 中实现,因为classify
另一个有一个完整的网络工具箱。
如果您能在回答中解释哪个更有可能提供更好的准确性,我将不胜感激(不是先决条件)。
简短的回答,如果您只对解决预测任务感兴趣:使用朴素贝叶斯。
贝叶斯网络(有一个很好的维基百科页面)以非常通用的方式模拟特征之间的关系。如果您知道这些关系是什么,或者有足够的数据来推导它们,那么使用贝叶斯网络可能是合适的。
朴素贝叶斯分类器是一个简单的模型,用于描述特定类别的贝叶斯网络——其中所有特征都是类条件独立的。因此,存在朴素贝叶斯无法解决的某些问题(示例如下)。但是,它的简单性也使其更易于应用,并且在许多情况下需要更少的数据即可获得良好的结果。
x1
您在二元特征和x2
目标变量方面存在学习问题y = x1 XOR x2
。
在朴素贝叶斯分类器中,x1
并且x2
必须独立处理-因此您将计算诸如“y = 1
给定的概率”之类的东西x1 = 1
-希望您可以看到这没有帮助,因为x1 = 1
不会y = 1
增加或减少可能性。由于贝叶斯网络不假定独立,因此它能够解决这样的问题。
朴素贝叶斯只是一般贝叶斯网络的受限/约束形式,您可以在其中强制执行类节点不应有父节点以及与属性变量对应的节点之间不应有边的约束。因此,没有什么可以阻止一般贝叶斯网络用于分类 - 预测的类别是当(条件)所有其他变量以通常的贝叶斯推理方式设置为预测实例值时具有最大概率的类别. 关于这方面的一篇好论文是“Bayesian Network Classifiers, Machine Learning, 29, 131–163 (1997)”。特别感兴趣的是第 3 节。虽然朴素贝叶斯是更一般的贝叶斯网络的受限形式,
对于贝叶斯网络作为分类器,特征的选择基于一些评分函数,如贝叶斯评分函数和最小描述长度(如果有足够的训练数据,两者在理论上是等价的)。评分函数主要限制使用数据的结构(连接和方向)和参数(可能性)。学习完结构后,类仅由马尔可夫毯中的节点(其父母、孩子和孩子的父母)确定,并且所有给定马尔可夫毯的变量都被丢弃。
对于现在比较知名的朴素贝叶斯网络,所有的特征都被认为是属性,并且在给定类的情况下是独立的。
贝叶斯网络和朴素贝叶斯网络各有优缺点,我们可以看到性能比较(主要来自 UCI 存储库的 25 个数据集),如下图所示:
我们可以看到,对角线下方的一些点表示朴素贝叶斯在这些数据集上的表现优于贝叶斯网络,而对角线上方的一些点则表示在其他一些数据集上的相反。
贝叶斯网络比朴素贝叶斯更复杂,但它们的表现几乎一样好,原因是贝叶斯网络比朴素贝叶斯表现差的所有数据集都有超过 15 个属性。那是在结构学习期间,一些关键属性被丢弃。
我们可以将两者结合起来,并在朴素贝叶斯的特征之间添加一些联系,它就变成了树增强朴素贝叶斯或 k 依赖贝叶斯分类器。
参考文献:
1.贝叶斯网络分类器