缺失数据em算法python_关于在数据缺失情况下使用EM算法估计贝叶斯网络结构

在建立贝叶斯网络时,面对数据缺失的情况,EM算法能用于估计网络结构。通过最大化期望值,不断迭代修正参数,直至达到预设的收敛阀值。流程包括初始化、计算似然值、E步骤(期望)、M步骤(最大化)并判断是否收敛。该方法可同时处理参数和缺失数据,确保在网络参数估计上的准确性。
摘要由CSDN通过智能技术生成

当我们要建立贝叶斯网络时,需要首先通过因果关系得到贝叶斯的网络结构,再训练得到贝叶斯网的参数集。这里,参数集往往是通过给定数据集进行统计计算得到,但是,有的时候,给定的数据集不一定是完整的,可能某一条或多条的数据缺失一个或两个数据。

这是需要我们在数据缺失的情况下计算参数集,当然最简单的方法是去掉具有缺失数据的行,这样显然在数据集较小的时候会造成参数集的严重不准确。

在贝叶斯引论那本书中提到要用EM算法来解决这个问题。其实EM算法就是最大化期望值算法,这个过程中我们计算在某随机参数情况下的最大似然值,然后根据此似然值对参数值进行了修正,再次计算极大似然值,不断迭代,知道计算得到的值在可接受的阀值范围内。

下面来说一下,他是咋实现的。

首先,输入数据是贝叶斯网络结构、缺失的数据集、收敛阀值

1、设初始迭代次数为0,网络参数为任意值。收敛阀值a

2、根据贝叶斯估计公式计算网络参数的似然值。

94b77a807342ab37fa71ae88798ec034.png

其中:

c7c1677142ac23b193870544583f6198.png

2b1d77e0fe49ddffd96e47abc34a9770.png

这里面最值注意的是,在计算

da1bc701e103fbb95c0ccdb5c7d5ae00.png的时候一定要进行进行一下归一化才能得到真正的结果哦。

进入循环体:

a、用oldscore记录似然值。

b、计算

1fa98d3f37007b4bfee4cc1b5d172025.png(E步骤)

c、计算

83b6318021e025ec27c43c93b7bf5a5a.png的最大值,即“最大似然”撒(M步骤)

d、此时,得到了newScore,比较newScore和oldscore,如果在收敛阀值内,则迭代结束,newscore就是最终结果。否则,使用oldscore记录newscore,迭代次数加一,继续迭代。

在书中他还介绍了,使用团树传播方法来简化计算过程。后面再记录。流程。

这个算法可以将参数和缺失数据同时计算出来,虽然对方也不清楚他们要什么,但是跑不出这两个。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值