Bims (Bayesian inference over model structures) implements MCMC learning over statistical models defined in the Dlp (Distributional logic programming) probabilistic language.
Bims is released under GPL2, or Artistic 2.0
Currently there are 2 model spaces supported:
Additional model spaces can be easily implemented by defining new likelihood plug-ins and programming appropriate priors.
?- bims( [] ). ?- bims( [data(carts),models(carts),likelihood(carts)] ).
The above are two equivalent ways to run the Carts example provided.
This runs 3 chains each of length 100 on the default Carts data using the default likelihood. The default dataset is the breast cancer Winsconsin (BCW) data from the machine learning repository. There are 2 categories, 9 variables and 683 data points in this dataset. You can view the data with
?- edit( pack(bims/data/carts) ).
The default likelihood is an implementation of the classification likelihood function presented in: H Chipman, E George, and R McCulloch. Bayesian CART model search (with discussion). J. of the American Statistical Association, 93:935â960, 1998.
?- bims( [models(bns)] ). ?- bims( [data(bns),models(bns),likelihood(bns)] ).
The above are two equivalent ways to run the Bns example provided.
This runs 3 chains each of length 100 on the default bns data using default likelihood. The dataset is a sampled dataset from the ASIA network and it comprises of 8 variables and 2295 datapoints. You can view the data with
?- edit( pack(bims/data/bns) ).
The default BN likelihood is an instance of the BDeu metric for scoring BN structures.
W. L. Buntine. Theory refinement of Bayesian networks. In Bruce DâAmbrosio, Philippe Smets, and Piero Bonissone, editors, Proceedings of the Seventh Annual Conference on Uncertainty in Artificial Intelligence (UAIâ1991), pages 52â60, 1991
David Heckerman, Dan Geiger, and David M. Chickering. Learning Bayesian networks: The combination of knowledge and statistical data. Machine Learning, 20(3):197â243, 1995.
An easy way to run Bims on your data is to create a new directory and within that sub-directory data/ copy your data there and pass options data/1 to the basename of the data file.
For example,
?- bims( data(mydata) ).
By defining a new likelihood function and new priors the system can be used on new statistical models.
If the argument (File) corresponds to an existing file, then it is taken to be a settings file. Each argument should be a fact correspond to a known option. For example
chains(3). iterations(100). seeds([1,2,3]).
If the argument (Opts) does not correspond to a file is take to be a list of option terms.
The simplest way to use the software is to make a new directory and run some MCMC chains. The default call,
?- bims(). % equivelant to ?- bims([]).
runs a 3 chains (R=3, below) 100 iterations (I=100) MCMC simulation. The models learnt are classifications trees (carts) based on the default prior and the data are the BCW dataset. The above call is equivelant to:
?- bims([models(carts)]).
To run a toy BN learning example run
?- bims( [models(bns)] ).
This runs 3 chains on some synthetic data of the 8-nodal Asia BN.
To get familiar on how to run bims on private data, make a new directory,
create a subdirecory data
and copy file bims(data/asia.pl)
to
data/test_local.pl
.
?- bims( [data(test_local)] ).
Opts
bns
.debug(bims)
to get debuging messages. If Dbg==false, nodebug(bims)
is called.seeds(1)
when chains(3)
is given expands to seeds([1,2,3])
.top_goal(Top)
) expects. In general the dependency is with the likelihood,
with the prior expected to be compatible with what the likelihood dictates in terms of data.
In the likelihoods provided, Data is the stem of a filename that is loaded in memory.
The file is looked for in Dir/Data[.pl] where Dir is looked for in [./data,bims(Model/data/)].bims(dlps)
.prefix(Pfx)
recognition)all
is expanded to reporting all known reportable terms.All file name based options: Lk, Data, Prior or Rdir, are passed through absolute_file_name/2.
The predicate generates one results directory (Rdir) and files recording information about each run (R) are placed in Rdir.
date(Y,M,D)
.
?- bims_version(Vers, Date). Vers = 2:5:0, Date = date(2022, 1, 2).
bibtex(Type,Key,Pairs)
term of the same publication.
Produces all related publications on backtracking.
?- bims_citation( A, G )
, write( A )
nl.
Distributional Logic Programming for Bayesian Knowledge Representation.
Nicos Angelopoulos and James Cussens.
International Journal of Approximate Reasoning (IJAR).
Volume 80, January 2017, pages 52-66.