Aula 2 — Fundamentos Estatísticos do Aprendizado Supervisionado
2026-08-30
Um atributo \(x\in[0,1]\), duas classes, densidades Beta comparadas, limiar de decisão por cauda de probabilidade, erros Tipo I/II — sem teoria da decisão formal ainda.
Nota
As três peças do curso (suposição distributiva, verossimilhança, regra de decisão) já apareceram na Aula 1, na versão mais enxuta possível. Hoje generalizamos cada uma.
Dica
Triagem médica com 5 doenças, cada uma com assinatura própria em dezenas de exames — não uma. A receita da Aula 1 (duas curvas, um eixo, um corte) não serve mais como está. O que sobrevive? O que precisa mudar?
1. “Decida pela conjunta maior” vale com mais de 2 classes?
2. O que muda com \(\mathbf{x}\in\mathbb{R}^d\) em vez de \(x\in\mathbb{R}\)?
3. O que é, precisamente, um modelo generativo?
4. Como generalizar a teoria da decisão da Aula 1 para qualquer perda?
O que, na receita da Aula 1, sobrevive sem mudança quando passamos para várias classes e vários atributos — e o que precisa ser repensado?
Dica: separe mentalmente as três peças do curso (suposição distributiva, verossimilhança, regra de decisão) e pergunte, peça por peça, se ela dependia de ter só 2 classes ou só 1 atributo.
Resposta — o que sobrevive da Aula 1
Voltando à pergunta: a lógica da regra de decisão sobrevive quase intacta; o que muda de verdade é a dificuldade de estimar \(p(\mathbf{x}\mid\mathcal{C}_k)\) em alta dimensão — o fio que atravessa o resto desta aula.
Generaliza sem atrito para \(K\) classes:
\[ p(\mathcal{C}_k \mid \mathbf{x}) = \frac{p(\mathbf{x}\mid\mathcal{C}_k)\,\pi_k}{\sum_j p(\mathbf{x}\mid\mathcal{C}_j)\,\pi_j} \]
Regra ótima: \(\arg\max_k p(\mathbf{x}\mid\mathcal{C}_k)\,\pi_k\) — a prova da Aula 1 nunca usou \(K=2\).
Para calcular \(p(\mathcal{C}_k\mid\mathbf{x})\) você precisa de \(\pi_k\) e \(p(\mathbf{x}\mid\mathcal{C}_k)\). Juntos, eles são mais que um classificador — são uma receita executável:
Já havendo estimado os dados. Duas chamadas ao gerador aleatório, na ordem. Um modelo assim se chama generativo porque dele se pode gerar.
Regressão logística (Aula 6) modela \(p(\mathcal{C}_k\mid\mathbf{x})\) direto — nunca constrói \(p(\mathbf{x}\mid\mathcal{C}_k)\).
Pergunte a ela: “me dê um \(\mathbf{x}\) plausível da classe 2”.
A pergunta não faz sentido — ela nunca representou como \(\mathbf{x}\) se distribui.
Discriminativo decide. Generativo decide e sonha.
| esta aula | modelo moderno | |
|---|---|---|
| condição | \(\mathcal{C}_k \sim \pi_k\) | prompt / latente |
| gera | \(\mathbf{x}\in\mathbb{R}^2\) | imagem, tokens |
| \(p(\mathbf{x}\mid\cdot)\) | gaussiana, 5 params | rede, \(10^9\)+ params |
Mudou a família de distribuições, não o conceito. E precisa de bilhões de parâmetros porque \(\mathbf{x}\) tem dimensão altíssima — o problema do histograma, de novo.
O que muda entre um modelo generativo gaussiano de 5 parâmetros e uma IA generativa moderna com bilhões — o conceito, ou só a família de distribuições?
Uma frase. Compare com um colega antes de avançar (2 min).
Dica
Julgue V ou F — a questão só conta se acertar os 4 itens:
Dica
Dica
(Uma frase. Compare com um colega antes de avançar.)
\[ p(\mathcal{C}_k\mid x) = \frac{p(x\mid\mathcal{C}_k)\,\pi_k}{\sum_j p(x\mid\mathcal{C}_j)\,\pi_j} \;\Longrightarrow\; \arg\max_k \; p(x\mid\mathcal{C}_k)\,\pi_k \]
Vamos supor que você tente estimar \(p(\mathbf{x}\mid\mathcal{C}_k)\) do jeito mais ingênuo possível: um histograma multidimensional. Divida cada um dos \(d\) eixos em \(M\) células.
| \(d\) | células | pontos/célula (\(n=10^6\)) |
|---|---|---|
| 1 | \(10\) | \(100\,000\) |
| 3 | \(10^{3}\) | \(1\,000\) |
| 6 | \(10^{6}\) | \(1\) |
| 10 | \(10^{10}\) | \(0{,}0001\) |
Por que “faltam dados” para estimar \(p(\mathbf{x}\mid\mathcal{C}_k)\) em alta dimensão é diferente de “falta poder computacional”?
Explique a um colega em uma frase. Se comprássemos 100× mais GPUs, o problema desapareceria?
Dica
Comprar 100× mais GPUs resolveria?
(Uma frase. Compare com um colega.)
Observar \(x_j\) não altera em nada a crença sobre \(x_i\).
Uma vez conhecido \(z\), observar \(x_j\) não acrescenta nada de novo.
\(x_j\) pode ser muito informativa sobre \(x_i\) — mas toda essa informação já está em \(z\).
As duas não são a mesma coisa
(a) “Grátis” e “ganhador”, cond. independentes dada a classe. Marginalizando: \(p(1,1) = 0{,}255\) vs. \(0{,}44 \times 0{,}31 = 0{,}136\).
Dependentes no corpus — a classe é causa comum.
(b) \(x_1, x_2\) moedas independentes, \(\mathcal{C} = x_1 \oplus x_2\).
Dado \(\mathcal{C}=1\): \(x_2 = 1 - x_1\). Condicionar criou dependência.
\[ p(\mathbf{x}\mid\mathcal{C}_k) = \prod_{i=1}^{d} p(x_i\mid\mathcal{C}_k) \]
\[ \arg\max_k \; \pi_k \prod_{i=1}^{d} p(x_i\mid\mathcal{C}_k) \]
Este é o Naive Bayes. O adjetivo é justo — e o resto da aula é sobre o que se perde.
Spam: \(\mathbf{x}\in\{0,1\}^d\), presença/ausência de \(d\) palavras.
Sem estrutura: \(2^d-1\) parâmetros por classe. Com \(d=20\): mais de 1 milhão.
Naive Bayes — independência condicional dada a classe: \[ p(\mathbf{x}\mid\mathcal{C}_k) = \prod_{i=1}^d p(x_i\mid\mathcal{C}_k) \]
Mesma armadilha da Aula 1: palavra nunca vista numa classe \(\Rightarrow\) \(\hat\theta=0 \Rightarrow \ln 0 = -\infty\). Correção: suavização de Laplace (\(+1\) no numerador, \(+2\) no denominador).
Decisão: comparar \(\log\dfrac{p(\text{spam}\mid\mathbf{x})}{p(\text{não-spam}\mid\mathbf{x})}\) contra zero — uma soma de termos, um por palavra.
Escolha: para cada atributo \(i\), uma família \(\mathcal{F}_i\) para \(p(x_i\mid\mathcal{C}_k)\).
Treino
Predição
| atributo | família | por classe |
|---|---|---|
| binário | Bernoulli | 1 prob. |
| categórico (\(M\) níveis) | Categórica | \(M-1\) |
| contagem | Multinomial | taxa/termo |
| contínuo, forma conhecida | Gaussiana 1-D | \(\mu_{ik}, \sigma^2_{ik}\) |
| contínuo, forma livre | histograma / KDE | \(M\) contagens |
Famílias diferentes por coluna são permitidas — idade, estado civil e “tem cartão” convivem. O passo 3 soma os logs indiferentemente.
Dê um exemplo de par de atributos em que a independência condicional do Naive Bayes parece particularmente errada — e outro em que parece razoável
Escreva os dois exemplos, num problema que você conheça.
Dica
Julgue V ou F — a questão só conta se acertar os 4 itens:
Dica
Dica
(Compare os dois exemplos com um colega.)
Bloco 3 respondeu o que a suposição compra (escala linear em \(d\)). Falta o que ela custa, geometricamente.
Dado real: Breast Cancer Wisconsin, smoothness_mean (suavidade média do contorno do núcleo) e concavity_mean (severidade média das concavidades do contorno).
Nota
Premissas: cada classe = Gaussiana bivariada. Rota 1 (plena): \(\Sigma_k\) completa, por MLE. Rota 2 (Naive Bayes): \(\Sigma_k\) forçada diagonal — a suposição do Bloco 3, agora em atributos contínuos.
Nos dados reais, correlação dentro da classe: \(0{,}64\) (maligno), \(0{,}22\) (benigno) — a suposição de independência está sendo violada, mais numa classe que na outra.
ajuste_plena = ajustar_gaussiana_plena(X_bc4, y_bc4)
ajuste_naive = ajustar_gaussiana_naive(X_bc4, y_bc4)
pi_maligno = y_bc4.mean()
acc_plena = acuracia(X_bc4, y_bc4, ajuste_plena, pi_maligno)
acc_naive = acuracia(X_bc4, y_bc4, ajuste_naive, pi_maligno)
print(f"correlação dentro da classe maligna: {np.corrcoef(X_bc4[y_bc4==1].T)[0,1]:.2f}")
print(f"correlação dentro da classe benigna: {np.corrcoef(X_bc4[y_bc4==0].T)[0,1]:.2f}")
print(f"acurácia — Gaussiana plena (Σ completa): {acc_plena:.1%}")
print(f"acurácia — Naive Bayes (Σ diagonal): {acc_naive:.1%}")correlação dentro da classe maligna: 0.64
correlação dentro da classe benigna: 0.22
acurácia — Gaussiana plena (Σ completa): 87.0%
acurácia — Naive Bayes (Σ diagonal): 85.4%
Esquerda (plena): elipses inclinadas, acompanhando a correlação real — mais visível na classe maligna.
Direita (Naive Bayes): elipses forçadas alinhadas aos eixos — a covariância verdadeira não pode ser representada com \(\Sigma\) diagonal, não importa quantos dados se use.
E, ainda assim: acurácia \({\approx}87\%\) (plena) vs. \({\approx}85\%\) (Naive Bayes) — diferença pequena, apesar da forma visivelmente errada.
“ainda que essa suposição não seja satisfeita com precisão, o modelo pode continuar produzindo um bom desempenho de classificação na prática, porque as fronteiras de decisão podem ser insensíveis a alguns dos detalhes das densidades condicionais” — tradução nossa, PRML §8.2.2, p. 381
Por quê: classificar exige só saber qual posteriori é maior, não o valor exato de cada uma. Um erro sistemático na densidade desloca a fronteira, mas não necessariamente para o lado errado dos pontos que mais importam.
Fenômeno batizado por Domingos & Pazzani (1997): a suposição pode ser péssima como descrição da densidade e quase inofensiva como base de uma decisão binária.
Se a acurácia final quase não muda, a suposição de independência do Naive Bayes é, na prática, inofensiva?
Dica: separe “a fronteira final está no lugar certo” de “a densidade estimada está correta”.
smoothness_mean e concavity_mean fosse ainda mais forte dentro de cada classe (por exemplo, \(0{,}95\) em vez de \(0{,}64\)/\(0{,}22\)), é razoável esperar que a diferença de acurácia entre as duas rotas cresça, não encolha.A suposição é inofensiva? — Resposta
Voltando à pergunta: não é inofensiva em geral — é inofensiva neste caso, porque a região de decisão que importa não depende muito dos detalhes que a suposição descarta. Isso não se generaliza automaticamente.
Regra \(\delta:\mathbf{x}\mapsto a\in\mathcal{A}\) (espaço de ações, não necessariamente de classes). Perda \(L(k,a)\).
\[ \rho(a\mid\mathbf{x}) = \sum_k L(k,a)\,p(\mathcal{C}_k\mid\mathbf{x}) \]
\[ \delta^\star(\mathbf{x}) = \arg\min_{a} \rho(a\mid\mathbf{x}) \]
Divisão de trabalho: o modelo dá a posteriori, a perda vem de fora, \(\delta^\star\) combina as duas.
\(\rho(A\mid\mathbf{x}) = c_{\mathrm{II}}\,p(\mathcal{C}_B\mid\mathbf{x})\), \(\quad\rho(B\mid\mathbf{x}) = c_{\mathrm{I}}\,p(\mathcal{C}_A\mid\mathbf{x})\)
\[ \text{decida } A \iff p(\mathcal{C}_A\mid\mathbf{x}) > \frac{c_{\mathrm{II}}}{c_{\mathrm{I}}+c_{\mathrm{II}}} \]
O limiar depende só de custos e prioris — nunca de \(\mathbf{x}\).
Só a razão importa: dobrar os dois custos não muda nada.
A curva \(p(\mathcal{C}_A\mid x)\) é o que o modelo sabe — ela não se move.
O que se move é o corte:
\(c_{II}/c_I = 1 \Rightarrow t = 0{,}50\) \(\quad\cdot\quad\) \(= 5 \Rightarrow t = 0{,}83\) \(\quad\cdot\quad\) \(= 20 \Rightarrow t = 0{,}95\)
“O modelo está bom?” é sobre a curva. “Onde cortar?” é sobre custos — e isso não está nos dados.
Nenhum limiar reduz os dois erros ao mesmo tempo.
As duas curvas se cruzam em \(c_{II}/c_I = 1\): a perda 0-1.
Ou seja: usar acurácia é declarar que os dois erros custam o mesmo.
Quase nunca custam.
| consequência | ordem | |
|---|---|---|
| \(c_{\mathrm{I}}\) deixa passar fraude | valor transacionado | R$ 800 |
| \(c_{\mathrm{II}}\) bloqueia legítima | atendimento + churn | R$ 40 |
Razão \(0{,}05 \Rightarrow t \approx 0{,}048\): bloqueie com pouca evidência.
Custos não são estimáveis dos dados — são declaração sobre consequências.
Difícil fixar? Reporte o sistema para toda a faixa de \(t\) e deixe a escolha explícita.
Bloco 3: Naive Bayes binário \(\Rightarrow\) log-razão é uma soma, sem produtos cruzados \(\Rightarrow\) linear em \(\mathbf{x}\). Bloco 4: Gaussiana com \(\Sigma\) compartilhada vs. diagonal — quando ela também é linear?
Nota
Premissas: duas classes Gaussianas \(\mathcal{N}(\mu_k,\Sigma_k)\). A suposição que decide tudo: \(\Sigma_A=\Sigma_B=\Sigma\) — mesma covariância entre classes (não precisa ser diagonal).
1. Log-razão Gaussiano tem dois termos quadráticos em \(\mathbf{x}\), um por classe.
2. \(\Sigma_A=\Sigma_B=\Sigma\) \(\Rightarrow\) os termos quadráticos são idênticos \(\Rightarrow\) cancelam na subtração.
3. Sobra só a parte linear: \[\mathbf{w}^T\mathbf{x}+w_0, \qquad \mathbf{w}=\Sigma^{-1}(\boldsymbol\mu_A-\boldsymbol\mu_B)\] Fronteira = hiperplano.
4. Naive Bayes binário chega lá sem \(\Sigma\) nenhuma (cada atributo já é 1-D). Gaussiana com \(\Sigma\) compartilhada chega lá cancelando termos quadráticos. Diagonal e compartilhada são suposições independentes — coincidem só quando as duas valem juntas.
\[ R^\star = \mathbb{E}_{\mathbf{X}}\!\left[\min_{a} \rho(a\mid\mathbf{X})\right] \]
Generaliza o erro de Bayes para perda arbitrária — dado o modelo verdadeiro.
Ótima se a posteriori estiver certa. Naive Bayes erra a posteriori e decide bem mesmo assim.
Otimalidade da regra e correção do modelo são perguntas separadas.
E a lacuna aparece justamente quando os custos ficam assimétricos: aí o limiar sai de \(0{,}5\) e passa a depender do valor da posteriori.
Dica
Julgue V ou F — a questão só conta se acertar os 4 itens:
Dica
Naive Bayes decide a estrutura antes dos dados. Árvores: nenhuma suposição sobre a densidade, divisões construídas gulosamente — inclusive as interações que o naive descartou. O preço da liberdade é o assunto de lá.
UNICAMP — Instituto de Computação