C# Bayesian Network Client Library
Bayesian Networks, particularly in its Naive (or Idiotic, as some angry physicist might call it), is an absolutely amazing and intuitive way for reasoning with a Probabilistic Network model. The Bayesian model has been heavily used across a wide array of industries, even though the Naive model is very much a simplistic view of what an actual Bayesian model might looks like, it is still a very practical approximation that has gained a lot of popularity in fields such as classifications and segmentations. This post introduces a client library for running reasoning patterns on a custom-built Bayesian Network.
I was having a nosey yesterday trying to see if there is any out-of-the-box algorithmic implementation that leverage a Bayesian reasoning pattern of a probabilistic network, and surely enough, I found Infer.Net Probabilistic Modelling Library.
This is a very cool and comprehensive implementation of probabilistic modeling, and (from the looks of it) is already being used in a commercial capacity.
The library itself is very extensible, and makes building and reasoning within any network based probability model very easy, obviously it is intended for running inference on a Bayesian Network, but you can easily reduce it to a Naïve Bayesian through building the independency reasoning patterns you get with this type of modeling. Basically save you from the tedious task of having to compute the probability space, and I think it even gives you the flow of probabilistic influence given a model, which is a pretty cool feature.
It is important to denote that although a Naïve Bayesian approach to probabilistic modelling provides a very healthy approximation, the strong independence assumption such a model assumes will reduce performance when many features are strongly correlated, this is because a Naïve Bayesian model assumes (through its design pattern) that all features in the model are independent, which is why the model is referred to as Naïve (or sometimes Idiotic) Bayesian model.
Anyway I hope this gives you a good starting point to start playing about with Probabilistic Modelling, the Infer.Net library itself comes in many different .NET languages (such as C++, F# or C#), and is probably to a certain degree being used in Bing Search (and many other Microsoft products) to perform some inference tasks.
Leave a ReplyWant to join the discussion?
Feel free to contribute!