线性高斯网络推理、参数学习与表示
LGNp的Python项目详细描述
线性高斯贝叶斯网络.表示,学习和推理
贝叶斯网络(BN)是一种概率图形模型,它通过图形表示一组变量及其条件依赖关系。高斯BN是一种特殊情况,其中连续变量集由高斯分布表示。对于许多真实世界中的连续分布,高斯函数是令人惊讶的好的近似值。在
这个软件包有助于对网络进行建模,通过数据学习参数,并使用证据进行推理。实现了两种类型的高斯BN:
- 在
线性高斯网络:cpd为线性高斯的有向BN。在
在_ - 在
Gaussian credition Propagation:一个无向BN,它运行消息传递算法迭代求解精度矩阵,并找出有或无条件变量的边沿。在
在_
安装
$ pip install lgnpy
或者克隆存储库。在
^{pr2}$入门
以下是线性高斯网络的步骤。高斯信度传播模型也是相似的。在
1。创建网络
importpandasaspdimportnumpyasnpfromlgnpyimportLinearGaussianlg=LinearGaussian()lg.set_edges_from([('A','D'),('B','D'),('D','E'),('C','E')])
2创建数据并将其分配到网络。
使用pandas为网络创建合成数据,并将网络与数据绑定。不需要分别计算均值和协方差矩阵。在
np.random.seed(42)n=100data=pd.DataFrame(columns=['A','B','C','D','E'])data['A']=np.random.normal(5,2,n)data['B']=np.random.normal(10,2,n)data['D']=2*data['A']+3*data['B']+np.random.normal(0,2,n)data['C']=np.random.normal(-5,2,n)data['E']=3*data['C']+3*data['D']+np.random.normal(0,2,n)lg.set_data(data)
3。设置证据
证据是可选的,可以在运行推理之前设置。在
lg.set_evidences({'A':5,'B':10})
4。运行推理
对于每个节点,CPT(条件概率分布)定义为:
其中,使用父节点和节点的条件分布计算其参数:
在
run_inference()
返回每个节点的推断平均值和方差。在
lg.run_inference(debug=False)
附加功能:
lg.plot_distributions(save=False)
在
lg.network_summary()
在
lg.draw_network(filename='sample_network',open=True)
在
示例
已知问题
GaussianBP算法对某些特定的精度矩阵(协方差逆)不收敛。解决方法是使用Graphcial Lasso或类似的估计方法来寻找精度矩阵。欢迎拉取请求。在
参考文献:
线性高斯网络
- 在
Probabilistic Graphical Models - Principles and Techniques ,达芙妮·科勒,第7.2章
在_ - 在
Gaussian Bayesian Networks,萨尔古尔斯里哈里
在_
高斯置信传播
- Probabilistic Graphical Models - Principles and Techniques ,达芙妮·科勒,第14.2.3章
- Gaussian Belief Propagation: Theory and Aplication,丹尼·比克森
许可证
麻省理工学院许可证版权所有(c)2020,Prasad Ostwal
- 项目
标签: