Antonino Freno
freno

dii.unisi.it
http://www.dii.unisi.it/~freno/
JProGraM - PRObabilistic GRAphical Models in Java
Project Overview
JProGraM is an open-source Java library which can
be used for learning the following probabilistic models from data:
Bayesian networks, Markov random fields, hybrid random fields,
probabilistic decision trees, dependency networks, Gaussian mixture
models, and Parzen windows.
Along with learning algorithms, some simple inference methods are also
supported by JProGraM. JProGraM is free software: it is released under
the GNU General
Public License. It is not yet as polished as I would like it
to be, and there is no proper documentation, but it works pretty well,
and it should be especially useful for research purposes. If you would
like to contribute to the development of JProGraM, please contact me.
Some ideas for extending the project are listed below. The JProGraM
project is also hosted at SourceForge.net.
The source code of JProGraM can be downloaded
from here
(as a gzipped tarball). For convenience, the tarball also includes some
other open-source libraries that are called within JProGraM. In
particular, along with JProGraM you're going to download (parts of) WEKA,
JGraphT,
and the L-BFGS implementation provided by the RISO project.
The L-BFGS method is called by JProGraM using a wrapper written by Jacob
Eisenstein.
For more information concerning the models and
algorithms implemented by JProGraM, you can have a look at my Ph.D.
dissertation. If you want to refer to JProGraM in a publication, please
refer to my dissertation (BibTeX)
and/or to this website.
Project Ideas
- Higher-priority projects:
- Graphical user interface.
Creating a GUI for JProGraM would be an excellent way of making the
library also usable as a stand-alone application for statistical
machine learning. Also, in order for a GUI to work smoothly, it is
necessary to standardize the format of the datasets used by JProGraM's
learning algorithms, since training sets are currently not represented
uniformly across the implemented algorithms.
- Command line interface.
Creating a CLI for JProGraM would be another way of making the library
also usable as a stand-alone application for statistical machine
learning. Moreover, it is necessary to standardize the format of the
datasets used by JProGraM's learning algorithms, since training sets
are currently not represented uniformly across the implemented
algorithms.
- Lower-priority projects:
- Inference algorithms.
Currently, Markov chain Monte Carlo (in particular Gibbs sampling) is
the only inference algorithm supported by JProGraM. Implementing more
inference methods (e.g. belief propagation techniques) would be very
useful.
- Learning algorithms.
Adding more structure/parameter learning algorithms for Bayesian
networks and Markov random fields would be great (both in terms of
search algorithms and scoring functions).
- Continuous domains.
Adding support for learning/inference in continuous domains would be
great, e.g. by implementing Gaussian Bayesian networks.

