To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.
root / _FullBNT / BNT / CPDs / @tabular_CPD / log_prior.m @ 8:b5b38998ef3b
History | View | Annotate | Download (468 Bytes)
| 1 |
function L = log_prior(CPD) |
|---|---|
| 2 |
% LOG_PRIOR Return log P(theta) for a tabular CPD |
| 3 |
% L = log_prior(CPD) |
| 4 |
|
| 5 |
switch CPD.prior_type |
| 6 |
case 'none', |
| 7 |
L = 0; |
| 8 |
case 'dirichlet', |
| 9 |
D = CPD.dirichlet(:); |
| 10 |
L = sum(log(D + (D==0))); |
| 11 |
case 'entropic', |
| 12 |
% log-prior = log exp(-H(theta)) = sum_i theta_i log (theta_i) |
| 13 |
fam_sz = CPD.sizes; |
| 14 |
psz = prod(fam_sz(1:end-1)); |
| 15 |
ssz = fam_sz(end); |
| 16 |
C = reshape(CPD.CPT, psz, ssz); |
| 17 |
L = sum(sum(C .* log(C + (C==0)))); |
| 18 |
end |