Python 提高贝叶斯因果网络的预测精度
我想确定热力学过程中意外结果(或变形金刚)的原因。我有相关变量的连续数据,并试图利用“贝叶斯网络(BN)”来确定因果关系。为此,我在Python中使用了一个名为“”的库 我已经按照这个库的教程部分构建了DAG、BN模型,并且在预测之前一切都很好。少数/较少多数类别的预测结果的准确度约为60-70%(SMOTE/SMOTETomek和特定随机状态的准确度为80-90%),而预计稳定的准确度将超过90%。我已经实现了以下数据预处理步骤Python 提高贝叶斯因果网络的预测精度,python,machine-learning,bayesian-networks,causality,Python,Machine Learning,Bayesian Networks,Causality,我想确定热力学过程中意外结果(或变形金刚)的原因。我有相关变量的连续数据,并试图利用“贝叶斯网络(BN)”来确定因果关系。为此,我在Python中使用了一个名为“”的库 我已经按照这个库的教程部分构建了DAG、BN模型,并且在预测之前一切都很好。少数/较少多数类别的预测结果的准确度约为60-70%(SMOTE/SMOTETomek和特定随机状态的准确度为80-90%),而预计稳定的准确度将超过90%。我已经实现了以下数据预处理步骤 确保没有丢失/NaN值 离散化(只有库支持) SMOTE/SMO
任何关于这方面的想法/文献/其他合适的图书馆都会非常有帮助 一些有帮助的提示:
- 尝试不同的阈值。从熊猫中执行
时,您可以使用不同的
w阈值
值(以及
术语(如果您使用的是熊猫套索中的beta
) 这将改变网络的密度。更致密的结构意味着具有更多参数的BN。如果结构更密集,则具有更多参数,并且模型的性能可能会更好。但是,如果它太密集,您可能没有足够的数据来训练它,并且可能会拟合过度
- 将数据居中。从经验上看,如果数据居中,NOTEARS(来自的
背后的算法)的效果最好。所以,减去平均值可能是个好主意
- 确保因果关系。注释不能保证因果关系。因此,我们需要“专家”来判断输出并进行必要的修改。如果您看到没有因果意义的边,您可以将它们删除或添加为
,然后再次训练您的网络禁忌边
- Causalnex中提供的方法(例如,统一)
- 基于对您的数据有意义的阈值的固定离散化
- MDLP是一种有监督的数据离散化方法。您可以为每个节点应用MDLP,每个节点都有一个子节点作为“目标”。pypy中有两个主要的MDLP包:和