感谢贝叶斯网学习笔记

问题是这样描述的:

    福尔摩斯先生在他的办公室工作时接到了他邻居华生的电话。华生告诉他:他的家里可能进了窃贼,
因为他家的警铃响了被告知有窃贼闯入,福尔摩斯迅速开车回家。在路上,他听广播得知他家那里
发生了地震。地震也有可能引起警报。这样,请问福尔摩斯先生应该回家抓贼还是迅速撤离该地区
以躲避地震?

简单讲,在路上的holmes需要判断是盗贼还是地震导致警铃?如果是前者,他需要回去抓贼,若是后者,则要逃离地震区。
所以图中虽然有5个节点,地震并不100%导致警铃,警铃也不100%导致华生的信号。
但是我们在得到信号,听到警铃的情况下,可以通过计算盗贼导致警铃的概率p1,和地震导致警铃的概率pp1来进行决策,也可以计算在地震发生条件下,盗贼导致警铃的概率p2。

  • P1表示在听到警铃的条件下,盗贼导致警铃响的概率
  • PP1表示在听到警铃的条件下,地震导致警铃响的概率PP1
  • P2,在地震发生的条件下,盗贼导致警铃发生的概率。

如果p2比p1小,说明地震E才是导致A的主要原因。
反过来,如果P2和P1相同,说明地震这个新添加的条件,对警报没有作用。
添加地震这个条件之后,还是盗贼的概率变小了,说明地震对警报是有影响的。

用用图像描述如下:

图片来源于realsa,表示感谢。

==注意:==节点的状态是自己定义的,false = state 1 true = state 2,此处与jbb0523的理解刚好相反。
以下是源代码分析

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%1、建立贝叶斯网络结构
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N = 3; %三个节点,分别是B、E、A
dag = zeros(N,N);%建立一个N*N的0矩阵
B = 1; E = 2; A = 3; %
%节点之间的连接关系
dag(B,A) = 1;%存在B指向A的边
dag(E,A) = 1; %存在E指向A的边
discrete_nodes = 1:N; %离散节点
node_sizes = 2*ones(1,N);%节点状态数node_sizes的内容为[2,2,2]
bnet =mk_bnet(dag,node_sizes,'names',{ 'BB','EE','AAA'},'discrete',discrete_nodes);
%name后面的{}里面给出了各个节点的别名
%
% false = state 1 true = state 2,此处与[jbb0523](https://blog.csdn.net/jbb0523/article/details/79438092)的理解刚好相反
bnet.CPD{B} = tabular_CPD(bnet,B,[0.9 0.1]);%手动输入的条件概率 入室盗窃发生的概率true 0.1
bnet.CPD{E} = tabular_CPD(bnet,E,[0.99 0.01]);
bnet.CPD{A} = tabular_CPD(bnet,A,[0.99 0.1 0.1 0.01 0.01 0.9 0.9 0.99]);
%利用tabular_CPD设置各个变量的边缘概率,对于B和E,定义顺序是False True;
%对于T、L和B这类,顺序是FF  FT TF TT;
%对于D这类,顺序是FFF FFT FTF FTT TFF TFT TTF TTT%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%2、画出建好的贝叶斯结构
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
draw_graph(dag);%画图%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%3、使用联合树引擎对贝叶斯网络进行推断
engine = jtree_inf_engine(bnet);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%4、求解边缘分布假设
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%我们要计算盗窃导致响铃的概率 %P1=P(B|A)
evidence = cell(1,N);%创建一个1*n的空的矩阵
evidence{A} = 2; % %这里1是false,2是True,等于让A是True.%C{s}使用这种"{}"形式的返回的是cell中的内容[engine, loglik] = enter_evidence(engine, evidence);
marg = marginal_nodes(engine, B);     %P1=P(B|A)
p1 = marg.T(2);%算出p1=0.8412   P1
%现在我们添加地震的证据观察它有什么不同P2=P(B|A,E)
evidence{E} = 2;% %这里1是false,2是True,等于让E是True.
[engine, loglik] = enter_evidence(engine, evidence);%loglik对数似然
marg = marginal_nodes(engine, B);
p2 = marg.T(2);%算出p2=0.1089
%结论是地震更能解释响铃这个主要事实
%联合概率分布%P( B=True|A=True,E=True)
evidence = cell(1,N);
evidence{A} = 2;
evidence{E} = 2;
[engine, ll] = enter_evidence(engine, evidence);%ll
m = marginal_nodes(engine, [B E A]);

[engine, ll] = enter_evidence(engine, evidence);里面是LL不是1,也有人选择loglik,不过也有人直接把这两个都去掉,但是结果是相同的,不知道是什么原因。
CPT表如何排列
m的结果如何输出,m的结果如何解读,是下一步的重点。

贝叶斯网络经典matlab源代码解析相关推荐

  1. matlab中nsamples 10,贝叶斯网络-使用matlab工具集

    提纲: 最近工作: B-COURSE工具学习 BNT研究与学习 BNT相关实验及结果 手动建立贝叶斯网及简单推理 参数学习 结构学习 下一步工作安排 最近工作: 1. B-COURSE 工具学习 B- ...

  2. 30年前的热门研究,今获经典论文奖,贝叶斯网络之父旧论文「考古」

    机器之心报道 编辑:魔王.蛋酱.张倩 一篇 30 年前的论文,因为一次获奖,又重新出现在世人眼前. 近日,图灵奖得主.贝叶斯网络之父 Judea Pearl 在推特上提到,自己在三十年前与当时的博士生 ...

  3. 【汉字识别】基于贝叶斯网络实现汉字识别含Matlab源码

    ​1 简介 2 部分代码 clc,clear,closefor i=1:5 imp=imread(['.\字库',num2str(i),'.jpg']); create_database(imp,i) ...

  4. 安装matlab贝叶斯网络工具箱

    安装matlab贝叶斯网络工具箱 下载工具箱 安装工具箱 安装matlab贝叶斯网络工具箱 1. 下载工具箱 下载链接: 官方下载:http://www.cs.ubc.ca/~murphyk/Soft ...

  5. 【Matlab】利用贝叶斯网络工具箱中的K2算法进行结构学习

    下面首先介绍一个结构学习方法,接着利用Matlab中的贝叶斯网络工具箱的K2算法学习该贝叶斯网络的结构.有关贝叶斯网络工具箱的使用,请看[Matlab]贝叶斯网络工具箱简介. 问题:服务器数据传送 现 ...

  6. matlab设l创建网络,利用matlab进行简单的贝叶斯网络构建 | 学步园

    matlab的安装 第一次装matlab,装好后发现没有在桌面生成图标,还以为是最后提示的编译器没有安装.结果发现,matlab的图标在其安装的bin目录下面,进行初始化就能开始使用了 关于贝叶斯网络 ...

  7. matlab bnt(贝叶斯网络)实例

    #matlab bnt下的贝叶斯网络实例 #贝叶斯网络实例#详细教程 1.向matlab中添加FULLBNT 参照链接:https://blog.csdn.net/moodytong/article/ ...

  8. 关于使用matlab工具箱BNT进行贝叶斯网络学习中遇到的问题

    关于使用matlab工具箱BNT进行贝叶斯网络学习中遇到的问题 导入BNT工具箱 在代码运行时出现的问题 导入BNT工具箱 在网络上找到bnt工具箱后,解压. 找到设置路径点击后, 点击添加并包含子文 ...

  9. 专家打分法matlab,针对贝叶斯网络中引入专家评价的先验概率评估方法与流程

    本发明属于故障诊断领域,具体涉及一种针对贝叶斯网络中引入专家评价的先验概率评估方法. 背景技术: :贝叶斯网络作为故障诊断系统中常见的推理算法,网络根节点先验概率的准确程度直接决定着其能否快速定位第一 ...

  10. matlab 贝叶斯网络

    第一次搭建,参考教程https://blog.csdn.net/moodytong/article/details/8122327. 我的matlab是2014a.系统win7旗舰. 下面就开始一步一 ...

最新文章

  1. 田野中科院计算机网络信息中心,中国科学院
  2. Sublime Text 3 安装Package Control及配置Python环境
  3. selenium webdriver 启动三大浏览器Firefox,Chrome,IE
  4. Js+XML 操作 [ZT]
  5. XLNET:换一个思路做预训练,效果杠杠滴
  6. MySQL + Atlas --- 部署读写分离
  7. Linux卸载Anaconda
  8. cachecloud部署和创建机器
  9. win11系统中文名改英文名(win11、win10修改用户名)超详细图文
  10. 1170:计算2的N次方
  11. dell inspiron 只有一个飞行模式 没有wifi_连上WiFi就能打电话?“手机营业厅”中的神奇功能火了...
  12. Linux系统各发行版镜像下载
  13. Revit二开--复制视图裁剪
  14. 二八定律、木桶理论等
  15. 走过了十年,亚信安全用什么引领云安全发展?
  16. 2021宜宾叙州区二中高考成绩查询,宜宾叙州第二中学2021年录取分数线
  17. 人工神经网络的基本内容和特点
  18. Date Calendaer
  19. centos7修改root用户密码
  20. “互联网+”和跨界当道 大数据解码北京房产市场

热门文章

  1. 用Python实现的数据化运营分析实例——销售预测
  2. python数据化运营案例---简单销售预测案例(线性回归模型)
  3. 百度API接口+图灵机器人=语音助手
  4. dedecms教程:织梦建站教程之如何为内容模型添加新字段?
  5. 第十七章、程序管理与 SELinux 初探
  6. excel与python生成正态分布的数据,实践
  7. Linux的PS1美化
  8. 求椭圆的切线方程------很有对称美
  9. 如何查看linux的日志
  10. XCode下Swift – WebView IOS demo