Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bayesian networks in Scala [closed]

I'm looking for a library to create Bayes nets and perform learning and inference on them in Scala (or Java, in case of lack of a better solution). The library should be actively maintained, performant, preferably easy, definitely well-documented unless the usage is really straightforward. Free, open-source and commercial alternatives are ok, but for commercial solutions a free trial is required.

An ideal solution would be the equivalent of what in the .NET world is Infer.NET by Microsoft Research, but more documented.

Thanks in advance!

like image 493
em70 Avatar asked Feb 02 '12 12:02

em70


3 Answers

You might want to look into SMILE. It is free and has Java API. Other free options in Java are UnBBayes and SamIam.

  • SMILE

    SMILE (Structural Modeling, Inference, and Learning Engine) is a fully portable library of C++ classes implementing graphical decision-theoretic methods, such as Bayesian net-works and influence diagrams, directly amenable to inclusion in intelligent systems.

  • UnBBayes

    UnBBayes is a probabilistic network framework written in Java. It has both a GUI and an API with inference, sampling, learning and evaluation. It supports BN, ID, MSBN, OOBN, HBN, MEBN/PR-OWL, PRM, structure, parameter and incremental learning.

  • SamIam

    Samiam includes two main components: a graphical user interface and a reasoning engine. The graphical interface lets users develop Bayesian network models and save them in a variety of formats. The reasoning engine supports many tasks including: classical inference; parameter estimation; time-space tradeoffs; sensitivity analysis; and explanation-generation based on MAP and MPE.

Pure Scala and free options are FACTORIE (already mentioned) and Figaro. But Figaro currently lacks learning part.

  • Figaro - Probabilistic Modeling

    Figaro models are data structures in the Scala programming language, which is interoperable with Java, and can be constructed, manipulated, and used directly within any Scala or Java program.

like image 100
Sasha Kazachonak Avatar answered Sep 28 '22 17:09

Sasha Kazachonak


FACTORIE is a young project, but it fits the bill and is implemented in Scala:

FACTORIE is a toolkit for deployable probabilistic modeling, implemented as a software library in Scala. It provides its users with a succinct language for creating relational factor graphs, estimating parameters and performing inference.

It's developed by Andrew McCallum and his lab at UMass, who are also responsible for the hugely useful MALLET machine learning toolkit.

like image 27
Travis Brown Avatar answered Sep 28 '22 18:09

Travis Brown


Perhaps Banjo fits the bill? I'm not sure how actively it is developed, but I know it has been around for at least a few years ... (never used it myself).

Banjo: Bayesian Network Inference with Java Objects

like image 35
Steve Lianoglou Avatar answered Sep 28 '22 16:09

Steve Lianoglou