# The EM Algorithm

In this chapter, we're going to introduce a very important algorithmic framework for many statistical learning tasks: the **Expectation Maximization** (**EM**) algorithm. Contrary to what its name might suggest, this is not an algorithm used to solve a single problem, but a methodology that can be applied in several contexts where the objective of the algorithm is learning the structure of the data-generating process through an iterative and flexible approach. Generative models, for example, are extremely powerful tools that help the data scientist in describing the existing data and generating new data. Unfortunately, direct optimization of these models is often impossible.

The EM algorithm, on the other hand, can often be applied with a minimum of effort. The goal of this chapter is to explain the rationale of this method and show the mathematical derivation, together with some practical examples. In particular, we are going to discuss the following topics...