Flexibility: This ease of use does not come at the cost of reduced flexibility. Given that pymc-learn integrates with PyMC3, it enables you to implement anything you could have built in the base language.

However, usage of PPLs requires a specialized understanding of probability
theory, probabilistic graphical modeling, and probabilistic inference. Some PPLs
also require a good command of software coding. These requirements make it
difficult for non-specialists to adopt and apply probabilistic machine learning
to their domain problems.

Pymc-learn seeks to address these challenges by providing state-of-the art
implementations of several popular probabilistic machine learning models.
It is inspired by scikit-learn (Pedregosa et al., 2011) and focuses on
bringing probabilistic machine learning to non-specialists. It puts emphasis
on:

ease of use,

productivity,

fexibility,

performance,

documentation, and

an API consistent with scikit-learn.

The underlying probabilistic models are built using pymc3 (Salvatier et al., 2016).

PyMC3 is a Python package for probabilistic machine learning that enables users
to build bespoke models for their specific problems using a probabilistic
modeling framework. However, PyMC3 lacks the steps between creating a model and
reusing it with new data in production. The missing steps include: scoring a
model, saving a model for later use, and loading the model in production
systems.

In contrast, scikit-learn which has become the standard
library for machine learning provides a simple API that makes it very easy for
users to train, score, save and load models in production. However,
scikit-learn may not have the model for a user’s specific problem.
These limitations have led to the development of the open
source pymc3-models library which provides a template to build bespoke
PyMC3 models on top of the scikit-learn API and reuse them in
production. This enables users to easily and quickly train, score, save and
load their bespoke models just like in scikit-learn.

The pymc-learn project adopted and extended the template in pymc3-models
to develop probabilistic versions of the estimators in scikit-learn.
This provides users with probabilistic models in a simple workflow that mimics
the scikit-learn API.

Today, many data-driven solutions are seeing a heavy use of machine
learning for understanding phenomena and predictions. For instance, in cyber security,
this may include monitoring streams
of network data and predicting unusual events that deviate from the norm.
For example, an employee downloading large volumes of intellectual property
(IP) on a weekend. Immediately, we are faced with our first challenge,
that is, we are dealing with quantities (unusual volume & unusual period)
whose values are uncertain. To be more concrete, we start off very uncertain
whether this download event is unusually large and then slowly get more and
more certain as we uncover more clues such as the period of the week,
performance reviews for the employee, or did they visit WikiLeaks?, etc.

In fact, the need to deal with uncertainty arises throughout our increasingly
data-driven world. Whether it is Uber autonomous vehicles dealing with
predicting pedestrians on roadways or Amazon’s logistics apparatus that has to
optimize its supply chain system. All these applications have to handle and
manipulate uncertainty. Consequently, we need a principled framework for
quantifying uncertainty which will allow us to create applications and build
solutions in ways that can represent and process uncertain values.

Fortunately, there is a simple framework for manipulating uncertain
quantities which uses probability to quantify the degree of uncertainty.
To quote Prof. Zhoubin Ghahramani, Uber’s Chief Scientist and Professor of AI
at University of Cambridge:

Just as Calculus is the fundamental mathematical principle for calculating
rates of change, Probability is the fundamental mathematical principle for
quantifying uncertainty.

The probabilistic approach to machine learning is an exciting area of research
that is currently receiving a lot of attention in many conferences and Journals
such as NIPS, UAI,
AISTATS, JML,
IEEE PAMI, etc.