Probabilidade Condicional e Bayes

basico probabilidade machine-learning, seguranca

Probabilidade 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:

P(A \mid B) = \frac{P(B \mid A)\,P(A)}{P(B)}

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:

TermoNomeSignificado
$P(A)$PrioriCrença antes da evidência
$P(B\mid A)$VerossimilhançaQuão bem $A$ explica a evidência
$P(A\mid B)$PosterioriCrença após a evidência
$P(B)$EvidênciaConstante 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

  1. Sheldon M. Ross (2014). A First Course in Probability. Pearson.
  2. Michael Mitzenmacher; Eli Upfal (2017). Probability and Computing: Randomization and Probabilistic Techniques. Cambridge University Press.