基于MATLAB的贝叶斯网络(BNT)工具箱的使用与实例_第1页
基于MATLAB的贝叶斯网络(BNT)工具箱的使用与实例_第2页
基于MATLAB的贝叶斯网络(BNT)工具箱的使用与实例_第3页
基于MATLAB的贝叶斯网络(BNT)工具箱的使用与实例_第4页
基于MATLAB的贝叶斯网络(BNT)工具箱的使用与实例_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于MATLAB的BNT工具箱的使用与实例工具箱的安装下载FullBNT.zip文件。解压文件。编辑"FullBNT/BNT/add_BNT_to_path.m"让它包含正确的工作路径。BNT_HOME='FullBNT的工作路径';打开Matlab。运行BNT需要Matlab版本在V5.2以上。键入"add_BNT_to_path",执行这个命令。添加路径。添加所有的文件夹在Matlab的路径下。键入"test_BNT",看看运行是否正常,这时可能产生一些数字和一些警告信息。(你可以忽视它)但是没有错误信息。基于MATLAB的BNT工具箱的使用与实例

CreatingyourfirstBayesnet

创建你的第一个贝叶斯网络网络结构(structure)节点数量节点间关系节点大小与类型建立贝叶斯网络参数(parameters)条件概率分布CPD最简单的是CPT:条件概率表图形可视化绘制有向图推理联合树引擎(junctiontreeengine)精确推断的根本计算边缘分布计算联合分布网络结构(structure)节点数量节点间关系节点大小与类型建立贝叶斯网络N=4;%节点为4父节点子节点1→2,32→43→4Dag=zeros(N,N);dag(1,[23])=1;dag(2,4)=1;dag(3,4)=1;节点类型:discrete_nodes=1:4;节点大小:node_sizes=[2,2,2,2];节点均有两个取值:F&Tbnet=mk_bnet(dag,node_sizes,‘names’,{‘C’,‘S’,‘R’,‘W’},‘discrete’,discrete_nodes,)当然,也可以进行简写,将节点大小和类型与贝叶斯网的建立整合:bnet=mk_bnet(dag,[2,2,2,2],‘names’,{‘C’,‘S’,‘R’,‘W’},‘discrete’,1:4)参数(parameters)条件概率分布CPD最简单的是CPT:条件概率表Tabularnodes列表节点Noisy-ornodes布尔型神经网络节点根节点高斯节点(连续分布)广义线性模型节点确定型多层次离散型等CPT,conditionalprobabilitytables,是作为多为数组存储的。注意:子节点,通常是最后一维;

在MATLAB中,数组索引从1开始,按照惯例false(假)==1,true(真)==2例如:节点w最后一维创建条件概率表CPT=zeros(2,2,2);CPT(1,1,1)=1.0;CPT(2,1,1)=0.1;……CPT(2,2,2)=0.99;

CPT=reshape([1,0.1,0.1···0.99],[2,2,2]);利用tabular_CPDbnet.CPD{C}=tabular_CPD(bnet,C,[0.50.5]);

bnet.CPD{R}=tabular_CPD(bnet,R,[0.80.20.20.8]);

bnet.CPD{S}=tabular_CPD(bnet,S,[0.50.90.50.1]);

bnet.CPD{W}=tabular_CPD(bnet,W,[10.10.10.0100.90.90.99]);Draw_graph(dag)绘制图形推理(Inference)

贝叶斯网络中有许多不同的算法来作为推断的的工具,在速度、复杂性、普遍性和精确性上有不同的表现。BNT因此提供了多种多样的不同的推断引擎。联合树引擎-所有精确推断引擎的根本jtree_inf_engine调用方法:engine=jtree_inf_engine(bnet);推理计算:回到上面,我们已经建立了一个关于草地湿润的例子。洒水器和下雨均可能打湿草坪,现在计算洒水器导致草地湿润的概率。题目中,证据为草地湿润即,W=2。后面杨海滨同学会做详细介绍。evidence=cell(1,N);evidence{W}=2;%证据为W=2[engine,loglik]=enter_evidence(engine,evidence);%把证据添加进引擎marg=marginal_nodes(engine,S);%指定计算S的概率分布marg.T;%计算P(S=1|W=2)与P(S=2|W=2)marg.T(2);%计算P(S=2|W=2)的边缘概率当然,证据也可以是多维数组。marg=marginal_nodes(engine,[SRW]);%指定计算SRW的联合概率分布,也就是P(S,R,W)。无证据情况下结果为:ans(:,:,1)=0.29000.04100.02100.0009ans(:,:,2)=00.36900.18900.0891Evidence(R)=2;marg.T;有证据情况下结果为:ans(:,:,1)=0.08200.0018ans(:,:,2)=0.73800.1782dag=zeros(4,4);dag(1,[23])=1;dag(2,4)=1;dag(3,4)=1;draw_graph(dag);bnet=mk_bnet(dag,[2,2,2,2],'names',{'C',’S',’R',’W'},'discrete',1:4);bnet.CPD{C}=tabular_CPD(bnet,C,[0.50.5]);bnet.CPD{R}=tabular_CPD(bnet,R,[0.80.20.20.8]);bnet.CPD{S}=tabular_CPD(bnet,S,[0.50.90.50.1]);bnet.CPD{W}=tabular_CPD(bnet,W,[10.10.10.0100.90.90.99]);engine=jtree_inf_engine(bnet);evidence=cell(1,4);[engine,loglik]=enter_evidence(engine,evidence);marg=marginal_nodes(engine,[RSW]);marg.T;网络结构参数推理参数学习从完整的数据中进行最大似然参数估计:还是以湿草坪为例:首先,我们用正向采样创建一些训练数据。samples=cell(N,nsamples);fori=1:nsamplessamples(:,i)=sample_bnet(bnet);Enddata=cell2num(samples);然后,Makeatabularasabnet2=mk_bnet(dag,node_sizes);seed=0;rand('state',seed);bnet2.CPD{C}=tabular_CPD(bnet2,C);bnet2.CPD{R}=tabular_CPD(bnet2,R);bnet2.CPD{S}=tabular_CPD(bnet2,S);bnet2.CPD{W}=tabular_CPD(bnet2,W);接着,查找最大似然估计的参数bnet3=learn_params(bnet2,samples);最后,为了查看学习后的参数,我们可以用下面的方法:CPT3=cell(1,N);fori=1:Ns=struct(bnet3.CPD{i});%violateobjectprivacyuhuiCPT3{i}=s.CPT;学习了节点4的参数:dispcpt(CPT3{4})Samples=20,50,100时,节点4的参数越来越接近真实值原概率表参数学习

如果有数据,就不需要手动获取样本,只需要将数据加载即可。加载数据进行参数学习:先将刚刚得到的样本保存为datatest.txt参数学习data=load('datatest.txt');samples=data';bnet2=……dispcpt(EM–数据缺失情况学习结果:CPT4{1}=

0.46700.5330

CPT4{2}=

0.46160.53840.94950.0505CPT4{3}=0.89580.10420.19370.8063CPT4{4}=(:,:,1)=1.00000.10370.09150.0010(:,:,2)=00.89630.90850.9990手动建立简单的贝叶斯网络---调用的函数有:mk_bnettabular_CPDjtree_inf_engine参数学习---完整数据下的最大似然估计、数据缺失下EM算法

简单的样本训练、数据加载及学习

1、MATLAB学习:下载了MATLAB教程课件,边敲代码边记笔记,更加细致地学习了变量及数组相关内容2、本周已初步掌握贝叶斯工具箱的使用:能够对离散型数据进行参数学习与推理。3、银行个人客户数据的测试工作遇到问题:客户数据中有连续型、离散型两种,目前未能对连续型数据进行处理。此外离散型数据中有,如日期(1-30号)、月份(1-12号),年龄(最小18,最大87),通话时长(最短4s,最长3500s)等,如此数据应不能直接用MATLAB测试,就算可以直接测试,效果肯定也不理想,需要进行数据预处理。回顾推理(Inference)BNT提供了多种多样的不同的推断引擎。联合树算法:jtree_inf_engine变量消元算法:var_elim_inf_engine全局推理算法:

enumerative_inf_engine,gaussian_inf_engine,andcond_gauss_inf_engine快速打分算法:quickscore_inf_engine采样算法:likelihood_weighting_inf_engine、gibbs_sampling_inf_engine调用方法:所有推理算法的调用都相同:engine=jtree_inf_engine(bnet);%指定引擎[engine,loglik]=enter_evidence(engine,evidence);%添加证据marg=marginal_nodes(engine,S);%指定需要计算的节点marg.T;显示结果推理举例贝叶斯网络精确推理:计算P(S=2|W=2)的概率var_eli

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论