⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bethe_free_energy.m

📁 贝叶斯算法(matlab编写) 安装,添加目录 /home/ai2/murphyk/matlab/FullBNT
💻 M
字号:
function loglik = bethe_free_energy(engine, evidence)% BETHE_FREE_ENERGY Compute Bethe free energy approximation to the log likelihood% loglik = bethe_free_energy(engine, evidence)%% The Bethe free energy is given by an exact energy term and an approximate entropy term.% Energy%  E = -sum_f sum_i b(f,i) ln theta(f,i)% where b(f,i) = approximate Pr(family f = i) % and theta(f,i) = Pr(f = i)% Entropy%  S = H1 - H2%  H1 = sum_f sum_p H(b(f))% where b(f) = belief on family f, H(.) = entropy%  H2 = sum_n (q(n)-1) H(b(n))% where q(n) = num. neighbors of n%% This function was written by Yair Weiss, 8/22/01.hidden = find(isemptycell(evidence));bnet = bnet_from_engine(engine);N = length(bnet.dag);add_ev = 1;E=0;H1=0;H2=0;loglik=0;for n=1:N  ps=parents(bnet.dag,n);  if (length(ps)==0) % root node    qi=length(children(bnet.dag,n))-1;  else    qi=length(children(bnet.dag,n));  end  bf = marginal_family(engine, n, add_ev);  bf = bf.T(:);  e = bnet.equiv_class(n);  T = CPD_to_CPT(bnet.CPD{e});  T = T(:);  E = E-sum(log(T+(T==0)).*bf);  if length(ps) > 0    % root nodes don't count as fmailies    H1 = H1+sum(log(bf+(bf==0)).*bf);  end    bi = marginal_nodes(engine, n, add_ev);  bi = bi.T(:);  H2 = H2+qi*sum(log(bi+(bi==0)).*bi);endloglik=E+H1-H2;loglik=-loglik;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -