Sobes.tech
Senior

O que é programação probabilística (PyMC, Stan, NumPyro)?

sobes.tech IA

Resposta da IA

A programação probabilística é uma abordagem de programação que permite descrever modelos estatísticos e realizar automaticamente inferências sobre distribuições de probabilidade de parâmetros com base em dados. Frameworks como PyMC, Stan, NumPyro oferecem ferramentas para definir modelos com incertezas e realizar inferências bayesianas.

A ideia principal é que, em vez de valores fixos para os parâmetros do modelo, são atribuídas distribuições de probabilidade, e então, usando métodos como MCMC (Markov Chain Monte Carlo) ou métodos variacionais, calculam-se as distribuições a posteriori dos parâmetros.

Isto é especialmente útil em tarefas onde é importante considerar a incerteza, por exemplo, em otimização bayesiana (BO), processos gaussianos (GP) e outros campos de aprendizagem de máquina.

Exemplo: no PyMC, pode-se definir um modelo com uma distribuição normal para um parâmetro e dados observados, e depois obter a distribuição do parâmetro:

import pymc as pm
import numpy as np

with pm.Model() as model:
    mu = pm.Normal('mu', mu=0, sigma=1)
    obs = pm.Normal('obs', mu=mu, sigma=1, observed=np.array([1.0, 2.0, 1.5]))
    trace = pm.sample()

pm.plot_posterior(trace, var_names=['mu'])

Desta forma, a programação probabilística simplifica a construção de modelos estatísticos complexos e a obtenção de inferências considerando a incerteza.