Aprendizado Não Supervisionado
2026-09-07
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.
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.
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?
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.
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?
Resposta — ruído do HDBSCAN vs. ambiguidade do GMM
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.
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.
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.
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).
Resposta — o que significa responsabilidade 50/50
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.
(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\).
\(\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\).”
Para cada paciente \(n\): sorteia-se \(z_n\) (probabilidades \(\pi_1,\dots,\pi_K\)), depois \(\mathbf{x}_n\) da gaussiana da população sorteada.
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\)?
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).
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ó.
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).
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.
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)\]
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.
| 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.
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\).
Resposta — responsabilidade muda com os parâmetros
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.
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.
\(\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.
\(\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)\]
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.
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}\]
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.”
\(\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\]
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\).
\(\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.
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.
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.
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á.
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\]
\(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).
\(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.
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.
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 (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?
(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\}}\]
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).
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\).
| \(\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.
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.
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).
Resposta — GMM completo é sempre melhor?
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.
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).
\(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.
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.
Resposta — mais componentes, mais verossimilhança?
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.
UNICAMP — Instituto de Computação