Aula 4: Modelos de Mistura Gaussiana e o Algoritmo EM

Aprendizado Não Supervisionado

Marcos M. Raimundo — Instituto de Computação, UNICAMP

2026-09-07

Revisão e Introdução

Da Aula 3: O Que Já Temos

Cluster = componente conexa de \(L_\lambda=\{\mathbf{x}:p(\mathbf{x}) \ge\lambda\}\). Construído via \(d_{\mathrm{mreach}}\) + MST + persistência na árvore condensada — o HDBSCAN.

No Breast Cancer Wisconsin (radius_worst/concave points_worst, sem rótulo): \(54\) pacientes \(100\%\) malignos num cluster; \(347\) \(\approx90{,}8\%\) benignos noutro; \(168\) (\(\approx29{,}5\%\)) viram ruído. ARI \(=0{,}644\) (excl. ruído) / \(0{,}493\) (incl. ruído).

Nota

Limitação estrutural: o HDBSCAN entrega uma partição rígida — cada paciente é de um cluster, ou é ruído. Sem meio-termo.

Ideia Central

Rigidez é uma escolha do método, não um fato necessário sobre os dados. Se duas populações se sobrepõem numa faixa contínua — sem vale de densidade genuíno — forçar um rótulo único esconde informação real.

Troca proposta: em vez de “a qual cluster pertence?”, perguntar “com que probabilidade pertence a cada cluster?” Mesma tarefa, resposta relaxada.

Roteiro da Aula

1. O que significa “nascer de uma entre \(K\) populações”, sem saber qual?

2. Como transformar essa incerteza numa probabilidade concreta por ponto?

3. Como usar essas probabilidades para reajustar os parâmetros do modelo — por que isso é iterativo?

4. Isso generaliza o KMeans já conhecido, ou é outra coisa?

Problema Motivador

Dos \(168\) pacientes marcados como ruído na Aula 3, \(126\) eram malignos e \(42\) benignos — o HDBSCAN não tem vocabulário para dizer mais nada sobre eles.

E se, em vez de “ruído”, cada um recebesse dois números: a probabilidade de vir do grupo mais maligno, e a de vir do mais benigno, somando \(1\)? É exatamente o que o GMM produz — construído do zero a partir daqui.

Pergunta

Um paciente marcado como ruído pelo HDBSCAN não pertence a nenhuma componente conexa de alta densidade nos dois atributos usados. Isso significa que ele é igualmente parecido com as duas populações (benigna e maligna), ou pode significar outra coisa?

  • □ Um paciente marcado como ruído pode, sob um modelo de mistura gaussiana ajustado aos mesmos dados, receber uma responsabilidade bem próxima de \(1\) para um único componente — “estar num vale geométrico local” e “ter atribuição probabilística ambígua sob um modelo global” não são a mesma coisa.
  • □ Se um paciente recebe responsabilidade exatamente \(0{,}5\) para cada um dos dois componentes de um GMM, isso implica necessariamente que ele está geometricamente equidistante das duas médias \(\mu_1\) e \(\mu_2\) na distância euclidiana bruta.
  • □ Se as duas populações gaussianas subjacentes tivessem exatamente a mesma média e a mesma matriz de covariância (colapsando numa única gaussiana), a responsabilidade de qualquer ponto para cada componente seria exatamente \(\pi_k\) (o peso de mistura), independente da posição do ponto.
  • □ Numa aplicação de perfil de consumo em que um cliente compra tanto itens “econômicos” quanto “premium” em proporções parecidas, um GMM ajustado ao histórico de gastos tenderia a atribuir a esse cliente responsabilidades intermediárias a ambos os segmentos, enquanto uma regra de corte único baseada em densidade local tenderia a isolá-lo como ruído ou a forçá-lo para um segmento só.

Resposta

Resposta — ruído do HDBSCAN vs. ambiguidade do GMM

  • ✔ Vale geométrico local \(\ne\) ambiguidade probabilística global — um ponto pode escapar da densidade local exigida pelo HDBSCAN e, ainda assim, ficar claramente mais próximo de um componente sob o GMM.
  • ✗ Responsabilidade \(0{,}5/0{,}5\) depende da densidade ponderada por \(\pi_k\) e \(\Sigma_k\), não só da distância euclidiana bruta às médias — covariâncias ou pesos diferentes deslocam o ponto de equilíbrio.
  • ✔ Com densidades idênticas nos dois componentes, o termo de densidade cancela na razão de Bayes, sobrando só \(\pi_k\) — verdade para qualquer \(\mathbf{x}\).
  • ✔ A mesma lógica de “sobreposição contínua pede resposta contínua” transfere para qualquer domínio com segmentos que se misturam, não só para pacientes.

Voltando à pergunta: os dois métodos respondem perguntas diferentes — um mede densidade local geométrica, o outro mede probabilidade sob um modelo global. O resto da aula constrói esse segundo modelo.

Intuição — Duas Nuvens

O Resultado Final, Antes da Matemática

Mesmos \(569\) pacientes, mesmos dois atributos padronizados (radius_worst, concave points_worst) da Aula 3.

Esquerda: HDBSCAN — cor sólida por ponto (azul/laranja/vermelho para ruído).

Direita: GMM com \(2\) componentes — cor misturada, interpolada por probabilidade de pertencimento; mais roxo = mais ambíguo.

Duas Diferenças Estruturais

GMM nunca descarta ninguém — os \(168\) pacientes que viraram ruído na Aula 3 aparecem à direita com uma cor, ambígua ou não.

Cor não é binária — gradiente contínuo azul↔︎laranja; os \(9\) pacientes circulados (responsabilidade \(\approx0{,}5/0{,}5\)) são sobreposição real, não confusão do algoritmo.

Nota

Ambiguidade vira uma quantidade calculável — um número por componente, somando \(1\) por paciente. Falta nomear de onde vem, e como o modelo (posição/formato das nuvens) é ajustado — Blocos 3 a 6.

Pergunta

Os 9 pacientes circulados no painel direito têm responsabilidade próxima de 50/50. Isso significa que o modelo “não sabe nada” sobre eles, no mesmo sentido em que uma moeda não viciada “não sabe” se vai dar cara ou coroa?

Dica: pense na diferença entre “incerteza sobre um evento futuro aleatório” (a moeda) e “incerteza sobre um fato já determinado, mas desconhecido” (a origem populacional de um paciente que já existe).

  • □ A responsabilidade \(50/50\) de um paciente reflete a melhor estimativa do modelo sobre um fato já fixado (o paciente pertence, de fato, a uma população só) — diferente da moeda, cujo resultado ainda não existe no momento da previsão.
  • □ Aumentar o número de atributos usados no ajuste do GMM (de \(2\) para, digamos, \(10\)) necessariamente reduziria a responsabilidade ambígua desses \(9\) pacientes específicos, porque mais informação sempre reduz ambiguidade estatística em qualquer situação.
  • □ Um paciente com responsabilidade \(50/50\) contribui, no Passo M (ainda não visto), com metade do seu peso para a reestimação de cada um dos dois componentes — ele não é ignorado, é dividido.
  • □ Se o GMM verdadeiro subjacente aos dados tivesse apenas \(1\) componente (não \(2\)), esperaríamos ver muito mais pacientes com responsabilidade próxima de \(50/50\) do que os \(9\) observados aqui.

Resposta

Resposta — o que significa responsabilidade 50/50

  • ✔ É incerteza sobre um fato já determinado (de qual população o paciente veio), não sobre um evento aleatório futuro — a moeda é uma analogia imperfeita.
  • ✗ Mais atributos não garante menos ambiguidade para pontos específicos — pode até aumentar (maldição da dimensionalidade, Aula
    1. ou revelar que a sobreposição é real em mais dimensões também.
  • ✔ Responsabilidade fracionária = peso fracionário no Passo M — nunca descartado, sempre dividido proporcionalmente.
  • ✔ Com um único componente verdadeiro, todo mundo tenderia a responsabilidade \(\approx\pi_k\) (Bloco 3) — muito mais gente perto de \(50/50\) do que os \(9\) casos genuinamente raros observados aqui.

Voltando à pergunta: a responsabilidade fracionária não é uma falha de informação recuperável por mais dados — é a resposta correta quando a sobreposição entre populações é real. O Bloco 3 formaliza de onde esse número vem.

O Modelo de Mistura Gaussiana: Variável Latente

Premissas Desta Construção

(1) Existem \(K\) populações distintas, cada uma gaussiana.

(2) Todo paciente nasce de exatamente uma população — a mistura está na nossa incerteza sobre qual, não numa origem física misturada.

(3) Não observamos a população de origem, só \(\mathbf{x}\). A Aula 1 assumiu \(1\) gaussiana para todos; o GMM permite \(K\).

Formalizando “De Qual População”

\(\mathbf{z}\): vetor binário 1-de-\(K\)\(z_k=1\) indica “nasceu da população \(k\)”.

\[p(z_k=1) = \pi_k, \qquad 0\le\pi_k\le 1, \qquad \sum_{k=1}^K \pi_k = 1\]

\[p(\mathbf{x}\mid z_k=1) = \mathcal{N}(\mathbf{x}\mid \mu_k, \Sigma_k)\]

PRML (p. 430-431), tradução livre: “a distribuição marginal sobre \(z\) é especificada em termos dos coeficientes de mistura \(\pi_k\), de tal forma que \(p(z_k=1)=\pi_k\).”

O Modelo Gerador, em Diagrama

Para cada paciente \(n\): sorteia-se \(z_n\) (probabilidades \(\pi_1,\dots,\pi_K\)), depois \(\mathbf{x}_n\) da gaussiana da população sorteada.

Recuperando a Mistura Já Conhecida

Marginalizando sobre os \(K\) estados de \(\mathbf{z}\): \[p(\mathbf{x}) = \sum_{k=1}^K \pi_k\,\mathcal{N}(\mathbf{x}\mid\mu_k,\Sigma_k)\]

Já era possível escrever essa soma desde a Aula 1 — a diferença é a história geradora explícita por trás dela: cada ponto nasceu de uma população específica, não observada.

Isso abre a pergunta central: dado \(\mathbf{x}\) observado, qual a probabilidade a posteriori de cada origem \(z\)?

Responsabilidade: A Probabilidade a Posteriori

Por Bayes: \[\gamma(z_{nk}) \equiv p(z_k=1\mid\mathbf{x}_n) = \frac{\pi_k\,\mathcal{N}(\mathbf{x}_n\mid\mu_k,\Sigma_k)}{\sum_{j=1}^K \pi_j\,\mathcal{N}(\mathbf{x}_n\mid\mu_j,\Sigma_j)}\] Dedução completa: Passo E, Bloco 5.

PRML (p. 432), tradução livre: \(\gamma(z_{nk})\) também pode ser vista como a responsabilidade que o componente \(k\) assume por ‘explicar’ a observação \(\mathbf{x}_n\).”

Nota

É exatamente essa fórmula por trás da mistura de cores do Bloco 2. Falta uma peça: de onde vêm \(\pi_k,\mu_k,\Sigma_k\)? Precisam ser ajustados aos dados (Bloco 4 em diante).

Por Que Não Maximizar a Verossimilhança Direto

Por Que Não Repetir a Solução Fechada da Aula 1?

Aula 1: uma única gaussiana, \(\ln\) de uma exponencial cancela limpo — solução fechada para \(\hat\mu,\hat\Sigma\).

GMM: \[\ln p(X\mid\pi,\mu,\Sigma) = \sum_{n=1}^N \ln\left\{\sum_{k=1}^K \pi_k\,\mathcal{N}(\mathbf{x}_n\mid\mu_k,\Sigma_k)\right\}\]

Soma dentro do \(\ln\) — o \(\ln\) não age mais direto sobre a gaussiana. PRML (p. 433-434), tradução livre: “a função logaritmo não age mais diretamente sobre a gaussiana […] não obteremos mais uma solução em forma fechada.”

Derivar e igualar a zero ainda é possível, mas \(\mu_k\) fica escondido numa razão de exponenciais somada com as outras \(K-1\) — não dá para isolar numa passada só.

Aviso Técnico: Singularidades

Se a média de um componente colapsa sobre um único ponto e a variância \(\to 0\): densidade \(\to\infty\), log-verossimilhança \(\to\infty\)overfitting patológico, não generalização.

PRML (p. 434), tradução livre: “a maximização da log-verossimilhança não é um problema bem posto, pois tais singularidades estarão sempre presentes.”

Na prática: buscar um máximo local bem-comportado, não o global (sempre degenerado). GaussianMixture do scikit-learn já tem salvaguardas (piso mínimo de variância).

A Saída: Iterar

Sem solução fechada, mas as equações de derivada zero têm estrutura reconhecível (Bloco 6) — a estratégia é iterativa.

Nota

Alternar: responsabilidades com parâmetros atuais (Passo E) \(\to\) reajustar parâmetros com responsabilidades atuais (Passo M) \(\to\) repetir até convergir. O algoritmo EM.

O Passo E: Responsabilidades Posteriores

Premissa do Passo E

Fixar os parâmetros atuais \(\pi_k,\mu_k,\Sigma_k\) — não importa se ainda estão longe do ajuste final. Perguntar: sob estes parâmetros, qual a probabilidade posterior de cada origem, por ponto?

Definição de probabilidade condicional: \[p(z_k=1\mid\mathbf{x}_n) = \frac{p(z_k=1,\mathbf{x}_n)}{p(\mathbf{x}_n)}\]

Numerador, pela regra da cadeia (chain rule): \(p(z_k=1,\mathbf{x}_n) = p(z_k=1)\,p(\mathbf{x}_n\mid z_k=1) = \pi_k\,\mathcal{N}(\mathbf{x}_n\mid\mu_k,\Sigma_k)\) — as duas premissas do modelo gerador (Bloco 3).

Denominador, pela lei da probabilidade total (soma sobre os \(K\) estados de \(z_n\), mutuamente exclusivos e exaustivos): \[p(\mathbf{x}_n) = \sum_{j=1}^K \pi_j\,\mathcal{N}(\mathbf{x}_n\mid\mu_j,\Sigma_j)\]

O Resultado

Substituindo numerador e denominador: \[\gamma(z_{nk}) \equiv p(z_k=1\mid\mathbf{x}_n) = \frac{\pi_k\,\mathcal{N}(\mathbf{x}_n\mid\mu_k,\Sigma_k)}{\displaystyle\sum_{j=1}^K \pi_j\,\mathcal{N}(\mathbf{x}_n\mid\mu_j,\Sigma_j)}\]

Cada um dos \(N\) pacientes recebe seu próprio vetor de \(K\) responsabilidades, somando \(1\) — em vez de uma regra de corte, cada ponto participa, em algum grau, de todos os componentes.

Verificação Numérica: 3 Pacientes Reais

Paciente radius_worst concave pts._worst Diagnóstico \(\gamma\)(benigno) \(\gamma\)(maligno)
41 12,84 0,1424 M 0,486 0,514
112 15,30 0,1505 B 0,520 0,480
501 16,01 0,1521 M 0,481 0,519

O diagnóstico real (nunca visto no ajuste) não decide o lado — 112 é benigno com \(\gamma\) levemente maior para benigno; 501 é maligno com \(\gamma\) levemente maior para maligno. Ambos a \(<2\) p.p. do empate.

Nota

\(101\) de \(569\) pacientes (\(\approx17{,}7\%\)) têm responsabilidade máxima \(<0{,}9\) — ambiguidade moderada é uma faixa de transição real, não um fenômeno raro de pontos isolados.

Pergunta

Um paciente tem responsabilidade \(\gamma=0{,}9\) para o componente maligno e \(\gamma=0{,}1\) para o benigno. Se, no meio de uma sessão de reajuste do modelo, os parâmetros do componente maligno mudarem bastante (por exemplo, sua covariância \(\Sigma\) dobrar de tamanho), o que necessariamente acontece com essa responsabilidade \(\gamma=0{,}9\)?

Dica: pense se \(\gamma(z_{nk})\) é uma propriedade fixa do ponto \(\mathbf{x}_n\), ou uma função dos parâmetros correntes do modelo — e lembre que a fórmula de Bayes usada aqui depende de \(\mu_k\) e \(\Sigma_k\) dos dois lados da razão, não só do componente \(k\).

  • □ A responsabilidade \(\gamma(z_{nk})\) é recalculada do zero a cada vez que os parâmetros do modelo mudam — ela não é uma propriedade fixa do ponto \(\mathbf{x}_n\), é uma função corrente de \(\pi,\mu,\Sigma\).
  • □ Se a covariância do componente maligno dobrar de tamanho (ficando mais “espalhada”), isso necessariamente aumenta a responsabilidade \(\gamma(z_{n,\text{maligno}})\) para qualquer ponto, porque uma gaussiana mais espalhada sempre atribui mais densidade a todo ponto do espaço.
  • □ Dois pacientes com exatamente a mesma responsabilidade \(\gamma=(0{,}9,0{,}1)\) sob os parâmetros atuais do modelo podem ter responsabilidades bem diferentes entre si depois de uma rodada de reestimação de parâmetros (Passo M), mesmo que os dois tivessem originalmente o mesmo par de atributos observados.
  • □ Se \(K=1\) (um único componente), a responsabilidade \(\gamma(z_{n1})\) é sempre igual a \(1\) para todo ponto, independentemente dos parâmetros — não há nenhum outro componente para “competir” na razão de Bayes.

Resposta

Resposta — responsabilidade muda com os parâmetros

  • \(\gamma(z_{nk})\) é função corrente dos parâmetros — recalculada a cada rodada, nunca fixa ao ponto.
  • ✗ Uma covariância maior espalha densidade, mas também reduz o pico (a densidade se normaliza a \(1\)); o efeito líquido sobre \(\gamma\) depende de onde \(\mathbf{x}_n\) está, não é sempre “aumenta”.
  • ✔ Dois pacientes idênticos em atributos, com a mesma \(\gamma\) hoje, divergem se entrarem com pesos diferentes nas somas do Passo M (por exemplo, se um deles for repetido no dataset e o outro não) — a reestimação usa todos os pontos conjuntamente, não cada um isolado.
  • ✔ Com \(K=1\) não há denominador com mais de um termo — a razão de Bayes degenera em \(1\) para o único componente, sempre.

Voltando à pergunta: a responsabilidade é uma função dos parâmetros correntes, não uma etiqueta fixa — é exatamente por isso que o algoritmo pode iterar: mudar os parâmetros (Passo M) muda as responsabilidades (novo Passo E), e vice-versa, até estabilizar.

O Passo M: Atualizações Ponderadas

Premissa do Passo M

Fixar as responsabilidades \(\gamma(z_{nk})\) do Passo E (agora constantes) — perguntar que \(\pi_k,\mu_k,\Sigma_k\) maximizam a log-verossimilhança esperada sob elas.

Com \(\gamma\) fixo, o problema se separa em \(K\) ajustes de MLE ponderada — sem soma dentro do \(\ln\) competindo entre componentes.

Nota

A receita de sempre: derivar em relação a cada parâmetro e igualar a zero — um parâmetro de cada vez, a seguir.

Por Que \(\gamma(z_{nk})\) Aparece em Toda Derivada

\(\mu_k,\Sigma_k\) são privados do componente \(k\): dentro de \(\sum_j\pi_j\mathcal{N}_j(\mathbf{x}_n)\), só o termo \(j=k\) depende deles. Para \(\theta_k\in\{\mu_k,\Sigma_k\}\): \[\frac{\partial}{\partial\theta_k}\ln\Big(\sum_j\pi_j\mathcal{N}_j(\mathbf{x}_n)\Big) = \frac{\pi_k}{\sum_j\pi_j\mathcal{N}_j(\mathbf{x}_n)}\frac{\partial \mathcal{N}_k(\mathbf{x}_n)}{\partial\theta_k}\]

Regra da cadeia do \(\ln\) (\(\partial\mathcal N_k/\partial\theta_k=\mathcal N_k\cdot\partial\ln\mathcal N_k/\partial\theta_k\)) faz o lado direito virar exatamente \(\gamma(z_{nk})\cdot\partial\ln\mathcal{N}_k/\partial\theta_k\). Somando sobre \(n\): \[\frac{\partial \ln p(X\mid\pi,\mu,\Sigma)}{\partial\theta_k} = \sum_{n=1}^N \gamma(z_{nk})\,\frac{\partial\ln\mathcal{N}(\mathbf{x}_n\mid\mu_k,\Sigma_k)}{\partial\theta_k}\]

Nota

Com \(\gamma\) fixo, a derivada da mistura colapsa numa versão ponderada da equação de derivada de uma única gaussiana (Aula 1) — é esse colapso que separa o problema em \(K\) ajustes independentes.

Atualização de \(\mu_k\): a Peça Que Falta

\(\ln\mathcal{N}(\mathbf{x}\mid\mu_k,\Sigma_k) = \text{const} - \dfrac12\ln|\Sigma_k| - \dfrac12(\mathbf{x}-\mu_k)^T\Sigma_k^{-1}(\mathbf{x}-\mu_k)\) — só o termo quadrático depende de \(\mu_k\).

Gradiente de forma quadrática (\(\mathbf{u}=\mathbf{x}-\mu\), \(\partial\mathbf{u}/\partial\mu=-I\), gradiente de \(\mathbf{u}^TA\mathbf{u}\) em \(\mathbf{u}\) é \(2A\mathbf{u}\)): \[\frac{\partial\ln\mathcal{N}(\mathbf{x}\mid\mu_k,\Sigma_k)}{\partial\mu_k} = \Sigma_k^{-1}(\mathbf{x}-\mu_k)\]

Atualização de \(\mu_k\): o Resultado

Pela identidade geral (slide anterior), com \(\theta_k=\mu_k\): \[\frac{\partial \ln p(X\mid\pi,\mu,\Sigma)}{\partial\mu_k} = \sum_{n=1}^N \gamma(z_{nk})\,\Sigma_k^{-1}(\mathbf{x}_n-\mu_k)\] Igualando a zero e multiplicando por \(\Sigma_k\): \[\mu_k = \frac{1}{N_k}\sum_{n=1}^N \gamma(z_{nk})\,\mathbf{x}_n, \qquad N_k = \sum_{n=1}^N \gamma(z_{nk})\]

PRML (p. 436): “podemos interpretar \(N_k\) como o número efetivo de pontos atribuídos ao cluster \(k\).”

\(\mu_k\) é média ponderada por \(\gamma(z_{nk})\) — pacientes de alta responsabilidade pesam quase um voto inteiro; ambíguos contribuem uma fração pequena para os dois componentes. Compare com a Aula 1: lá o peso era \(1/N\) para todos; aqui é a própria responsabilidade.

Atualização de \(\Sigma_k\): as Ferramentas

Duas identidades de cálculo matricial (Bishop, PRML, Apêndice C, p. 698): \[\frac{\partial\ln|\Sigma_k|}{\partial\Sigma_k} = \Sigma_k^{-1} \;\text{(C.28)}, \qquad \frac{\partial\,\Sigma_k^{-1}}{\partial(\Sigma_k)_{ij}} = -\Sigma_k^{-1}E_{ij}\Sigma_k^{-1} \;\text{(C.21)}\] onde \(E_{ij}\) tem \(1\) na posição \((i,j)\) e \(0\) no resto.

Propriedade cíclica do traço (\(\mathrm{tr}(ABC)=\mathrm{tr}(BCA)\)) reescreve a forma quadrática como traço: \((\mathbf{x}-\mu_k)^T\Sigma_k^{-1}(\mathbf{x}-\mu_k)=\mathrm{tr}(\Sigma_k^{-1}M)\), \(M=(\mathbf{x}-\mu_k)(\mathbf{x}-\mu_k)^T\).

Aplicando C.21 elemento a elemento: \[\frac{\partial}{\partial(\Sigma_k)_{ij}}\mathrm{tr}(\Sigma_k^{-1}M) = -\big[\Sigma_k^{-1}M\Sigma_k^{-1}\big]_{ji} \;\Longrightarrow\; \frac{\partial\,\mathrm{tr}(\Sigma_k^{-1}M)}{\partial\Sigma_k} = -\Sigma_k^{-1}M\Sigma_k^{-1}\]

Atualização de \(\Sigma_k\): o Resultado

Combinando as duas partes da log-densidade: \[\frac{\partial\ln\mathcal{N}(\mathbf{x}\mid\mu_k,\Sigma_k)}{\partial\Sigma_k} = -\frac12\Sigma_k^{-1} + \frac12\Sigma_k^{-1}(\mathbf{x}-\mu_k)(\mathbf{x}-\mu_k)^T\Sigma_k^{-1}\]

Pela identidade geral, ponderando por \(\gamma(z_{nk})\), somando em \(n\), igualando a zero e multiplicando por \(\Sigma_k\) dos dois lados: \[\Sigma_k = \frac{1}{N_k}\sum_{n=1}^N \gamma(z_{nk})\,(\mathbf{x}_n-\mu_k)(\mathbf{x}_n-\mu_k)^T\]

PRML (p. 436): “tem a mesma forma que o resultado […] para uma única gaussiana, mas com cada ponto ponderado pela probabilidade a posteriori.”

Atualização de \(\pi_k\): a Derivada

\(\pi_k\) não está “escondido” numa gaussiana — multiplica \(\mathcal{N}_k(\mathbf{x}_n)\) inteira, linearmente: \[\frac{\partial}{\partial\pi_k}\ln\Big(\sum_j\pi_j\mathcal{N}_j(\mathbf{x}_n)\Big) = \frac{\mathcal{N}_k(\mathbf{x}_n)}{\sum_j\pi_j\mathcal{N}_j(\mathbf{x}_n)}\]

Restrição \(\sum_k\pi_k=1\) pede multiplicador de Lagrange — derivando \(\ln p(X\mid\pi,\mu,\Sigma)+\lambda(\sum_k\pi_k-1)\) em \(\pi_k\): \[0 = \sum_{n=1}^N \frac{\mathcal{N}_k(\mathbf{x}_n)}{\sum_j\pi_j\mathcal{N}_j(\mathbf{x}_n)} + \lambda\]

Atualização de \(\pi_k\): Eliminando \(\lambda\)

Multiplicando por \(\pi_k\) (e usando que \(\pi_k\mathcal{N}_k(\mathbf{x}_n)/\sum_j\pi_j\mathcal{N}_j(\mathbf{x}_n)=\gamma(z_{nk})\)): \[0 = \sum_{n=1}^N \gamma(z_{nk}) + \lambda\pi_k = N_k + \lambda\pi_k\]

Somando sobre \(k\): \(\sum_k N_k = \sum_n\sum_k\gamma(z_{nk}) = \sum_n 1 = N\), e \(\lambda\sum_k\pi_k=\lambda\) — logo \(\lambda=-N\). Substituindo: \[N_k - N\pi_k = 0 \;\Longrightarrow\; \pi_k = \frac{N_k}{N}\]

PRML (p. 436): “o coeficiente de mistura […] é dado pela responsabilidade média que aquele componente assume por explicar os pontos de dados.”

Nota

\(N_k\) é soma de responsabilidades fracionárias, não contagem rígida: um componente que “convence” \(50\) pacientes por completo e \(20\) pela metade tem \(N_k=60\).

Um Ciclo, Não Uma Solução

\(\mu_k,\Sigma_k,\pi_k\) não formam solução fechada — \(\gamma(z_{nk})\) (Bloco 5) depende dos parâmetros que este bloco acabou de reestimar.

Por isso é iterativo: Passo E \(\to\) Passo M \(\to\) repetir. O algoritmo EM completo, no próximo bloco.

O Algoritmo EM Completo, em Ação

O Algoritmo Completo (PRML, p. 438-439)

1. Inicializar \(\mu_k,\Sigma_k,\pi_k\) (tipicamente a partir de um KMeans); avaliar log-verossimilhança inicial.

2. Passo E. Calcular \(\gamma(z_{nk})\) com os parâmetros correntes.

3. Passo M. Reestimar \(\mu_k\), depois \(\Sigma_k\) (usando o novo \(\mu_k\)), depois \(\pi_k\) — mesma ordem da Aula 1.

4. Reavaliar log-verossimilhança; parar se a mudança for pequena; senão, voltar ao Passo E.

Nota

PRML (p. 437): “cada atualização […] tem a garantia de aumentar a função de log-verossimilhança.” Não garante o máximo global — n_init com múltiplas inicializações reduz o risco de máximo local ruim.

Ajustando de Verdade: Breast Cancer Wisconsin

GaussianMixture(n_components=2), mesmos 2 atributos da Aula 3, sem diagnosis: \(\pi\approx(0{,}637,\ 0{,}363)\).

Componente \(0\) (benigno): \(349\)B / \(23\)M. Componente \(1\) (maligno): \(189\)M / \(8\)B — mais puro que o cluster \(100\%\) maligno da Aula 3, mas cobrindo \(189\) vs. \(54\) malignos.

Comparação honesta: GMM atribui todo mundo; HDBSCAN se recusa a decidir sobre \(29{,}5\%\) dos pacientes. Troca anunciada na Abertura — nunca “sem resposta”, ao custo de forçar decisão mesmo onde a evidência é fraca.

Onde as Elipses se Sobrepõem

Faixa central de sobreposição geométrica = exatamente a região dos pacientes de responsabilidade ambígua (Bloco 5).

Sem fronteira única (diferente do HDBSCAN): transição de cor suave, proporcional a quão “dentro” de cada elipse ponderada um ponto está.

O KMeans e Sua Relação com o GMM

O Objetivo do KMeans

Dados \(N\) pontos e \(K\) fixo: achar \(K\) centróides \(\mu_1,\dots,\mu_K\) e uma atribuição de cada ponto a um deles, minimizando a soma das distâncias ao quadrado ponto–centróide.

Indicador rígido: \(r_{nk}\in\{0,1\}\), \(\sum_k r_{nk}=1\) — mesma codificação 1-de-\(K\) de \(z_{nk}\) (Bloco 3), mas determinística, não latente.

PRML (p. 424), tradução livre: “medida de distorção \(J=\sum_n\sum_k r_{nk}\|\mathbf{x}_n-\mu_k\|^2\), a soma dos quadrados das distâncias de cada ponto ao seu \(\mu_k\) atribuído.” \[J = \sum_{n=1}^N \sum_{k=1}^K r_{nk} \|\mathbf{x}_n - \mu_k\|^2\]

Dois Passos Alternados

\(J\) tem duas famílias de variáveis, \(\{r_{nk}\}\) e \(\{\mu_k\}\) — minimizar as duas juntas não é direto, mas fixar uma de cada vez torna cada subproblema tratável. Bishop já chama as duas fases de “passo E” e “passo M” do KMeans, prefigurando o EM (Blocos 5-6).

Passo 1: Fixar \(\mu_k\), Resolver \(r_{nk}\)

\(J\) é linear em cada \(r_{nk}\), termos de pacientes diferentes são independentes — cada \(n\) se resolve sozinho, escolhendo o \(k\) de menor \(\|\mathbf{x}_n-\mu_k\|^2\).

PRML (eq. 9.2, p. 425): \[r_{nk} = \begin{cases}1 & \text{se } k=\arg\min_j \|\mathbf{x}_n-\mu_j\|^2 \\ 0 & \text{caso contrário}\end{cases}\] Atribua cada ponto ao centróide mais próximo.

Passo 2: Fixar \(r_{nk}\), Resolver \(\mu_k\)

Para \(k\) fixo, só os pontos com \(r_{nk}=1\) importam — forma quadrática em \(\mu_k\). Derivada de \(\|\mathbf{x}_n-\mu_k\|^2\) em \(\mu_k\) é \(-2(\mathbf{x}_n-\mu_k)\): \[\frac{\partial J}{\partial \mu_k} = \sum_{n=1}^N r_{nk}\cdot(-2)(\mathbf{x}_n-\mu_k)\]

Igualando a zero (eq. 9.3-9.4, p. 425) e isolando: \[\mu_k = \frac{\sum_n r_{nk}\,\mathbf{x}_n}{\sum_n r_{nk}}\] Centróide = média dos pontos atribuídos a ele.

Nota

Mesma estrutura da atualização de \(\mu_k\) do GMM (Bloco 6) — “média ponderada pela atribuição” — só que lá o peso é \(\gamma(z_{nk})\in[0,1]\) fracionário, aqui é \(r_{nk}\in\{0,1\}\) rígido.

Convergência

Cada fase resolve seu subproblema exatamente — nenhuma pode aumentar \(J\). Alternar até \(r_{nk}\) estabilizar garante convergência de \(J\) (Bishop, p. 425), possivelmente para um mínimo local.

Por isso n_init=10 no ajuste: repetir com centróides iniciais diferentes, manter o menor \(J\) final.

KMeans vs. GMM, Mesmos Dados

KMeans (esquerda): fronteira reta (mediatriz dos centróides), cada paciente numa região só, sem gradação.

GMM (direita, Bloco 7): transição suave, com uma faixa de pacientes em tons intermediários — os mesmos ambíguos do Bloco 5.

Nota

O KMeans parece um GMM que perdeu a capacidade de hesitar. Sob que condições precisas essa hesitação desaparece?

Premissas do Resultado

(1) \(\Sigma_k=\epsilon I\) para todo \(k\) — esféricas, idênticas entre componentes, não \(K\) matrizes livres.

(2) \(\epsilon\) tratado como constante fixa, não reestimada — só \(\pi_k,\mu_k\) continuam sendo ajustados.

\[\gamma(z_{nk}) = \frac{\pi_k\exp\{-\|\mathbf{x}_n-\mu_k\|^2/2\epsilon\}}{\sum_j \pi_j\exp\{-\|\mathbf{x}_n-\mu_j\|^2/2\epsilon\}}\]

O Limite \(\epsilon\to 0\) (PRML, p. 443-444)

Tradução livre: “o termo para o qual \(\|\mathbf{x}_n-\mu_j\|^2\) é o menor tenderá a zero mais lentamente […] obtemos uma atribuição rígida […] exatamente como no algoritmo KMeans.”

Intuição: com \(\epsilon\) minúsculo, o componente mais próximo domina exponencialmente — a diferença de distância ao quadrado, dividida por \(\epsilon\to0\), vira diferença enorme na exponencial. Vale independente de \(\pi_k\) (se nenhum for zero).

A Atualização de \(\mu_k\) Também Converge

PRML (p. 444): “a equação de reestimação […] se reduz ao resultado do KMeans […] maximizar a log-verossimilhança esperada é equivalente a minimizar a medida de distorção \(J\) do KMeans.”

Nota

No limite, \(\gamma(z_{nk})\to r_{nk}\in\{0,1\}\): a média ponderada do Bloco 6 vira exatamente a média do KMeans (Aula 3). O KMeans é o GMM de mãos amarradas — covariância travada, esférica, \(\to 0\).

Verificação Numérica Própria

\(\epsilon\) Resp. média máx. Acurácia vs. KMeans
\(1{,}0\) \(0{,}904\) \(95{,}78\%\)
\(0{,}1\) \(0{,}9916\) \(99{,}30\%\)
\(0{,}01\) \(0{,}9996\) \(100{,}00\%\)

Conforme \(\epsilon\) cai: responsabilidade \(\to\) rígida, concordância com KMeans \(\to100\%\) — confirmado numericamente, não só afirmado.

Da Transição Suave à Fronteira Rígida

Cor cada vez mais abrupta da esquerda para a direita — em \(\epsilon=0{,}01\) quase tudo é azul ou laranja sólido, fronteira fina exatamente na bissetriz do KMeans.

Pergunta

O KMeans, no limite \(\epsilon\to 0\), não estima covariância nenhuma — só médias. Isso significa que um GMM com covariâncias esféricas gerais (não travadas em \(\epsilon\) fixo) é sempre estritamente melhor que o KMeans para qualquer conjunto de dados?

Dica: pense no que “melhor” significaria aqui — ajuste mais fiel à verossimilhança dos dados observados, ou algum outro critério prático (velocidade, interpretabilidade, robustez a pouco dado).

  • □ Um GMM com covariâncias livres tem mais parâmetros a estimar do que o KMeans (que só estima médias) — com poucos dados por cluster, isso pode fazer o GMM overfitar a covariância, enquanto o KMeans, mais restrito, generalizaria melhor.
  • □ Se os clusters verdadeiros nos dados tiverem, de fato, covariâncias esféricas idênticas entre si, o GMM completo, ao convergir, deve recuperar covariâncias estimadas próximas dessa forma esférica comum — e nesse cenário específico, a vantagem prática do GMM sobre o KMeans se estreita.
  • □ Um cluster alongado (covariância muito diferente entre duas direções) é sempre mais bem representado pelo GMM do que pelo KMeans, porque o GMM pode orientar e esticar a elipse; o KMeans, restrito a bolas circulares de mesmo tamanho, cortaria esse cluster de forma artificial se ele fizer fronteira com outro.
  • □ Como o KMeans é matematicamente um caso particular do GMM, o KMeans nunca pode convergir mais rápido (em menos iterações até estabilizar) do que o GMM completo no mesmo conjunto de dados.

Resposta

Resposta — GMM completo é sempre melhor?

  • ✔ Mais parâmetros (covariância livre) com poucos dados por cluster pode overfitar — KMeans, mais restrito, generaliza melhor nesse regime.
  • ✔ Com covariâncias verdadeiramente esféricas e idênticas, o GMM convergiria para algo próximo do que o KMeans já assume — a vantagem prática do GMM encolhe nesse cenário específico.
  • ✔ Cluster alongado: GMM pode orientar/esticar a elipse; KMeans, restrito a bolas do mesmo tamanho, corta artificialmente na fronteira.
  • ✗ “Caso particular” é uma relação matemática de limite, não uma relação de velocidade de convergência — o KMeans, sendo mais simples por iteração e com menos parâmetros, tipicamente converge em menos iterações, não mais.

Voltando à pergunta: não existe “sempre melhor” — o GMM generaliza o KMeans matematicamente, mas essa generalidade custa mais parâmetros para estimar, o que só compensa quando os dados de fato sustentam essa riqueza extra.

Fechamento e Ponte para a Aula 5

Retomando as Quatro Perguntas

1. Variável latente \(z\) (1-de-\(K\), prior \(\pi_k\)); \(\mathbf{x}\mid z_k=1\sim\mathcal{N}(\mu_k,\Sigma_k)\); \(z\) nunca observado.

2. Bayes \(\to\) responsabilidade \(\gamma(z_{nk})\) (Passo E, a partir dos parâmetros correntes).

3. MLE ponderada (Passo M) — sem solução fechada (\(\gamma\) depende dos parâmetros que ela mesma ajuda a reestimar); EM itera E/M, garantidamente sem piorar a cada rodada.

4. Generaliza: KMeans = GMM com \(\Sigma_k=\epsilon I\) idêntico, \(\epsilon\to0\) — analítico (PRML) e numérico (Bloco 8).

O Que Fica em Aberto

\(K\) foi sempre \(2\), fixado porque o rótulo (usado só para avaliar) já sugeria isso. Sem rótulo, \(K\) é uma escolha aberta.

“Maximizar a verossimilhança” para escolher \(K\) falha: mais componentes sempre pode aumentar (ou não piorar) a verossimilhança — no limite, um componente minúsculo por ponto. Mesma singularidade do Bloco 4, em escala maior.

Ponte para a Aula 5

Como escolher \(K\) sem esse overfitting: o EM desta aula, sem priori sobre \(\theta\), não pode penalizar complexidade por construção. Uma priori de verdade sobre \(\theta\) devolve essa penalidade via KL (o ELBO com Navalha de Occam) — complementado por validação empírica (dados nunca vistos no ajuste) quando não há via analítica.

Exercícios Soluções

Pergunta

Se, em vez de fixar \(K=2\), alguém rodasse o GMM desta aula com \(K=10\) no mesmo par de atributos do Breast Cancer Wisconsin, o que aconteceria com a log-verossimilhança final, comparada à obtida com \(K=2\)?

Dica: pense se adicionar componentes pode, na pior das hipóteses, só “copiar” o comportamento de uma solução com menos componentes (por exemplo, atribuindo peso \(\pi_k\approx0\) a componentes extras) — e o que isso implica sobre a direção da mudança na verossimilhança.

  • □ A log-verossimilhança ótima obtida com \(K=10\) nunca pode ser pior (menor) do que a obtida com \(K=2\), porque qualquer solução de \(K=2\) pode ser reproduzida com \(K=10\) atribuindo peso \(\pi_k\approx0\) aos \(8\) componentes extras.
  • □ Escolher o valor de \(K\) que maximiza a log-verossimilhança nos dados de treino é, por esse motivo, um critério confiável para encontrar o número “certo” de componentes.
  • □ O mesmo tipo de problema (mais parâmetros sempre ajustando melhor aos dados observados, sem necessariamente generalizar melhor) já apareceu nesta disciplina antes desta aula, embora em outro contexto matemático.
  • □ Se um dos \(10\) componentes colapsar sua covariância sobre um único ponto de dado (a singularidade do Bloco 4), isso tornaria a log-verossimilhança bem definida, porém artificialmente baixa.

Resposta

Resposta — mais componentes, mais verossimilhança?

  • \(K=10\) nunca fica pior que \(K=2\) no treino — pode sempre “imitar” a solução menor zerando o peso dos componentes extras.
  • ✗ Justamente por isso não é confiável — o critério tende sempre a favorecer mais componentes, não o número real.
  • ✔ Sim — é a mesma lógica de overfitting já vista (por exemplo, mais atributos/flexibilidade sempre ajustando melhor os dados de treino, sem generalizar).
  • ✗ Colapsar sobre um ponto não dá uma verossimilhança baixa — dá uma verossimilhança tendendo a infinito (Bloco 4), o oposto de “baixa” e ainda mais artificial.

Voltando à pergunta: mais componentes sempre ajuda a verossimilhança de treino — por isso ela sozinha não serve para escolher \(K\). A Aula 5 mostra por que penalizar essa flexibilidade exige colocar os parâmetros dentro do próprio critério de ajuste (uma priori de verdade, não só mais dados) — e o que fazer quando isso não é possível analiticamente.