Inferência Bayesiana — Probabilidade, MCMC e Aprendizado
Fundamentos de inferência bayesiana: Teorema de Bayes, priors e posteriors, MCMC, algoritmo de Metropolis-Hastings, Gibbs sampling e aplicações em machine learning.
Inferência Bayesiana é uma abordagem à estatística onde probabilidade representa grau de crença — não apenas frequência de eventos. Ao invés de estimar parâmetros como valores fixos (frequentismo), o bayesianismo os trata como variáveis aleatórias com distribuições que são atualizadas à medida que novos dados chegam.
É o framework mais coerente matematicamente para raciocínio sob incerteza, e a base teórica de muitos avanços modernos em machine learning.
Papers de referência: arXiv stat.ML — Machine Learning (Statistics)
O Teorema de Bayes
A equação central:
P(θ | dados) = P(dados | θ) × P(θ) / P(dados)
Onde:
- P(θ | dados): posterior — crença sobre θ após observar os dados
- P(dados | θ): likelihood — probabilidade dos dados dado θ
- P(θ): prior — crença sobre θ antes dos dados
- P(dados): evidência — constante normalizadoraIntuição: começamos com uma crença inicial (prior), observamos dados, e atualizamos nossa crença (posterior).
Exemplo: diagnóstico médico
Teste para doença rara com prevalência de 0.1% (1 em 1000 pessoas tem a doença):
- Teste tem 99% de sensitividade (detecta 99% dos doentes)
- Teste tem 99% de especificidade (99% dos saudáveis testam negativo)
Se o teste deu positivo, qual a probabilidade de ter a doença?
P(doença | positivo) = P(positivo | doença) × P(doença) / P(positivo)
P(positivo | doença) = 0.99
P(doença) = 0.001
P(positivo) = P(positivo|doença)×P(doença) + P(positivo|saudável)×P(saudável)
= 0.99×0.001 + 0.01×0.999 = 0.01098
P(doença | positivo) = 0.99×0.001 / 0.01098 ≈ 9%Resultado surpreendente: mesmo com um teste de 99% de precisão, um resultado positivo em uma doença rara tem apenas ~9% de chance de ser verdadeiro. O prior (baixa prevalência) domina.
Prior, Likelihood e Posterior
Priors
O prior codifica o conhecimento antes dos dados:
| Tipo de prior | Quando usar |
|---|---|
| Informativo | Conhecimento científico sólido existe (ex: parâmetro físico conhecido) |
| Fracamente informativo | Restrições gerais conhecidas (ex: variância deve ser positiva) |
| Non-informativo (flat) | Mínima influência do prior — deixa dados "falar" |
| Conjugado | Prior que gera posterior da mesma família — simplifica cálculo analítico |
Priors conjugados
Quando o prior e a likelihood são conjugados, o posterior tem forma fechada:
| Likelihood | Prior conjugado | Posterior |
|---|---|---|
| Bernoulli/Binomial | Beta | Beta |
| Normal (variância conhecida) | Normal | Normal |
| Poisson | Gamma | Gamma |
| Multinomial | Dirichlet | Dirichlet |
Exemplo: estimando probabilidade de cara em uma moeda
Prior: Beta(2, 2) — crença inicial de moeda justa
Dados: 7 caras em 10 lançamentos
Posterior: Beta(2+7, 2+3) = Beta(9, 5) — média = 9/14 ≈ 0.64O problema: intratabilidade
Para modelos complexos, o denominador P(dados) — a evidência — é uma integral intratável:
P(dados) = ∫ P(dados | θ) × P(θ) dθPara modelos com muitos parâmetros, essa integral não tem solução analítica. É aqui que o MCMC entra.
MCMC — Markov Chain Monte Carlo
MCMC é uma família de algoritmos que amostra de distribuições de probabilidade complexas sem precisar calcular a integral normalizadora. Permite computar o posterior mesmo quando sua forma exata é desconhecida.
A ideia: construir uma cadeia de Markov cuja distribuição estacionária seja exatamente o posterior desejado. Após "aquecimento" (burn-in), as amostras da cadeia são amostras do posterior.
Por que funciona?
A cadeia de Markov precisa satisfazer balanço detalhado:
π(x) × T(x → y) = π(y) × T(y → x)
Onde:
- π: distribuição alvo (posterior)
- T: kernel de transição da cadeiaQualquer algoritmo que satisfaça essa condição converge para o posterior correto.
Algoritmo de Metropolis-Hastings
O algoritmo MCMC mais fundamental:
def metropolis_hastings(log_posterior, x_init, num_samples, proposal_std):
x = x_init
samples = []
for _ in range(num_samples):
# 1. Propor novo ponto (distribuição simétrica)
x_proposto = x + np.random.normal(0, proposal_std)
# 2. Calcular razão de aceitação (em log para estabilidade)
log_alpha = log_posterior(x_proposto) - log_posterior(x)
# 3. Aceitar ou rejeitar
if np.log(np.random.uniform()) < log_alpha:
x = x_proposto # aceita
samples.append(x)
return samplesIntuição: propõe um passo aleatório. Aceita sempre se o novo ponto tem posterior maior; aceita com probabilidade proporcional se tem posterior menor — permitindo exploração.
Taxa de aceitação ideal: ~23-44% para dimensão alta. Muito alta → passos pequenos, exploração lenta. Muito baixa → passos grandes demais, poucos aceitos.
Gibbs Sampling
Quando a distribuição conjunta P(θ₁, θ₂, ..., θₙ | dados) é complexa mas as distribuições condicionais P(θᵢ | θ₋ᵢ, dados) são tratáveis, Gibbs Sampling amostra ciclicamente:
for iteration in range(num_samples):
θ₁ = sample_from(P(θ₁ | θ₂, θ₃, ..., dados))
θ₂ = sample_from(P(θ₂ | θ₁, θ₃, ..., dados))
...
θₙ = sample_from(P(θₙ | θ₁, θ₂, ..., dados))Eficiente quando condicionais têm forma fechada — comum com priors conjugados.
HMC — Hamiltonian Monte Carlo
Usa gradientes do posterior para fazer propostas mais inteligentes — análogo à física hamiltoniana onde uma partícula "rola" pela superfície do posterior.
NUTS (No-U-Turn Sampler): versão adaptativa do HMC que ajusta automaticamente o tamanho dos passos. Implementado em:
- Stan (linguagem estatística)
- PyMC (Python)
- NumPyro / Pyro (JAX/PyTorch)
import pymc as pm
with pm.Model() as modelo:
# Prior
mu = pm.Normal("mu", mu=0, sigma=10)
sigma = pm.HalfNormal("sigma", sigma=1)
# Likelihood
y_obs = pm.Normal("y_obs", mu=mu, sigma=sigma, observed=dados)
# MCMC com NUTS
trace = pm.sample(2000, tune=1000)
pm.plot_posterior(trace)Diagnóstico de convergência
Como saber se a cadeia de Markov convergiu?
| Diagnóstico | O que verifica |
|---|---|
| R-hat (Gelman-Rubin) | Variância entre cadeias vs dentro de cadeias. Ideal: R̂ < 1.01 |
| Effective Sample Size (ESS) | Amostras independentes efetivas. Ideal: ESS > 400 |
| Trace plots | Visualiza a cadeia — deve parecer "caterpillar" estacionário |
| Autocorrelação | Alta autocorrelação = exploração ineficiente |
Variational Inference — alternativa escalável ao MCMC
Para modelos de grande escala (como redes neurais), MCMC é lento. Variational Inference aproxima o posterior com uma distribuição parametrizada:
Objetivo: minimizar KL(q(θ; φ) || p(θ | dados))
Equivalente a maximizar o ELBO (Evidence Lower Bound):
ELBO = E_q[log p(dados, θ)] - E_q[log q(θ; φ)]Redes neurais bayesianas: pesos são distribuições, não valores pontuais → quantificação de incerteza nas predições.
Aplicações em ML e finanças
| Aplicação | Como usa inferência bayesiana |
|---|---|
| Bayesian optimization | Modelo probabilístico de função objetivo para hyperparameter tuning (Gaussian Process) |
| Filtro de Kalman | Atualização bayesiana em tempo real para rastreamento e previsão |
| Modelos de séries temporais | Stan/Prophet para previsão com quantificação de incerteza |
| Precificação de opções | Calibração bayesiana de modelos de volatilidade estocástica |
| Detecção de anomalias | Probabilidade de observação dado o modelo — outliers têm baixa probabilidade |
| A/B Testing | Análise bayesiana de testes — decisão contínua sem p-value fixo |
Frequentismo vs Bayesianismo
| Aspecto | Frequentismo | Bayesianismo |
|---|---|---|
| O que é probabilidade? | Frequência relativa em infinitas repetições | Grau de crença (subjetivo/epistêmico) |
| Parâmetros | Fixos, desconhecidos | Variáveis aleatórias com distribuições |
| Incerteza | Intervalos de confiança (sobre o método) | Intervalos de credibilidade (sobre o parâmetro) |
| Dados | Aleatórios (amostras) | Fixos (observados) |
| Computação | Fórmulas fechadas geralmente | Pode exigir MCMC |
| Prior | Não usa | Parte central do modelo |
Conexões com outras seções
- Econometria — análise bayesiana de dados econômicos como alternativa ao OLS
- Séries Temporais com ML — modelos probabilísticos com incerteza quantificada
- Precificação de Opções — calibração bayesiana de parâmetros de volatilidade
- Redes Neurais Profundas — redes neurais bayesianas e Variational Autoencoders
Referências:
Aviso Legal: Conteúdo educativo. Não constitui recomendação de investimento.