Probayes

ProBT Library API


The ProBT® Library API is an Application Program Interface available in C++ and Python. It runs in the most common systems: Linux/Unix, Windows, and MacOS X.

This API is a set of native C++ classes allowing the construction of Bayesian models and their use for learning and inference. The Python API provides bindings for the C++ native classes. This API comprises:

  1. A state space module allowing to specify the possible outcomes of a model.
  2. A probability distributions module including the most commonly used statistical distributions, joint distributions construction and n-dimensional inequality constraint specification.
  3. A Bayesian programs module including some of the more common Bayesian models.
  4. An experimental data learning module for parameters identification of the commonly used statistical distributions and/or the dependencies between the variables of the model.
  5. A serialization module is intended to saving or transmitting ProBT objects, for example, onto a file, a memory buffer or across a network connection link.

Once the Bayesian model constructed, the user can “ask” all the possible inference problems of the form P(Variables | Evidence). The API will call ProBT-Engine in order to execute all the probability calculus required to answer the question. The Figure below shows a global view of the ProBT Library API classes modules.

Sample Spaces Module

A Bayesian model requires a representation for the model outcomes. These outcomes are represented by a conjunction or set of variables. Three kinds of elements are involved in the definition of a sample space: (i) the type of the variables, (ii) the variables and (ii) the values of the variables. The sample space module allows the definition of these three kinds of objects.

Probability Distributions Module

This module contains classes allowing the representation of distributions. Four main objects are identified:

Built-in distributions are the elementary probability calculus primitives for which all their functionalities are predefined.

A joint distribution is constructed by means of a set of distributions and it represents the main source to infer other distributions. Inferences from a joint distribution are obtained by applying the Bayes’s Law at the ProBT-Engine.

Inferred distributions are obtained by means of other distributions, for example by making a question to a joint distribution. These objects are exclusively constructed by the ProBT® BE.

Finally, the user defined distributions are those distributions in which the user defines the density probability function.

Built in Bayesian Program Module

This module is intended to include the more common Bayesian models (HMM, Filters, Kalman Filter, etc) so that the user can quickly test his application. Indeed, the structure for some Bayesian models is well-defined and the only difference between two models (belonging to the same class of problem) are the probability distributions.

Learning Module

Learning from data is a central issue when using Bayesian methods. It concerns the estimation of the free parameters of probability distributions of a Bayesian model, and/or the dependencies between the variables of the model possibly under a set of constraints.

Serialization Module

Serialization is intended to saving or transmitting the API objects, for example, onto a file, a memory buffer or across a network connection link. Serialization allows the reconstruction of ProBT© objects that have been constructed in the past by the execution of a third program. The main goal is to reuse these objects into other programs or processors for incremental modelling and computation, or for their transmission as a “ready-to-use” program. The ProBT Library API allows the serialization of its objects in XML format.