来源:数据分析师 CPDA | 时间:2015-07-28 | 作者:admin
2 建立模型
贝叶斯网络的建模包括两个步骤:(1)创建网络结构;(2)估计每一个结点的概率值。网络拓扑结构可以通过对主观的领域专家知识编码获得。下面算法给出了归纳贝叶斯网络拓扑结构的一个系统过程。
算法:贝叶斯网络拓扑结构的生成算法
1:设T=(X1,X2,…,Xd)表示变量的全序
2:for j=1 to do
3: 令XT(j)表示T中第j个次序最高的变量
4: 令π(XT(j))={ XT(1), XT(2) ,…, XT(j-1) }表示排在XT(j)前面的变量的集合
5: 从π(XT(j))中去掉对Xj没有影响的变量(使用先验知识)
6: 在XT(j)和π(XT(j))中剩余的变量之间画弧
7:end for
上述算法保证生成的拓扑结构不包含环,这一点很容易证明。如果存在环,那么至少有一条弧从低序结点指向高序结点,并且至少存在另一条弧从高序结点指向低序结点。由于这个算法不允许从低序结点到高序结点的存在,因此拓扑结构中不存在环。
然而,如果我们对变量采用不同的排序方案,得到的网络拓扑结构可能会有变化。某些结构可能质量很差,因为它不同的结点对之间产生了很多条弧。从理论上讲,可能需要检查所有d!种可能的排序才能确定最佳的拓扑结构,这是一项计算量很大的任务。替代的方法,是把变量分为原因变量和结果变量,然后从各原因变量向其结果变量画弧。这种方法简化了贝叶斯网络结构的建立。
一旦找到了合适的拓普结果,与各结点关联的概率表就确定了。对这些概率的估计比较容易,与朴素贝叶斯分类器中所用的方法类似。
3 使用BBN进行推理举例
假设我们对使用下图的BBN来诊断一个人是否患有心脏病感兴趣,下面阐述在不同的情况下如何做出诊断。
情况一:没有先验信息 在没有任何先验信息的情况下,可以通过计算先验概率P(HD=yes)和P(HD=no)来确定一个人是否可能患心脏病。为了表达方便,设α∈{yes,no}表示锻炼的两个值,β∈{yes,no}表示饮食的两个值。
因为P(HD=no)=1-P(HD=yes)=0.51,所以,此人不得心脏病的机率略微大一点。
情况二:高血压 如果一个人有高血压,可以通过比较后验概率P(HD=yes|BP=高)和P(HD=no|BP=高)来诊断他是否患有心脏病。为此,我们必须先计算P(BP=高):
其中γ∈{yes,no}。因此,此人患心脏病的后验概率是:
同理,P(HD=no|BP=高)=1-0.8033=0.1967。因此,当一个人有高血压时,他患心脏病的危险就增加了。
情况三 高血压、饮食健康、经常锻炼身体 假设得知此人经常锻炼身体并且饮食健康。这些新信息会对诊断造成怎样的影响呢?加上这些信息,此人患心脏病的后验概率:
而此人不患心脏病的概率是:
P(HD=no|BP=高,D=健康,E=yes)=1-0.5862=0.4138
因此模型暗示健康的饮食和有规律的体育锻炼可以降低患心脏病的危险。
4 BBN的特点
下面是BBN模型的一般特点。