我正在研究在matlab上学习贝叶斯网络进行分类的过程,而且我只是坚持一个简单的(我认为)步骤:
因此,对于像虹膜数据集这样的朴素贝叶斯分类器,该类位于顶部节点上,如下所示:
class
/ \ feature1 feature2
所以没关系,我明白为什么这个类是这些特性的原因,没关系,我明白为什么这个类本身有一个先验。
但是对于一个非天真的贝叶斯网络,就像这样:
cause1 cause2 | \ / | consequence | / class
在那种不天真的情况下,先前如何进行,如何设置?我如何从中获得分类?谢谢(:
PS:我正在寻找BNT的网络。答案 0 :(得分:3)
假设您提到的所有变量都是分类的,边缘方向是从上到下:
<强>先验:强>
在第一个朴素贝叶斯实例中,“类”的条件概率表(CPT)仅由其先前分布组成,因为它是根节点,即没有任何父节点。如果'class'可以采用2种状态(例如黑色和白色),则其CPT将包含2个值。
在第二个贝叶斯网络(BN)示例中,“类”的CPT依赖于“cause1”和“后果”。让我们说'后果'有3个状态,'因为1'有4个状态,而'之前'有2个状态。在这种情况下,'class'的CPT将包含3 * 4 * 2的值。当您学习此CPT时,您可以将您之前的信念作为Dirichlet分布(如果所有变量都是分类的)。有关如何将您的先前信念纳入最大似然估计过程的示例,请查看这些优秀的lecture slides。
推断:(或您所说的“分类”)
根据执行分类,在示例1中,您可以使用贝叶斯规则来计算P('class'= white)和P('class'= black)。在第二个(BN)示例中,您必须使用置信传播或变量消除或连接树算法来根据观察到的节点更新“类”节点的后验概率。
关于如何完成此here,有一个直接的BNT示例。此外,BNT工具箱附带了简短的“推理”示例,这些示例使用了联结树功能,您可以在.../examples
文件夹下找到该功能。
最后 - 有些人可能不同意但是 - 就国阵来说,我建议不要严格解释A - >; B作为“A导致B”,因为BN的因果关系方面,特别是在结构学习领域,可以争论很多。
我希望这会有所帮助。