贝叶斯网络结构学习算法中,初始化时的人工生成的网络是随机的吗?

本人初学者,看了几篇贝叶斯网络的帖子,发现每个网络结构学习样例中在生成贝叶斯网络之前都人工用函数随机生成了一个dag和cpt。

图片说明

所以想请教一下,这个人工生成的DAG只要确定了节点数,其结构依靠函数(例如matlab工具包中的:mk_rnd_dag(N)函数)随机生成一个有向无环图就可以吗?

    还是说这只是为了说明流程而随机列举的样例,真正使用贝叶斯网络时要根据实际情况确定有向无环图及其条件概率表?若是这样,现实中往往只有数据集而不知道图的结构和参数表(CPT),那该如何网络结构学习从而进行后续的推断呢?

这个根据经验来的,有时候用随机,但是也有用正态分布作为初始值的。

您好,也就是说 “如果我目前有数据集,在不知道该数据集的具体网络结构和概率表的情况下想要生成一个贝叶斯网络,就按照示例中的流程首先随机生成一个网络,然后在用函数对数据集进行网络结构的学习” 是这样吗?

贝叶斯网络结构学习,是根据贝叶斯定理以及有向无环图以及相关的算法实现的。当然可以加入先验知识。

matlab中函数mk_rnd_dag:随机生成一个N维的邻接方阵;函数mk_bnet:由邻接矩阵产生贝叶斯网络bnet(此时并没有条件概率);函数tabular_CPD:在bnet上随机生成条件概率CPD。以上一系列操作都是随机产生的,不具有学习性。
若本身仅有数据,想得到网络结构,就需要进行结构学习,可以应用结构学习中的经典算法进行实现。
(以上见解如有错误望见谅)