Probabilidade Condicional e Bayes
basico probabilidade machine-learning, segurancaProbabilidade Condicional e Bayes
Probabilidade condicional é o que permite atualizar crenças diante de evidência. É a ideia mais aplicada da probabilidade em computação, e também a que produz os erros de raciocínio mais custosos.
Definição
$$P(A \mid B) = \frac{P(A \cap B)}{P(B)}, \qquad P(B) > 0$$
Condicionar é restringir o espaço amostral a $B$ e renormalizar.
Daí a regra do produto:
$$P(A \cap B) = P(A \mid B)P(B) = P(B \mid A)P(A)$$
Teorema de Bayes
Igualando as duas formas da regra do produto:
Com a lei da probabilidade total no denominador:
$$P(B) = \sum_i P(B \mid A_i)P(A_i)$$
A leitura em termos de inferência:
| Termo | Nome | Significado |
|---|---|---|
| $P(A)$ | Priori | Crença antes da evidência |
| $P(B\mid A)$ | Verossimilhança | Quão bem $A$ explica a evidência |
| $P(A\mid B)$ | Posteriori | Crença após a evidência |
| $P(B)$ | Evidência | Constante de normalização |
O problema da taxa-base
Este é o ponto em que a intuição falha de forma mais espetacular, e vale trabalhar com números.
Um teste para uma doença tem sensibilidade de $99%$ ($P(+\mid D) = 0{,}99$) e especificidade de $99%$ ($P(-\mid \overline D) = 0{,}99$). A doença afeta $0{,}1%$ da população. Uma pessoa testa positivo. Qual a probabilidade de ela estar doente?
$$P(+) = P(+\mid D)P(D) + P(+\mid\overline D)P(\overline D) = 0{,}99 \cdot 0{,}001 + 0{,}01 \cdot 0{,}999 = 0{,}01098$$
$$P(D\mid+) = \frac{0{,}99 \cdot 0{,}001}{0{,}01098} \approx 0{,}090$$
Cerca de 9%. A maioria das pessoas — incluindo profissionais de saúde, em estudos conhecidos — estima algo próximo de 99%.
A razão é que a priori é muito baixa: num grupo de 100 mil pessoas, cerca de 100 têm a doença (99 detectadas) e 99.900 não têm (999 falsos positivos). Entre os 1.098 positivos, apenas 99 são doentes.
Esse fenômeno tem consequência direta em computação. Um detector de intrusão com 1% de falsos positivos monitorando um milhão de eventos legítimos por dia gera 10 mil alarmes falsos — e afoga os verdadeiros. É a razão pela qual sistemas de segurança e monitoramento sofrem de fadiga de alerta, e por que a métrica relevante é a precisão, não a taxa de acerto.
Independência condicional
$$P(A \cap B \mid C) = P(A\mid C)P(B\mid C)$$
$A$ e $B$ podem ser dependentes e se tornarem independentes ao condicionar em $C$ — ou o contrário.
Essa é a hipótese que dá nome ao classificador Naive Bayes: supõe-se que os atributos são condicionalmente independentes dada a classe.
$$P(C\mid x_1,\dots,x_n) \propto P(C)\prod_i P(x_i\mid C)$$
A hipótese é quase sempre falsa — palavras num texto não são independentes. Ainda assim o classificador funciona surpreendentemente bem, porque para decidir a classe basta que a ordenação das probabilidades esteja certa, mesmo que os valores estejam errados.
Independência condicional é também o que redes bayesianas codificam graficamente, e o que torna a inferência tratável.
Cuidados de implementação
Multiplicar muitas probabilidades pequenas causa subfluxo — o resultado vira zero. A solução padrão é trabalhar em log:
import numpy as np
# em vez de: prod(p)
log_prob = np.sum(np.log(p))
# e para somar probabilidades em log, use log-sum-exp:
from scipy.special import logsumexp
total = logsumexp(log_probs)
Outro cuidado: se uma categoria nunca apareceu no treino, $P(x_i\mid C) = 0$ zera o produto inteiro. A correção padrão é a suavização de Laplace, somando uma contagem fictícia a cada categoria.
Exemplo trabalhado
Duas urnas: a urna 1 tem 2 bolas brancas e 3 pretas; a urna 2 tem 4 brancas e 1 preta. Escolhe-se uma urna ao acaso e tira-se uma bola branca. Qual a probabilidade de ser da urna 1?
$$P(B) = \frac12\cdot\frac25 + \frac12\cdot\frac45 = \frac15 + \frac25 = \frac35$$
$$P(U_1\mid B) = \frac{\frac12\cdot\frac25}{\frac35} = \frac{1/5}{3/5} = \frac13$$
A evidência (bola branca) deslocou a crença de $1/2$ para $1/3$, o que faz sentido: a urna 2 tem mais brancas.
Aplicações em computação
Filtros de spam. O primeiro grande sucesso prático de Naive Bayes.
Diagnóstico e monitoramento. Alarmes precisam ser interpretados com a taxa-base em mente.
Localização robótica. Filtros de Kalman e de partículas são atualizações bayesianas sucessivas.
Testes A/B bayesianos. Atualizam a crença sobre a taxa de conversão a cada observação, permitindo parada adaptativa.
Segurança. Avaliação de risco de fraude combina priori (taxa de fraude) com verossimilhança (sinais da transação).
Erros comuns
- Confundir $P(A\mid B)$ com $P(B\mid A)$. Este é o erro do promotor: "a probabilidade de a evidência aparecer se a pessoa fosse inocente é 1 em um milhão" não é "a probabilidade de ela ser inocente é 1 em um milhão".
- Ignorar a taxa-base.
- Aplicar Bayes com priori mal escolhida e apresentar o resultado como objetivo.
- Multiplicar probabilidades sem log, causando subfluxo.
- Esquecer a suavização e zerar a posteriori.
Leituras recomendadas
- Ross, capítulo 3 — probabilidade condicional com muitos exercícios.
- Mitzenmacher e Upfal, capítulo 1 — Bayes aplicado a análise de algoritmos.
- Gelman et al., Bayesian Data Analysis — a referência moderna de inferência bayesiana; gratuito online.
- Kahneman, Rápido e Devagar — por que a taxa-base é tão sistematicamente ignorada.
Sheldon M. Ross (2014). A First Course in Probability. Pearson. ISBN 9781292024929. Michael Mitzenmacher and Eli Upfal (2017). Probability and Computing: Randomization and Probabilistic Techniques. Cambridge University Press. ISBN 9781107154889.
Referências
- Sheldon M. Ross (2014). A First Course in Probability. Pearson.
- Michael Mitzenmacher; Eli Upfal (2017). Probability and Computing: Randomization and Probabilistic Techniques. Cambridge University Press.