# Incerteza e Bayes

Probabilidade, regra de Bayes, Naive Bayes e redes Bayesianas com um filtro de spam calculado.

Página: https://resumos.rgo.pt/cadeiras/ia/incerteza-e-bayes/

A lógica da página anterior decide entre verdadeiro e falso. O mundo real raramente colabora: sensores com ruído, sintomas partilhados por várias doenças, palavras que aparecem em spam e em mensagens normais. A **probabilidade** quantifica a crença quando a informação não chega para a certeza, e a **regra de Bayes** atualiza essa crença perante evidência nova. O exemplo é um filtro de spam com 20 mensagens e todas as contas à mostra.

## O exemplo das 20 mensagens

Caixa com 20 mensagens: 8 spam e 12 normais (ham). A palavra “grátis” aparece em 6 das 8 spam e em 2 das 12 normais. Define $S$ como “é spam” e $G$ como “contém grátis”:

*   $P(S) = 8/20 = 0{,}4$ e $P(\lnot S) = 0{,}6$.
*   $P(G \mid S) = 6/8 = 0{,}75$ e $P(G \mid \lnot S) = 2/12 \approx 0{,}167$.
*   $P(G) = 8/20 = 0{,}4$, porque 8 das 20 mensagens contêm a palavra.

A pergunta que interessa é a inversa: chegada uma mensagem com “grátis”, qual a probabilidade de ser spam? A regra de Bayes responde:

$$
P(S \mid G) = \frac{P(G \mid S)\,P(S)}{P(G)} = \frac{0{,}75 \times 0{,}4}{0{,}4} = 0{,}75.
$$

Lê o resultado com cuidado: 75 por cento das mensagens com “grátis” são spam, que é exatamente 6 em 8. Bayes não inventou nada; inverteu a condicional de forma sistemática. O erro clássico é confundir $P(G \mid S)$ com $P(S \mid G)$: saber que 75 por cento do spam tem “grátis” não diz que 75 por cento do que tem “grátis” é spam. Aqui coincidem por acaso aritmético ($P(S) = P(G)$); em geral não coincidem.

Só com “grátis”, Bayes dá $P(S \mid G) = 0{,}75$: conta direta, 6 spam em 8 mensagens com a palavra. Uma evidência fraca move pouco a crença.

Com “grátis” e “prémio”, o Naive Bayes da próxima secção combina as duas evidências e chega a 0,947. Duas evidências fracas e independentes valem mais que uma.

## Naive Bayes com duas palavras

Junta a palavra “prémio”: aparece em 4 das 8 spam e em 1 das 12 normais. Para classificar uma mensagem com as duas palavras, o **Naive Bayes** assume que as palavras são **condicionalmente independentes** dada a classe, isto é, $P(G, P \mid S) = P(G \mid S)\,P(P \mid S)$. Com $P(P \mid S) = 4/8 = 0{,}5$ e $P(P \mid \lnot S) = 1/12$:

*   Proporcional a spam: $0{,}4 \times 0{,}75 \times 0{,}5 = 0{,}15$.
*   Proporcional a ham: $0{,}6 \times (2/12) \times (1/12) = 0{,}6/72 \approx 0{,}0083$.

Normaliza: $0{,}15 / (0{,}15 + 0{,}0083) \approx 0{,}947$. A mensagem é classificada spam com 94,7 por cento de confiança. A hipótese de independência é ingénua, as palavras “grátis” e “prémio” provavelmente correlacionam, mas o classificador funciona bem na prática porque para decidir basta a ordem das classes estar certa, não as probabilidades exatas.

```python
p_s = 8 / 20
print("uma palavra:", round(p_s * (6 / 8) / (8 / 20), 3))
num_s = p_s * (6 / 8) * (4 / 8)
num_h = (1 - p_s) * (2 / 12) * (1 / 12)
print("duas palavras:", round(num_s / (num_s + num_h), 3))
```

Isto escreve `uma palavra: 0.75` e `duas palavras: 0.947`, as duas contas da página.

Como cai em teste

Dão-te a tabela de contagens e pedem $P(classe \mid evidência)$. Passos: conta os totais, escreve as condicionais a partir das contagens, aplica Bayes, e normaliza dividindo pela soma das hipóteses. Verifica no fim que as probabilidades das classes somam 1.

## Redes Bayesianas

Quando há muitas variáveis, a tabela conjunta é impossível: $n$ variáveis binárias pedem $2^n$ entradas. Uma **rede Bayesiana** é um grafo dirigido acíclico onde cada nó tem uma tabela só com os seus pais, e a conjunta fatoriza-se pelo produto. A estrutura codifica **independências**: cada variável é independente das não descendentes dados os pais.

No spam, a rede ingénua é classe no topo com uma seta para cada palavra: $P(S, G, P) = P(S)\,P(G \mid S)\,P(P \mid S)$, que é exatamente a conta da secção anterior. Se “prémio” dependesse também de “grátis”, acrescentava-se uma seta entre elas e a tabela crescia. A rede é o meio termo entre a tabela completa, que não escala, e a ingenuidade total, que ignora dependências reais. Inferência nela (perguntar uma variável dadas outras) é o tema que fecha a incerteza e abre a porta à aprendizagem com dados incompletos. A intuição geométrica desta atualização está na lição interativa do 3Blue1Brown.[1](https://resumos.rgo.pt/cadeiras/ia/incerteza-e-bayes/#user-content-fn-bayes3b1b)

![Rede Bayesiana ingénua do spam: o nó Spam no topo com uma seta para a palavra grátis e outra para a palavra prémio.](https://resumos.rgo.pt/cadeiras/ia/incerteza-e-bayes/figura-1.svg)

[Vídeo: Bayes theorem, the geometry of changing beliefs (3Blue1Brown)](https://www.youtube.com/watch?v=HZGCoVF3YvM)

A miniatura vem do YouTube. O vídeo só carrega quando clicas. [Abrir no YouTube](https://www.youtube.com/watch?v=HZGCoVF3YvM)

## Notas de rodapé

1.  A mesma atualização de crenças com geometria, na versão escrita e interativa da lição: [https://www.3blue1brown.com/lessons/bayes-theorem/](https://www.3blue1brown.com/lessons/bayes-theorem/). [Voltar](https://resumos.rgo.pt/cadeiras/ia/incerteza-e-bayes/#user-content-fnref-bayes3b1b)
