提高贝叶斯因果网络的预测精度
Posted
技术标签:
【中文标题】提高贝叶斯因果网络的预测精度【英文标题】:Improving prediction accuracy in Bayesian Causal Network 【发布时间】:2020-04-02 09:24:09 【问题描述】:我想确定热力学过程中出现意外结果(或异常)的原因。我有相关变量的连续数据,并试图利用“贝叶斯网络(BN)”来确定因果关系。为此,我在 Python 中使用了一个名为“Causalnex”的库。
我已经按照这个库的教程部分构建了 DAG、BN 模型,并且在预测步骤之前一切正常。少数/少数类的预测结果具有大约 60-70% 的准确度(在 SMOTE/SMOTETomek 和特定随机状态下为 80-90%),而稳定的准确度有望超过 90%。我已经实现了以下数据预处理步骤。
-
确保没有缺失/NaN 值
离散化(只有库支持)
SMOTE/SMOTETomek 用于数据平衡
各种训练/测试大小组合
我正在努力找出优化模型的方法。我在 Internet 上找不到任何支持材料。
是否有特别适用于该库/BN 模型的数据预处理技术和数据集要求的指南或“最佳实践”?您能否建议任何故障排除方法来确定低准确性/指标的原因?也许 DAG 中被误解的节点-节点因果关系会导致平庸的准确性?
任何与此相关的想法/文献/其他合适的图书馆都会有很大帮助!
【问题讨论】:
【参考方案1】:一些有用的提示:
-
更改/调整结构学习。
尝试不同的阈值。在执行from_pandas
时,您可以尝试不同的w-threshold
值(以及beta
术语(如果您使用的是from_pandas_lasso
))。
这将改变网络的密度。更密集的结构意味着具有更多参数的 BN。如果结构更密集,你有更多的参数,你的模型可能会表现得更好。但是,如果它太密集,您可能没有足够的数据来训练它并且可能会过拟合。
数据居中。根据经验,如果数据居中,NOTEARS(from_pandas
背后的算法)似乎效果最好。因此,减去see this 的平均值可能是个好主意。
确保因果关系。 NOTEARS 不保证因果关系。所以我们需要“专家”来判断输出并进行必要的修改。如果您看到不具有因果意义的边缘,您可以删除它们或将它们添加为 tabu_edges
并再次训练您的网络。
-
进行离散化实验。性能可能对您如何离散数据非常敏感。尝试各种类型的离散化会有所帮助。您可以使用:
【讨论】:
以上是关于提高贝叶斯因果网络的预测精度的主要内容,如果未能解决你的问题,请参考以下文章
优化预测基于matlab贝叶斯优化LSTM预测含Matlab源码 1329期