1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 贝叶斯网络python实现_机器学习_统计模型之(二)贝叶斯网络

贝叶斯网络python实现_机器学习_统计模型之(二)贝叶斯网络

时间:2021-07-08 08:41:41

相关推荐

贝叶斯网络python实现_机器学习_统计模型之(二)贝叶斯网络

1. 贝叶斯网络

贝叶斯网络(Bayesian network),又称信念网络(Belief Network),或有向无环图模型。它用网络结构代表领域的基本因果知识。

贝叶斯网络中的节点表示命题(或随机变量),认为有依赖关系(或非条件独立)的命题用箭头来连接。

令G = (I,E)表示一个有向无环图(DAG),其中I代表图形中所有的节点的集合,而E代表有向连接线段的集合,且令X = (Xi), i ∈ I为其有向无环图中的某一节点i所代表的命题,则节点X的联合概率可以表示成:

其中Pa(i)是i的父结点,是i的因。联合概率可由各自的局部条件概率分布相乘得出:

p(x1,…,xk)=p(xk|x1,….,xk-1)…p(x2|x1)p(x1)

这里顺便说一下朴素贝叶斯,由于其中各个变量x相互独立p(x2|x1)=p(x2),得出:

p(x1,…,xk)=p(xk)…p(x2)p(x1)

因此说朴素贝叶斯是贝叶斯网络的一种特殊情况。

2. 例程

(1) 功能

eBay的Bayesian-belief-networks是一个贝叶斯网络的python工具包,此例为使用该库解决蒙提霍尔三门问题。

(2) 问题描述

蒙提霍尔是概率中的经典问题,出自美国的电视游戏节目。问题的名字来自该节目的主持人蒙提•霍尔(Monty Hall)。参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊(主持人不会打开有车的那扇门)。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门会否增加参赛者赢得汽车的机率?答案是:不换门的话,赢得汽车的几率是1/3。换门的话,赢得汽车的几率是2/3。

这是为什么呢?接着往下看。

(3) 下载安装

$ git clone /eBay/bayesian-belief-networks

(4) 代码

from bayesian.bbn import build_bbn

def f_prize_door(prize_door):

return 0.33333333

def f_guest_door(guest_door):

return 0.33333333

def f_monty_door(prize_door, guest_door, monty_door):

if prize_door == guest_door: # 参赛者猜对了

if prize_door == monty_door:

return 0 # Monty不会打开有车的那扇门,不可能发生

else:

return 0.5 # Monty会打开其它两扇门,二选一

elif prize_door == monty_door:

return 0 # Monty不会打开有车的那扇门,不可能发生

elif guest_door == monty_door:

return 0 # 门已经由参赛者选定,不可能发生

else:

return 1 # Monty打开另一扇有羊的门

if __name__ == '__main__':

g = build_bbn(

f_prize_door,

f_guest_door,

f_monty_door,

domains=dict(

prize_door=['A', 'B', 'C'],

guest_door=['A', 'B', 'C'],

monty_door=['A', 'B', 'C']))

g.q()

g.q(guest_door='A')

g.q(guest_door='A', monty_door='B')

(5) 运行结果

(6) 分析

程序中构建的贝叶斯网络如下图所示。

先看看库是如何使用的,首先通过三个判别函数(节点对应的是判别函数,并不对应三个门)以及它们之间的依赖关系定义了网络g的结构,节点和连线关系是程序员根据业务逻辑定义的。而机器用来优化和计算在给定的条件下产生结果的概率。

prize_door和guest_door都是随机的,所以概率都是0.333;而主持人知道哪扇门后是奖,所以monty_door由另外两个结点(父结点)决定的,当参赛者猜对时,Monty会打开另两门之一,没猜对时Monty只能打开另一扇有羊的门。

从运行结果可以看到:先验是随机抽取的0.333,随着限制条件依次加入,不确定性逐渐变小,最终,参赛者如果选择换门(C)的赢率变为不换门(A)的两倍。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。