O raciocínio por trás do Algoritmo Expectation-Maximization

Entendendo as motivações e como o Algoritmo EM funciona

Alexandre Henrique
b2w engineering
Published in
8 min readJun 23, 2021

--

Os algoritmos de clusterização desempenham um papel importante na compreensão dos dados. Entender relacionamentos complexos e detectar semelhanças entre milhares de registros em um conjunto de dados usando apenas ferramentas de visualização é uma tarefa praticamente impossível, principalmente no contexto de dados multidimensionais.

Em geral, tais algoritmos carregam consigo uma série de suposições sobre qual fenômeno probabilístico gerou os dados que eventualmente serão processados.

Neste artigo, vamos falar sobre os aspectos estatísticos do Algoritmo Expectation-Maximization (EM). Durante a leitura, será possível perceber que essa técnica é empregada em problemas de estimativa de densidade. Tais problemas visam representar os dados em uma forma compacta utilizando uma distribuição estatística como Gaussiana, Beta ou Gama.

Podemos pensar nesses problemas como uma tarefa de agrupamento, com uma ótica probabilística. Isso é o que torna o Algoritmo EM um modelo generativo probabilístico.

A expressão “modelo generativo probabilístico” refere-se a um modelo de agrupamento que, em vez de fazer uma atribuição “hard”, onde um cluster é atribuído para cada ponto de dados (por exemplo, K-Means), é referenciada a probabilidade que um determinado ponto pertença a cada cluster, configurando uma atribuição “soft”.

No entanto, sabemos que apenas uma distribuição gaussiana não é capaz de mapear milhares de instâncias de um dataset em K clusters precisamente, nem qualquer outra distribuição sozinha seria. Precisamos de um ferramental mais robusto para isso.

Como você pode ver no gráfico abaixo, neste exemplo precisaríamos de pelo menos 3 clusters para segmentar os dados de maneira viável. Nesse contexto, iniciando nossa discussão, vamos falar sobre Modelos de Mistura (MM) — mais especificamente, Modelos de Mistura de Gaussianas (MMG).

Plot of three different clusters on a cartesian-plane with different centers and unit variance
Dataset com 3 clusters

Modelos de Mistura (de Gaussianas)

A construção de um modelo estimador de densidade não pode ser limitada a apenas uma função de densidade de probabilidade. Os Modelos de Misturas lidam com essa limitação, combinando um conjunto de distribuições para criar um espaço convexo de busca de parâmetros ótimos para tais distribuições, baseando-se na Estimativa de Máxima Verossimilhança (EMV).

Modelos de Mistura

Um Modelo de Misturas é expresso pelas seguintes equações:

Modelo de Mistura

Onde, K é o número de componentes do modelo (clusters), πⱼ representa o peso do j-ésimo componente no modelo, e cada pⱼ(x) é um membro de uma família de distribuições (Gaussianas, Poisson, Bernoulli, etc.).

Consequentemente, um Modelo de Mistura de Gaussianas (MMG) é um Modelo de Mistura tal que a combinação linear de todos os pⱼ(x) forma uma combinação finita de distribuições gaussianas. Matematicamente, define-se da seguinte forma:

Modelo de Mistura de Gaussianas

Onde θ é a coleção de todos os parâmetros do modelo (pesos, médias, e matrizes de covariância de cada componente):

Conjunto de parâmetros de um MMG

A partir desta combinação de distribuições convexas, obtemos uma ferramenta poderosa para representar dados multimodais. O plot a seguir mostra a aparência de um MMG derivado de 3 componentes:

Gráfico de um MMG com 3 componentes

Por design, para cada ponto de dados, x (em vermelho), pode-se calcular a probabilidade que ele pertença a cada componente (realizar uma atribuição “soft”), que será nominada futuramente como responsabilidade.

Por último, a equação (3) fornece a verossimilhança de um ponto x em um MMG. Neste caso particular, podemos reescrevê-la assim:

Exemplo de MMG com 3 componentes

Encontrando os parâmetros ótimos de um MMG

Suponha que temos um conjunto de dados X de n pontos independentes e distribuídos de forma idêntica (i.d.i.):

Dataset of n pontos d-dimensionais

O objetivo de um MMG é representar a distribuição desses dados da maneira mais precisa possível. Para chegar a tal representação, é necessário estimar os parâmetros do MMG de forma a maximizar a sua verossimilhança com respeito ao conjunto de parâmetros θ.

Como as amostras são i.d.i, o estimador da máxima verossimilhança sobre X pode ser obtido pelo produto das verossimilhanças individuais de cada ponto. Em outras palavras, podemos expressar a sentença anterior da seguinte maneira — aplicando ainda a função logarítmica para simplificar as equações:

Logaritmo da verossimilhança dos dados com respeito a θ

Pela equação (3), sabemos que p(xᵢ|θ) é uma combinação linear de distribuições Gaussianas. Portanto, usando (3) em (5), temos:

Forma explícita do Logaritmo da verossimilhança dos dados com respeito a θ

Infelizmente, não há solução analítica para a equação (6). Isto é, não existe uma solução fechada para encontrar os parâmetros ótimos em θ, mesmo que se recorra ao procedimento padrão de tomar a derivada de (6) com relação a θ e iguale-a a zero. As equações (7–9) nos mostram como poderíamos fazer isso:

Conjunto de equações definidas para maximizar o logaritmo da verossimilhança dos dados com respeito a θ

Note que o cálculo de cada parâmetro de θ (μ’s, Σ’s, π’s) depende dos demais parâmetros de uma maneira complexa. É por essa razão que não há solução fechada para essas equações.

No entanto, é possível resolver as equações (7–9) de maneira iterativa, otimizando alguns parâmetros enquanto os demais são mantidos fixos. É com esta motivação que vamos falar do Algoritmo Expectation-Maximization (EM).

O Algoritmo EM

Antes de entrar nos detalhes de como se dá o processo iterativo de encontrar os parâmetros ótimos de um MMG — descrito pelo Algoritmo EM, vamos definir uma quantidade crucial que nos possibilitará reescrever as equações de forma compacta.

Responsabilidades (passo E)

Como vimos anteriormente, um MMG é constituído de várias distribuições gaussianas. A parcela de contribuição de cada Gaussiana sobre a verossimilhança total de um ponto em relação ao MMG é chamada de responsabilidade.

A responsabilidade rᵢⱼ pode ser interpretada como a probabilidade posterior de que o ponto xᵢ tenha sido gerado pelo cluster j. De maneira simples, rᵢⱼ é a probabilidade de que o j-ésimo componente do modelo gerou o ponto xᵢ. Matematicamente, as responsabilidades são dadas pela equação:

Responsabilidades

Perceba que para calcular cada responsabilidade, precisamos já conhecer o conjunto de parâmetros θ. Portanto, para cada ponto xᵢ, teremos K responsabilidades, que pode ser expresso como um vetor K-dimensional, onde cada posição indica a probabilidade que o ponto xᵢ pertença a cada componente do modelo.

Além disso, da equação (10), ainda podemos definir a responsabilidade total do j-ésimo componente do modelo sobre todo o dataset:

responsabilidade total do j-ésimo componente do modelo sobre todo o dataset

Estimando os parâmetros de um MMG (passo M)

Não vamos abordar aqui todos os detalhes das provas de como os parâmetros ótimos de um MMG são aprendidos de maneira que o logaritmo da verossimilhança seja maximizado com relação a θ, pois elas são longas e merecem um post para si mesmas.

Formalmente, há uma maneira consistente de atualizar os parâmetros individuais de um MMG dados parâmetros μ’s, Σ’s, e π’s inicializados aleatoriamente. As equações (12–14) descrevem como se dá a atualização desses parâmetros:

Atualização dos parâmetros de um MMG

Note que a atualização de μ, Σ, e π depende das responsabilidades (rᵢⱼ), que por sua vez, dependem de μ, Σ, e π. Por esse motivo não há uma solução fechada para as equações (7–9).

Adicionalmente, as equações (12–14) não buscam maximizar precisamente o logaritmo da verossimilhança sobre θ, dado pela equação (6). Na verdade, essas equações buscam maximizar uma função auxiliar do logaritmo da verossimilhança, a esperança do logaritmo da verossimilhança, que é derivado da equação (6), usando a desigualdade de Jensen. Essa função auxiliar é dada por:

A esperança completa do logaritmo da verossimilhança

Processo iterativo

O que vimos até este ponto, nos remete a um processo iterativo que pode nos ajudar a resolver o problema de encontrar um conjunto de parâmetros ótimos (locais) θ, o Algoritmo EM.

O Algoritmo EM tem esse nome porque ele consiste em um processo iterativo que alterna entre duas etapas:

Na primeira etapa é realizado o cálculo das responsabilidades individuais (passo E) de cada cluster sobre cada ponto usando os parâmetros (μ, Σ, e π). Na segunda etapa, os parâmetros são atualizados de forma a maximizar a esperança do logaritmo da verossimilhança (passo M) dado pela equação (15).

Os passos E e M são repetidos até que não haja mudança significativa na esperança do logaritmo da verossimilhança, que é calculado sempre após o passo M. Resumindo, o procedimento pode ser descrito como a seguir:

Responsabilidades
Atualização dos parâmetros de um MMG
A esperança completa do logaritmo da verossimilhança

Este procedimento garante que a esperança do logaritmo da verossimilhança cresça monotonicamente.

O Algoritmo EM foi pensado para ser usado em dados multidimensionais. No entanto, para propósitos de visualização, escrevi o código do algoritmo em Python e usei ele para clusterizar um dataset unidimensional. Os resultados obtidos estão na animação abaixo:

EM algorithm running example

Pode-se ver que o algoritmo levou 41 iterações para convergir definitivamente. No gráfico à direita, podemos ver a evolução da esperança do logaritmo da verossimilhança, aumentando lentamente até eventualmente parar. O código deste exemplo está disponível no meu GitHub.

Considerações finais

O Algoritmo EM é bastante sensível à inicialização dos parâmetros. O que algumas pessoas recomendam que se faça é primeiro executar o Algoritmo K-Means (pois ele tem um baixo custo computacional) e usar os centros finais como as médias iniciais do Algoritmo EM. Fazendo isso, reduz-se substancialmente o número de iterações que o Algoritmo EM levaria para convergir. Adicionalmente, pela minha experiência, é mais fácil encontrar o número apropriado de clusters que deve ser adotado para segmentar o problema usando o K-Means.

O Algoritmo EM é considerado melhor que o K-means porque ele fornece não apenas a informação do centro dos clusters, mas também a informação da dispersão dos dados (variâncias) em torno dos centros.

Além disso, é relativamente fácil adaptar o Algoritmo EM ao setup original do problema de filtros colaborativos para sistemas de recomendação.

Referências

  1. Machine Learning with Python: from Linear Models to Deep Learning, a course by MITx.
  2. Mathematics for Machine Learning, by Marc Peter Deisenroth, A. Aldo Faisal, and Cheng Soon Ong.

Se você busca uma oportunidade de desenvolvimento, trabalhando com inovação em um negócio de alto impacto, acesse o portal B2W Carreiras! Nele, você consegue acessar todas as vagas disponíveis. Venha fazer parte do nosso time!

--

--