码迷,mamicode.com
首页 > 其他好文 > 详细

FullBNT学习笔记之一(matlab)

时间:2015-03-03 22:17:31      阅读:557      评论:0      收藏:0      [点我收藏+]

标签:贝叶斯网络   matlab   

   首先来看一个草地湿润模型,Cloudy表示天气是否多云,C=1(F)表示False,C=2(T)表示True,一下表示均相同,Sprinklet表示洒水车是否出动,Rain表示是否下雨,WetGrass表示草地是否是湿的。旁边的表格表示各种条件概率。

技术分享

     贝叶斯网络表示:BNT中使用矩阵方式表示贝叶斯网络,即若节点i到j有一条弧,则对应矩阵中(i,j)值为1,否则为0。上图是一个草地潮湿原因模型。我们使用matlab画出建立好的贝叶斯网络,可以求出单个节点后验概率和多个节点后验概率。

      matlab程序如下:第一步,建立贝叶斯网络,使用matlab得到上述网络结构

clear;clc;
N = 4;                        %四个节点 分别是cloudy,sprinkler,rain,wetgrass
dag = zeros(N,N);
C = 1; S = 2; R = 3; W = 4;
dag(C,[R S]) = 1;             %节点之间的连接关系
dag(R,W) = 1;
dag(S,W) = 1;
discrete_nodes = 1:N;         %离散节点
node_sizes = 2*ones(1,N);     %节点状态数
bnet =mk_bnet(dag,node_sizes,'names',{'cloudy',...
    'sprinkler','rain','wetgrass'},'discrete',discrete_nodes);
bnet.CPD{C} = tabular_CPD(bnet,C,[0.5 0.5]);        %手动输入条件概率
bnet.CPD{R} = tabular_CPD(bnet,R,[0.8 0.2 0.2 0.8]);
bnet.CPD{S} = tabular_CPD(bnet,S,[0.5 0.9 0.5 0.1]);
bnet.CPD{W} = tabular_CPD(bnet,W,[1 0.1 0.1 0.01 0 0.9 0.9 0.99]);


%画出建立好的贝叶斯网络
figure
draw_graph(dag);

      接下来比如我们想计算洒水器导致草地是湿润的概率。证据的构成是W=2,enter_evidenc 执行一个双通道的信息传递模式。第一次返回的变量包括修正的结合着证据的引擎,第二次返回的变量包括证据的对数似然。按如下方式计算p=P(S=2|W=2):

      我们使用联合树引擎,它是所有精确推断引擎的根本。它可以按如下步骤调用:

engine = jtree_inf_engine(bnet);



evidence = cell(1,N); 

evidence{W} = 2; 

[engine, loglik] = enter_evidence(engine,evidence); 

marg = marginal_nodes(engine, S);  

p = marg.T(2);

     据我目前的理解,evidence 是你所需要计算的条件概率的条件部分,而marginal_nodes的第二个参数是你所需要的计算的条件概率的概率部分。由以上代码可以计算条件概率P(S|W=2),储存在变量marg.T里面。


     两个小例子:


一、直接计算p(W)概率
evidence = cell(1,N); 

[engine, ll] = enter_evidence(engine,evidence); 

m = marginal_nodes(engine, [W]); 

m.T

二、计算联合概率p(SRW)

evidence = cell(1,N);

[engine, ll] = enter_evidence(engine,evidence);

m = marginal_nodes(engine, [S R W]);

本文在博客点击打开链接基础上根据自己理解所写

------------------
祝身体健康,万事如意

华电北风吹

天津大学计算机科学与技术学院认知计算与应用重点实验室

天津市卫津路92号

邮编: 300072



FullBNT学习笔记之一(matlab)

标签:贝叶斯网络   matlab   

原文地址:http://blog.csdn.net/zhangzhengyi03539/article/details/44041279

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!