Independência, Naive Bayes e Teoria da Decisão
Aula 2 — Fundamentos Estatísticos do Aprendizado Supervisionado
1 Abertura
Revisão rápida. A Aula 1 resolveu o problema mais simples possível de classificação: um único atributo contínuo \(x\in[0,1]\), duas classes. Ajustamos uma densidade Beta a cada classe, comparamos as densidades ponderadas pela priori, e definimos limiares de decisão a partir de caudas de probabilidade — quantificando os erros Tipo I e Tipo II que resultam de qualquer limiar escolhido, sem nunca formalizar teoria da decisão além do caso mais simples (duas classes, perda 0-1).
Organizador prévio. As três peças do curso — suposição distributiva, verossimilhança, regra de decisão — já apareceram todas na Aula 1, na sua versão mais enxuta possível. Hoje generalizamos cada uma delas exatamente na direção em que a Aula 1 parou.
Imagine uma triagem médica real: não duas doenças, mas cinco, cada uma com uma assinatura própria espalhada por dezenas de exames diferentes — não um só. A receita inteira da Aula 1 (duas curvas, um eixo, um ponto de corte) claramente não serve mais do jeito que está. Pare um momento antes de seguir: o que, exatamente, dessa receita sobrevive sem mudança nenhuma, e o que precisa ser repensado?
Roteiro de hoje, em quatro perguntas:
- A regra “decida pela classe de densidade conjunta maior” continua valendo com mais de duas classes?
- O que muda quando o atributo deixa de ser um único número e vira um vetor \(\mathbf{x}\in\mathbb{R}^d\)?
- O que é, precisamente, um modelo generativo — e o que ele consegue fazer que um classificador comum não consegue?
- Como generalizar a teoria da decisão informal da Aula 1 (perda 0-1, duas classes) para qualquer função de perda?
1.1 Pergunta
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.
- □ A prova da Aula 1 de que “decida pela conjunta maior” minimiza o erro nunca usou o valor \(K=2\) como hipótese — ela vale, passo a passo, também para \(K=5\) classes.
- □ Estimar \(p(\mathbf{x}\mid\mathcal{C}_k)\) com \(\mathbf{x}\in\mathbb{R}^{50}\) enfrenta exatamente a mesma dificuldade prática que estimar \(p(x\mid\mathcal{C}_k)\) com \(x\in\mathbb{R}\), só que “em maior escala”.
- □ A matriz de perda \(2\times 2\) da teoria da decisão informal da Aula 1 é um caso particular da formalização geral de função de perda que vamos generalizar hoje, no limite em que há só duas classes e a perda é fixa.
- □ Como um modelo generativo consegue “sonhar” (gerar dados novos), isso significa que ele é sempre um classificador melhor do que um modelo puramente discriminativo.
2 Teorema de Bayes e Modelos Generativos
Tudo que a Aula 1 construiu para duas classes generaliza sem atrito para \(K\) classes \(\mathcal{C}_1,\dots,\mathcal{C}_K\) (PRML §1.2, pp. 14–24; DLFC §2.1.2, pp. 26–28, mesma base usada na Aula 1). A regra da soma dá a marginal, a regra do produto dá o Teorema de Bayes:
\[ p(\mathcal{C}_k \mid \mathbf{x}) \;=\; \frac{p(\mathbf{x}\mid\mathcal{C}_k)\,\pi_k}{\sum_{j=1}^K p(\mathbf{x}\mid\mathcal{C}_j)\,\pi_j}, \qquad \pi_k = p(\mathcal{C}_k). \]
A regra de decisão que minimiza a probabilidade de erro continua sendo “decida pela conjunta maior”: \(\arg\max_k p(\mathbf{x}\mid\mathcal{C}_k)\,\pi_k\). A prova da Aula 1 foi ponto a ponto e nunca usou \(K=2\) como hipótese — ela generaliza para \(K\) classes exatamente do mesmo jeito.
2.1 O modelo generativo
O modelo generativo por trás disto tem uma leitura em duas etapas: primeiro a natureza sorteia uma classe segundo \(\pi_k\), depois sorteia \(\mathbf{x}\) segundo \(p(\mathbf{x}\mid\mathcal{C}_k)\).
2.2 Modelo generativo
Repare no que o Teorema de Bayes exige que você tenha em mãos. Para calcular \(p(\mathcal{C}_k\mid\mathbf{x})\) é preciso \(\pi_k\) e \(p(\mathbf{x}\mid\mathcal{C}_k)\) — e esses dois objetos, juntos, são mais do que um classificador. Eles são uma descrição completa de como os dados vieram a existir:
- sorteie uma classe \(\mathcal{C}_k\) com probabilidade \(\pi_k\);
- dada a classe, sorteie \(\mathbf{x} \sim p(\mathbf{x}\mid\mathcal{C}_k)\).
Isso é literalmente uma receita executável. Nada aí é metafórico: são duas chamadas a um gerador de números aleatórios, na ordem. Um modelo que especifica os dois passos é chamado generativo porque dele se pode gerar — produzir pares \((\mathbf{x}, y)\) novos, que nunca estiveram no conjunto de treino.
2.3 O teste: jogue fora os dados
A figura abaixo executa esse teste com três classes gaussianas em \(\mathbb{R}^2\). Observamos 900 pares rotulados (painel 1). Ajustamos por máxima verossimilhança e guardamos apenas \(\hat\pi_k\), \(\hat{\boldsymbol\mu}_k\) e \(\hat\Sigma_k\) — 17 números ao todo, contra os 1800 valores dos dados originais (painel 2). Então descartamos os dados, e pedimos ao modelo 900 pares novos, executando os dois passos da receita (painel 3).
O painel 3 não é uma cópia do painel 1 — nenhum ponto se repete, e não há mais nenhum dado guardado em lugar nenhum. Mesmo assim, a nuvem tem a mesma estrutura: três grupos, nas mesmas posições, com as mesmas orientações e as mesmas proporções relativas. O modelo comprimiu 1800 números em 17 e reteve o que era estrutural.
Compare com o painel 1 e você já enxerga também as limitações do modelo: se os dados reais tivessem caudas pesadas, assimetria, ou um grupo em forma de banana, o painel 3 continuaria devolvendo elipses. Um modelo generativo é uma teoria sobre a origem dos dados, e o que ele gera é o retrato mais honesto dessa teoria — inclusive de onde ela está errada. Essa é, aliás, a forma mais barata de diagnosticar um modelo generativo: gere, e olhe.
Nem todo classificador é generativo. A regressão logística (Aula 6) modela \(p(\mathcal{C}_k\mid\mathbf{x})\) diretamente, sem nunca construir \(p(\mathbf{x}\mid\mathcal{C}_k)\) — é um modelo discriminativo. Ele responde muito bem “que classe é este \(\mathbf{x}\)?”, e é incapaz de responder “me dê um \(\mathbf{x}\) plausível da classe 2”. A pergunta sequer faz sentido para ele: ele nunca representou como \(\mathbf{x}\) se distribui.
Discriminativo decide. Generativo decide e sonha.
2.4 A ponte para “IA generativa”
Quando se fala em modelo generativo em IA — texto, imagem, áudio — o significado da palavra é exatamente este, sem nenhuma extensão metafórica. A estrutura é a mesma de duas etapas:
| modelo gaussiano desta aula | modelo generativo moderno | |
|---|---|---|
| condição | classe \(\mathcal{C}_k\), sorteada de \(\pi_k\) | prompt, rótulo, ou ruído latente |
| objeto gerado | \(\mathbf{x}\in\mathbb{R}^2\) | imagem, sequência de tokens, áudio |
| \(p(\mathbf{x}\mid\text{condição})\) | gaussiana, 5 parâmetros por classe | rede neural, \(10^9\)–\(10^{12}\) parâmetros |
| gerar = | 2 chamadas ao gerador aleatório | amostragem da rede, passo a passo |
O que mudou entre as duas colunas não foi o conceito, foi a família de distribuições usada para representar \(p(\mathbf{x}\mid\text{condição})\). E a razão de a segunda coluna precisar de bilhões de parâmetros é a que a seção anterior já estabeleceu: \(\mathbf{x}\) ali tem dimensão altíssima — um milhão de pixels, milhares de tokens — e a densidade conjunta nessa dimensão é o objeto que nenhum histograma alcança.
Toda a história dos modelos generativos é a história das respostas a essa mesma pergunta: como representar \(p(\mathbf{x})\) em alta dimensão sem contar células? O resto desta aula apresenta a resposta mais brutal e mais antiga — Naive Bayes: suponha que as coordenadas não interagem. É uma resposta ruim, e é instrutivo entender exatamente quão ruim, porque a mesma tensão reaparece, em forma mais sofisticada, em tudo que veio depois.
Uma frase. Compare com um colega antes de avançar (2 min).
3 O que fazer em alta dimensão?
A Aula 1 terminou com uma receita fechada, provada sem nenhuma suposição de família paramétrica:
\[ 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} \qquad\Longrightarrow\qquad \text{decida } \arg\max_k \; p(x\mid\mathcal{C}_k)\,\pi_k . \]
São dois objetos a estimar: a priori \(\pi_k\) — que se estima contando rótulos — e a densidade condicional de classe \(p(x\mid\mathcal{C}_k)\), uma por classe. O denominador não depende de \(k\) e nem chega a ser calculado para decidir. A prova de otimalidade foi ponto a ponto e não mencionou a dimensão de \(x\) em lugar nenhum — ela continua válida trocando \(x\) por \(\mathbf{x}\in\mathbb{R}^d\).
Então a receita funciona em alta dimensão? É só trocar \(x\) por \(\mathbf{x}\)?
A regra, sim. A estimação de \(p(\mathbf{x}\mid\mathcal{C}_k)\), não. E dá para ver exatamente onde ela quebra contando células de um histograma.
3.1 Contando células: por que \(d=2\) não custa o dobro de \(d=1\)
Tome o estimador mais ingênuo possível para \(p(\mathbf{x}\mid\mathcal{C}_k)\): um histograma com 10 divisões por eixo.
\(d=1\). Dez células por classe. Com mil exemplos de treino, algo como cem pontos por célula: a altura de cada barra é estimada com precisão decente.
\(d=2\). A resposta imediata é “vinte células — dez para \(x_1\), dez para \(x_2\)”. Mas dez células em \(x_1\) e dez em \(x_2\) estimam apenas as duas marginais \(p(x_1\mid\mathcal{C}_k)\) e \(p(x_2\mid\mathcal{C}_k)\), e marginais não determinam a conjunta. Para representar \(p(x_1,x_2\mid\mathcal{C}_k)\) é preciso uma célula para cada par de divisões: \(10\times 10 = 100\). Os 80 números excedentes são exatamente a informação de interação — o quanto a distribuição de \(x_2\) muda conforme \(x_1\) cai em uma faixa ou em outra.
\(d=3\). Uma célula por tripla de divisões: \(10^3 = 1000\). E assim por diante: cada nova variável não soma dez células, multiplica por dez o número de células, porque ela pode interagir com toda a configuração já existente das anteriores.
Em geral, \(M\) divisões por eixo e \(d\) eixos dão \(M^d\) células. Com \(M=10\):
| \(d\) | células \(10^d\) | pontos por célula com \(n=10^6\) |
|---|---|---|
| 1 | \(10\) | \(100\,000\) |
| 2 | \(100\) | \(10\,000\) |
| 3 | \(1\,000\) | \(1\,000\) |
| 6 | \(10^{6}\) | \(1\) |
| 10 | \(10^{10}\) | \(0{,}0001\) |
Com dez variáveis — um problema pequeno para qualquer padrão real — um conjunto de um milhão de exemplos deixa a esmagadora maioria das células vazia. E uma célula vazia não estima densidade baixa: estima zero, que zera a conjunta \(p(\mathbf{x}\mid\mathcal{C}_k)\pi_k\) e manda o log para \(-\infty\) — a mesma patologia dos zeros exatos que a Aula 1 encontrou na Beta, agora por falta de dados em vez de por escolha de priori.
Repare, porém, no que seria estimável: as \(10\times d = 100\) contagens marginais, com muitos pontos cada. O abismo entre 100 números confortáveis e \(10^{10}\) números impossíveis é precisamente o custo das interações. O resto da aula é sobre o que acontece quando se decide abrir mão delas.
3.2 O ponto não é “compute mais rápido”
Não é um problema de poder computacional. É um problema de dados: o número de observações necessárias para preencher as células cresce exponencialmente com \(d\), e nenhum orçamento de coleta razoável acompanha isso. A saída não é um histograma mais eficiente — é abandonar o histograma como estratégia de estimação em alta dimensão.
Isto é exatamente a promessa que a Aula 1 fez ao fechar (PRML §1.4, pp. 33–38; DLFC §6.1.1, pp. 172–174, tratamento moderno): sem impor nenhuma estrutura sobre \(p(\mathbf{x}\mid\mathcal{C}_k)\), ela não é estimável com dados finitos a partir de \(d\) moderado.
Explique a um colega em uma frase. Se comprássemos 100× mais GPUs, o problema desapareceria?
4 Independência e Naive Bayes
4.1 Independência
Duas variáveis \(x_i, x_j\) são independentes quando
\[ p(x_i, x_j) = p(x_i)\,p(x_j), \]
o que, pela regra do produto, é o mesmo que \(p(x_i \mid x_j) = p(x_i)\).
Esta segunda forma é a que dá a intuição: observar \(x_j\) não altera em nada a sua crença sobre \(x_i\). Informação sobre um não é informação sobre o outro.
4.2 Independência condicional
\(x_i\) e \(x_j\) são condicionalmente independentes dado \(z\) quando
\[ p(x_i, x_j \mid z) = p(x_i \mid z)\, p(x_j \mid z), \]
equivalentemente \(p(x_i \mid x_j, z) = p(x_i \mid z)\).
A leitura muda: uma vez conhecido \(z\), observar \(x_j\) não acrescenta nada sobre \(x_i\). Não que \(x_j\) seja irrelevante — ela pode ser muito informativa sobre \(x_i\); é que toda essa informação já está contida em \(z\).
4.3 As duas não são a mesma coisa
Nenhuma das duas implica a outra, e vale ver os dois contraexemplos.
(a) Causa comum. Sejam “grátis” e “ganhador” condicionalmente independentes dada a classe, com \(\pi_{\text{spam}}=0{,}5\) e \(p(x_1{=}1\mid\text{spam})=0{,}85\), \(p(x_2{=}1\mid\text{spam})=0{,}60\), contra \(0{,}03\) e \(0{,}02\) em ham. Marginalizando a classe pela regra da soma, as duas palavras aparecem juntas com probabilidade \(0{,}255\), contra \(0{,}44 \times 0{,}31 = 0{,}136\) se fossem independentes. São fortemente dependentes no corpus, ainda que condicionalmente independentes: ver “grátis” aumenta a crença em spam, que aumenta a crença em “ganhador”.
(b) XOR. Sejam \(x_1, x_2\) moedas honestas independentes e \(\mathcal{C} = x_1 \oplus x_2\). Marginalmente elas são independentes. Mas dado \(\mathcal{C}=1\) temos \(x_2 = 1-x_1\) com certeza — dependência perfeita. Condicionar criou dependência onde não havia.
4.4 Suposição de Independência e Naive Bayes
O exemplo canônico: classificar um e-mail como spam a partir da presença ou ausência de \(d\) palavras de um vocabulário, \(\mathbf{x} \in \{0,1\}^d\). Modelar \(p(\mathbf{x}\mid\mathcal{C}_k)\) sem estrutura significa modelar a distribuição conjunta de \(d\) variáveis binárias — um objeto com \(2^d - 1\) parâmetros livres por classe (o \(-1\) vem da restrição de que as \(2^d\) probabilidades somam 1). Para \(d=20\) palavras, isso já é mais de um milhão de parâmetros por classe, para um vocabulário de brinquedo.
Naive Bayes é a suposição mais brutal possível para resolver isso: independência condicional entre atributos, dada a classe (PRML §1.5.4, eqs. 1.84–1.85, p. 46; DLFC §5.3, §5.3.1–5.3.2, pp. 150–156):
\[ p(\mathbf{x}\mid\mathcal{C}_k) \;=\; \prod_{i=1}^d p(x_i \mid \mathcal{C}_k). \]
O diagrama não tem nenhuma seta entre os \(x_i\) — essa ausência é a suposição inteira, desenhada. Ela troca \(2^d-1\) parâmetros por \(d\): linear em vez de exponencial.
Um exemplo numérico pequeno, para tornar concreto. Vocabulário de 8 palavras; cada palavra tem uma probabilidade de aparecer dado spam e dado não-spam. Simulamos e-mails e ajustamos essas probabilidades por contagem.
Se alguma palavra nunca aparecer nos e-mails de uma classe na amostra de treino, a contagem bruta dá \(\hat\theta = 0\), e um único e-mail de teste com essa palavra zera o produto inteiro — \(\ln 0 = -\infty\), exatamente o problema dos zeros exatos na Beta da Aula 1, só que aqui em forma discreta. A correção padrão é a suavização de Laplace: somar 1 ao numerador e 2 ao denominador (equivalente a uma priori Beta\((1,1)\) sobre cada \(\theta_i\)), garantindo \(0 < \hat\theta < 1\) sempre. É por isso que o ajuste acima já usa a versão suavizada.
Com as probabilidades ajustadas, a regra de decisão para um e-mail novo \(\mathbf{x}\) é comparar
\[ \log\frac{p(\text{spam}\mid\mathbf{x})}{p(\text{não-spam}\mid\mathbf{x})} \;=\; \log\frac{\pi_{\text{spam}}}{\pi_{\text{ham}}} \;+\; \sum_{i=1}^d \left[ x_i \log\frac{\theta^{\text{spam}}_i}{\theta^{\text{ham}}_i} + (1-x_i)\log\frac{1-\theta^{\text{spam}}_i}{1-\theta^{\text{ham}}_i}\right] \]
contra zero. Guarde esta fórmula — o Bloco de teoria da decisão vai mostrar que ela é linear em \(\mathbf{x}\), e por que isso não é coincidência.
4.5 O algoritmo Naive Bayes
A fatoração já dá o classificador inteiro. Note que ela não diz qual distribuição usar para cada \(p(x_i\mid\mathcal{C}_k)\) — essa escolha é sua, e é o único ponto do método em que se coloca conhecimento sobre o problema.
Entrada: dados \(\{(\mathbf{x}^{(n)}, y^{(n)})\}_{n=1}^{N}\), com \(d\) atributos e \(K\) classes.
Escolha de modelagem: para cada atributo \(i\), uma família de distribuições \(\mathcal{F}_i\) para \(p(x_i\mid\mathcal{C}_k)\).
Treino
- Para cada classe \(k\): \(\quad\hat\pi_k = N_k / N\), com \(N_k\) o número de exemplos da classe \(k\).
- Para cada classe \(k\) e cada atributo \(i\): ajuste \(\hat p(x_i\mid\mathcal{C}_k)\) dentro da família \(\mathcal{F}_i\), usando apenas a coluna \(i\) das linhas da classe \(k\).
Predição — dado um novo \(\mathbf{x}\)
- Para cada classe \(k\): \(\quad s_k = \log\hat\pi_k + \sum_{i=1}^{d} \log \hat p(x_i\mid\mathcal{C}_k)\).
- Devolva \(\arg\max_k s_k\).
Três observações sobre o algoritmo:
- O passo 2 são \(d \times K\) ajustes unidimensionais independentes, cada um com todos os \(N_k\) exemplos da classe à disposição. Nenhum deles vê mais de uma coluna por vez. É por isso que o método escala trivialmente com \(d\).
- O passo 3 usa logaritmo, não o produto direto. Com \(d\) grande, o produto de centenas de números menores que 1 gera underflow numérico; a soma dos logs, não.
- Zeros precisam de tratamento. Se algum \(\hat p(x_i\mid\mathcal{C}_k)=0\), aquele atributo sozinho zera a conjunta e manda \(s_k\) para \(-\infty\), independentemente do que os outros \(d-1\) atributos digam. A correção é a da Aula 1: uma priori que soma contagens fictícias antes de normalizar.
4.5.1 A escolha do passo 2, em concreto
| tipo do atributo \(x_i\) | família típica \(\mathcal{F}_i\) | o que se estima por classe |
|---|---|---|
| binário (palavra presente / ausente) | Bernoulli | 1 probabilidade |
| categórico com \(M\) níveis | Categórica | \(M-1\) probabilidades |
| contagem (frequência de palavra) | Multinomial | taxa por termo |
| contínuo, forma conhecida | Gaussiana 1-D | \(\mu_{ik}, \sigma^2_{ik}\) |
| contínuo, forma desconhecida | histograma 1-D ou KDE | \(M\) contagens |
Nada obriga a usar a mesma família em todas as colunas: um problema com idade (contínua), estado civil (categórico) e “tem cartão de crédito” (binário) usa três famílias diferentes, uma por coluna, e o passo 3 soma os logs de todas indiferentemente. Essa modularidade é a vantagem prática mais subestimada do método.
Escreva os dois exemplos, num problema que você conheça.
5 O Preço da Suposição de Independência
O Bloco 3 respondeu “o que a suposição de independência compra”: um ajuste que escala linearmente com \(d\) em vez de exponencialmente. Falta responder a pergunta simétrica — o que ela custa, geometricamente, sobre a fronteira de decisão. A resposta usa o mesmo dataset da Aula 1, agora com dois atributos contínuos de verdade: smoothness_mean (a suavidade média do contorno do núcleo celular) e concavity_mean (a severidade média das concavidades do contorno), do Breast Cancer Wisconsin (569 pacientes, diagnóstico benigno/maligno).
- Cada classe (benigno, maligno) é modelada por uma Gaussiana bivariada sobre os dois atributos.
- Rota 1 — Gaussiana plena: \(\Sigma_k\) é a matriz de covariância completa \(2\times2\) de cada classe, ajustada por máxima verossimilhança (a mesma fórmula da Aula 1, agora por classe).
- Rota 2 — Naive Bayes gaussiano: exatamente a suposição do Bloco 3, aplicada a atributos contínuos: \(\Sigma_k\) é forçada a ser diagonal — a variância marginal de cada atributo, ignorando a covariância entre eles. É o caso particular do Naive Bayes em que \(\mathcal{F}_i=\) Gaussiana 1-D para os dois atributos.
Nos dados reais, os dois atributos não são independentes dentro de cada classe — tumores mais irregulares tendem a ser simultaneamente menos “suaves” e mais “côncavos”. A correlação real, calculada separadamente dentro de cada classe, é de \(0{,}64\) entre pacientes malignos e \(0{,}22\) entre benignos: a suposição do Bloco 3 está sendo violada, e mais para uma classe do que para 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%
As elipses da esquerda (Gaussiana plena) se inclinam para acompanhar a correlação real entre os dois atributos — mais visivelmente na classe maligna. As elipses da direita (Naive Bayes) são forçadas a ficar alinhadas aos eixos: a covariância verdadeira simplesmente não pode ser representada com \(\Sigma\) diagonal, não importa quantos dados se use para ajustá-la. É a suposição do Bloco 3, agora visível como geometria, não só como fórmula.
E, ainda assim, a acurácia final quase não se move: \({\approx}87\%\) com a Gaussiana plena contra \({\approx}85\%\) com Naive Bayes — uma diferença pequena, apesar de a segunda estimar a forma de cada classe visivelmente errado. Isso não é coincidência deste dataset; é um fenômeno batizado por Pedro Domingos e Michael Pazzani (1997) e observado diretamente pelo PRML:
“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 de classe.” (tradução nossa, PRML §8.2.2, p. 381)
O motivo estrutural: classificar exige só saber qual posteriori é maior, não qual é o valor exato de cada uma. Um erro sistemático na estimativa da densidade (ignorar a correlação real) desloca a fronteira de decisão, mas não necessariamente para o lado errado dos pontos que mais importam — a região onde as duas classes de fato se misturam pode continuar sendo classificada corretamente, mesmo com as elipses erradas em outros lugares do espaço. “Classifica bem, estima mal” resume o fenômeno numa frase: a suposição pode ser péssima como descrição da densidade e ainda assim quase inofensiva como base de uma decisão binária.
5.1 Pergunta
Dica: separe “a fronteira final está no lugar certo” de “a densidade estimada está correta”.
- □ Se a correlação real entre
smoothness_meaneconcavity_meanfosse 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. - □ Mesmo com acurácia quase idêntica, um \(p\)-valor ou uma probabilidade posteriori calculada pelo Naive Bayes para um paciente específico pode estar numericamente bem mais longe do valor produzido pela Gaussiana plena, mesmo quando as duas rotas concordam sobre qual classe é mais provável.
- □ Num problema em que as duas classes têm covariâncias muito diferentes entre si (não só covariâncias diferentes da diagonal, mas diferentes entre classe A e classe B), o argumento “a fronteira pode ser insensível aos detalhes da densidade” continua se aplicando com a mesma força.
- □ Como o Naive Bayes “classifica bem, estima mal” neste exemplo, isso significa que ignorar a covariância entre atributos nunca pode produzir uma fronteira de decisão pior do que a da Gaussiana plena, em nenhum dataset.
6 Teoria da decisão
A Aula 1 tratou decisão de forma ad-hoc: duas classes, perda 0-1 ou uma matriz \(2\times2\) com custos \(c_{\mathrm{I}}, c_{\mathrm{II}}\). Chegou a hora de nomear o objeto geral — ele vale para \(K\) classes e perdas arbitrárias.
6.1 O objeto geral
Uma regra de decisão \(\delta\) mapeia cada observação \(\mathbf{x}\) para uma ação \(a \in \mathcal{A}\) — o espaço de ações, que não precisa coincidir com o espaço de classes \(\mathcal{Y}\). A opção de rejeição da Aula 1 já era um exemplo de \(\mathcal{A}\neq\mathcal{Y}\).
Dada uma função de perda \(L:\mathcal{Y}\times\mathcal{A}\to\mathbb{R}\), em que \(L(k,a)\) é o custo de tomar a ação \(a\) quando a verdade é \(\mathcal{C}_k\), o risco posterior de uma ação em \(\mathbf{x}\) é
\[ \rho(a\mid\mathbf{x}) \;=\; \sum_{k=1}^K L(k,a)\, p(\mathcal{C}_k\mid\mathbf{x}), \]
e a regra que minimiza a perda esperada global minimiza esse risco ponto a ponto — o mesmo argumento que provou a Aula 1:
\[ \boxed{\;\delta^\star(\mathbf{x}) = \arg\min_{a\in\mathcal{A}} \rho(a\mid\mathbf{x})\;} \]
Repare na divisão de trabalho: o modelo produz \(p(\mathcal{C}_k\mid\mathbf{x})\), a perda vem de fora, e \(\delta^\star\) é apenas a combinação dos dois. São peças separáveis, e é útil mantê-las separadas mentalmente.
6.2 O caso binário: custo e priori viram um limiar
Com \(\mathcal{A}=\mathcal{Y}=\{\mathcal{C}_A,\mathcal{C}_B\}\), acertos sem custo, \(L(A,B)=c_{\mathrm{I}}\) (a verdade era \(A\) e decidimos \(B\)) e \(L(B,A)=c_{\mathrm{II}}\), os dois riscos são \(\rho(A\mid\mathbf{x}) = c_{\mathrm{II}}\,p(\mathcal{C}_B\mid\mathbf{x})\) e \(\rho(B\mid\mathbf{x}) = c_{\mathrm{I}}\,p(\mathcal{C}_A\mid\mathbf{x})\). Decidir \(A\) quando o primeiro é menor equivale a
\[ p(\mathcal{C}_A\mid\mathbf{x}) \;>\; \underbrace{\frac{c_{\mathrm{II}}}{c_{\mathrm{I}}+c_{\mathrm{II}}}}_{\text{limiar } t}, \]
ou, na forma equivalente que a Aula 1 usou,
\[ \frac{p(\mathbf{x}\mid\mathcal{C}_A)}{p(\mathbf{x}\mid\mathcal{C}_B)} \;>\; \frac{c_{\mathrm{II}}\,\pi_B}{c_{\mathrm{I}}\,\pi_A}. \]
Toda regra de decisão binária é um teste de razão de verossimilhanças contra um limiar — e o limiar depende só de custos e prioris, nunca de \(\mathbf{x}\). Note também que só a razão \(c_{\mathrm{II}}/c_{\mathrm{I}}\) importa: dobrar os dois custos não muda decisão nenhuma.
O painel da direita é o ponto central da seção. A curva \(p(\mathcal{C}_A\mid x)\) é o que o modelo sabe: ela não se move quando os custos mudam. O que se move é o corte. Com custos simétricos, corta-se em \(t=0{,}5\); se bloquear um cliente legítimo custa 20 vezes mais do que deixar passar uma fraude, o limiar sobe para \(t = 20/21 \approx 0{,}95\) e o sistema só age quando está quase certo.
Isso separa duas discussões que na prática vivem confundidas: “o modelo está bom?” é uma pergunta sobre a curva; “onde cortar?” é uma pergunta sobre custos, e a resposta não está nos dados — está no domínio.
6.3 Escolher custos é escolher qual erro cometer
Não existe limiar que reduza os dois tipos de erro ao mesmo tempo. Deslocar \(t\) troca um pelo outro, sempre:
7 Quando o Log-Razão é Linear em \(\mathbf{x}\)
O Bloco 3 deixou uma fórmula pendurada: o log-razão do Naive Bayes com atributos binários é uma soma de termos, um por atributo — \(\sum_i[\ldots]\), sem nenhum produto cruzado entre coordenadas de \(\mathbf{x}\). Isso é a definição de uma função linear em \(\mathbf{x}\). O Bloco 4 apresentou uma segunda rota geométrica (Gaussianas plena vs. diagonal) sem nomear quando ela também produz esse mesmo tipo de fronteira. As duas perguntas têm a mesma resposta.
- Duas classes, \(\mathbf{x}\in\mathbb{R}^d\), cada classe modelada por uma Gaussiana multivariada \(\mathcal{N}(\boldsymbol\mu_k,\Sigma_k)\).
- A suposição que decide tudo: \(\Sigma_A=\Sigma_B=\Sigma\) — a mesma matriz de covariância para as duas classes (não precisa ser diagonal; só precisa ser igual entre as classes).
Passo 1 — escrever o log-razão. Usando a densidade Gaussiana (Aula 1),
\[ \log\frac{p(\mathbf{x}\mid\mathcal{C}_A)}{p(\mathbf{x}\mid\mathcal{C}_B)} = -\tfrac12(\mathbf{x}-\boldsymbol\mu_A)^T\Sigma_A^{-1}(\mathbf{x}-\boldsymbol\mu_A) + \tfrac12(\mathbf{x}-\boldsymbol\mu_B)^T\Sigma_B^{-1}(\mathbf{x}-\boldsymbol\mu_B) + \text{const}, \]
onde a constante recolhe os termos \(\log|\Sigma_k|\), que não dependem de \(\mathbf{x}\).
Passo 2 — usar a Premissa 2. Com \(\Sigma_A=\Sigma_B=\Sigma\), os dois termos quadráticos em \(\mathbf{x}\) (a parte \(\mathbf{x}^T\Sigma^{-1}\mathbf{x}\) de cada forma quadrática expandida) são idênticos nos dois lados — e se cancelam na subtração. Sobra só a parte linear em \(\mathbf{x}\):
\[ \log\frac{p(\mathbf{x}\mid\mathcal{C}_A)}{p(\mathbf{x}\mid\mathcal{C}_B)} = \mathbf{x}^T\Sigma^{-1}(\boldsymbol\mu_A-\boldsymbol\mu_B) - \tfrac12(\boldsymbol\mu_A+\boldsymbol\mu_B)^T\Sigma^{-1}(\boldsymbol\mu_A-\boldsymbol\mu_B) + \text{const}. \]
Passo 3 — nomear o resultado. O log-razão (e, somando o log da razão de prioris, a posteriori inteira) é da forma \(\mathbf{w}^T\mathbf{x}+w_0\) — linear em \(\mathbf{x}\), com \(\mathbf{w}=\Sigma^{-1}(\boldsymbol\mu_A-\boldsymbol\mu_B)\). A fronteira de decisão \(\{\mathbf{x}:\mathbf{w}^T\mathbf{x}+w_0=0\}\) é um hiperplano.
Passo 4 — a mesma pergunta, respondida duas vezes. O Naive Bayes binário (Bloco 3) chega a uma soma linear porque cada termo \(\log[\theta_i^{x_i}(1-\theta_i)^{1-x_i}]\) é, ele mesmo, linear em \(x_i\) — nenhuma suposição sobre \(\Sigma\) é necessária, porque não há \(\Sigma\): cada atributo já é 1-D. A Gaussiana com \(\Sigma\) compartilhada (não necessariamente diagonal) chega ao mesmo tipo de fronteira por um caminho diferente: cancelamento algébrico dos termos quadráticos. Diagonal (o Bloco 4) e compartilhada são suposições independentes — dá para ter uma sem a outra —, mas quando ambas valem (\(\Sigma_A=\Sigma_B=\Sigma\) diagonal), as duas rotas coincidem exatamente com o Naive Bayes gaussiano binário.
O que não é automático: se \(\Sigma_A\ne\Sigma_B\) (o caso mais comum, inclusive no Bloco 4 — a classe maligna tinha correlação \(0{,}64\) contra \(0{,}22\) da benigna), os termos quadráticos não cancelam, e a fronteira ótima é genuinamente curva (quadrática), não um hiperplano. A Aula 6 (regressão logística) constrói um discriminante linear por um caminho totalmente diferente — direto, sem passar por nenhuma suposição sobre \(\Sigma\) — e essa comparação vai valer a pena revisitar.
As duas curvas do painel (a) se cruzam exatamente em \(c_{\mathrm{II}}/c_{\mathrm{I}}=1\), a perda 0-1 — que é, portanto, uma escolha de custo como qualquer outra, e não um estado neutro. Usar acurácia como métrica é declarar que os dois erros custam o mesmo. Quase nunca custam.
Os custos não são estimáveis a partir dos dados: eles são uma declaração sobre consequências, e cabe ao domínio fornecê-los. Um esboço plausível em detecção de fraude:
| consequência | ordem de grandeza | |
|---|---|---|
| \(c_{\mathrm{I}}\): deixa passar fraude | perda do valor transacionado | R$ 800 |
| \(c_{\mathrm{II}}\): bloqueia legítima | atendimento + risco de churn | R$ 40 |
Razão \(c_{\mathrm{II}}/c_{\mathrm{I}} = 0{,}05\), logo \(t \approx 0{,}048\): o sistema deve bloquear com pouca evidência. Inverta o cenário para triagem médica de baixa prevalência, em que um falso positivo dispara uma cascata cara de exames invasivos, e a razão se inverte junto.
Quando os custos são difíceis de fixar — e frequentemente são — o caminho usual é não fixar \(t\), e sim reportar o comportamento do sistema para toda a faixa de \(t\), deixando a escolha explícita para quem responde pela decisão.
7.1 Risco de Bayes, e a ressalva que importa
\[ R^\star \;=\; \mathbb{E}_{\mathbf{X}}\!\left[\min_{a\in\mathcal{A}} \rho(a\mid\mathbf{X})\right] \]
generaliza o erro de Bayes da Aula 1 — que era o caso particular de perda 0-1 — para perda arbitrária: é o menor risco esperado possível, dado o modelo verdadeiro.
E “dado o modelo verdadeiro” é a expressão que carrega o peso. A regra de Bayes é ótima se \(p(\mathcal{C}_k\mid\mathbf{x})\) estiver certa. O bloco anterior mostrou Naive Bayes estimando essa posteriori de um jeito estruturalmente errado, e ainda assim decidindo razoavelmente bem — o que mostra que a otimalidade da regra e a correção do modelo são duas perguntas separadas. Confundi-las é o erro mais comum ao avaliar um classificador probabilístico: uma posteriori mal calibrada pode acertar a decisão sob perda 0-1 e errar feio assim que os custos ficam assimétricos, justamente porque aí o limiar sai de \(0{,}5\) e passa a depender do valor da posteriori, não só de qual é a maior.
Três frases resumem a aula:
- A regra da Aula 1 generaliza sem atrito para \(K\) classes — o que não generaliza de graça é a estimação de \(p(\mathbf{x}\mid\mathcal{C}_k)\) em alta dimensão, porque o número de células cresce como \(M^d\).
- Naive Bayes troca \(2^d-1\) parâmetros por \(d\), impondo independência condicional dada a classe. A suposição é falsa e cobra um preço fixo em acurácia; o que muda com \(d\) não é o preço, é o fato de a alternativa deixar de estar disponível.
- Teoria da decisão dá a regra ótima dado o modelo, e os custos entram só pelo limiar — decidir bem e modelar bem são perguntas separadas.
Ponte para a Aula 3
Naive Bayes decide a estrutura da densidade antes de ver os dados: as coordenadas não interagem, e ponto. Árvores de decisão (Aula 3) fazem o oposto — não supõem nada sobre \(p(\mathbf{x}\mid\mathcal{C}_k)\) e constroem as divisões gulosamente a partir dos próprios dados, inclusive as interações que Naive Bayes descarta por decreto. O preço dessa liberdade é o assunto de lá.
8 Exercícios
8.1 Questões discursivas
Um colega propõe estimar \(p(\mathbf{x} \mid \mathcal{C}_k)\) em \(\mathbb{R}^{15}\) ajustando um histograma multidimensional com \(M=8\) células por eixo. Calcule o número de células e explique, em termos do argumento construído no Bloco 2, por que essa abordagem é inviável mesmo com um dataset de 10 milhões de pontos.
O Naive Bayes assume \(p(\mathbf{x}\mid\mathcal{C}_k) = \prod_i p(x_i\mid\mathcal{C}_k)\). Descreva uma situação de classificação (pode ser hipotética) em que essa suposição é fortemente violada, mas o classificador ainda assim tem boa acurácia. Que propriedade da fronteira de decisão explica essa aparente contradição?
(Adaptado de PRML, Exercício 1.25) Considere um problema de decisão de \(K\) classes com uma matriz de perda \(L\) arbitrária (não necessariamente 0-1). Escreva o risco posterior \(\rho(a\mid\mathbf{x})\) e a regra de Bayes correspondente. Em que condições sobre \(L\) a regra de Bayes se reduz à regra do posterior máximo (0-1)?
8.2 Questões de Verdadeiro/Falso
Cada bloco de 4 itens trata do mesmo tema. A questão só é considerada correta se todos os 4 itens forem julgados corretamente (deixar em branco tem penalidade de 20% da nota da questão).
8.3 Aviso
As questões de Verdadeiro/Falso e discursivas ficam sem solução neste arquivo — são para resolução autônoma do aluno, fora do horário de aula.