输入(我拥有的):一些贝叶斯网络(图形结构和条件概率分布(cpd))和相应的分类数据集(例如bnlearn repo ).
输出(我想要的): 合成图形和数据,使它们类似于给定的数据集。就相似而言,我指的是从合成数据到给定数据集的泛化,包括图结构偏差、cpd 偏差、条件独立性测试值偏差等属性。
如何(我做了什么):
- 图合成:使用 Erdős–Rényi 和 Barabási–Albert 模型生成骨架,然后随机定向到 DAG。
- 数据采样:我尝试了两种方法:
- SEM:来自线性或非线性模型的数值。然后将随机基数分配给节点,并将它们数字化(从最小值到最大值统一分箱)。
- 前向采样:需要随机生成基数,每个节点的 cpd 使用狄利克雷分布。
为什么(我遇到的问题:)
模拟数据未能很好地推广到测试集(给定的数据集)。将这两个步骤分开,看看为什么:
- 图形:从给定数据集的图形中重新采样数据,但使用我的新采样参数。效果很好。
- 数据:所以问题出在数据采样程序上(或者这个归纳是否错误?)
- SEM:有没有更好的方法来制作样本数据(例如 SEM 参数、离散化方法)。
- 前向采样:对于节点$X_i$及其父节点$PA_i$的可能值组合$pa_i$,$P(X_i|PA_i=pa_i)$由狄利克雷分布$Dir(\alpha_1, \ cdots, \alpha_{n_i})$,其中 $n_i$ 是 $X_i$ 和 $\alpha_1=\cdots=\alpha_{n_i}, ~U[0.1,1.2]$ 的基数。然后将针对每个可能的值组合重复对 cpd 的这种随机分配(对于 $\Pi_{j\in PA_i}{n_j}$ 次)。
- 这是前向采样的好方法吗?在狄利克雷分布中微调 $\alpha$ 参数有什么更好的方法吗?我曾尝试使用 MLE 来估计给定数据集的 cpd 中的 $\alpha$,但未能收敛。
感谢任何可能的帮助:)