Aprendizaje de estadísticas bayesianas por primera vez; Como un ángulo para comprender MCMC, me preguntaba: ¿está haciendo algo que fundamentalmente no se puede hacer de otra manera, o simplemente está haciendo algo mucho más eficiente que las alternativas?
A modo de ilustración, supongamos que estamos tratando de calcular la probabilidad de nuestros parámetros dados los datos dado un modelo que calcula lo contrario, . Para calcular esto directamente con el teorema de Bayes, necesitamos el denominador como se señala aquí . Pero podríamos calcular eso por integración, digamos lo siguiente:P ( D | x , y , z ) P ( D )
p_d = 0.
for x in range(xmin,xmax,dx):
for y in range(ymin,ymax,dy):
for z in range(zmin,zmax,dz):
p_d_given_x_y_z = cdf(model(x,y,z),d)
p_d += p_d_given_x_y_z * dx * dy * dz
¿Funcionaría (aunque de manera muy ineficiente con un mayor número de variables) o hay algo más que podría hacer que este enfoque falle?
Respuestas:
Está describiendo una aproximación de cuadrícula a la posterior, y ese es un enfoque válido, aunque no es el más popular. Hay bastantes casos en los que la distribución posterior puede calcularse analíticamente. Las cadenas Monte Carlo Markov u otros métodos aproximados son métodos para obtener muestras de la distribución posterior, que a veces funcionan cuando no se puede encontrar la solución analítica.
Las soluciones analíticas que se pueden encontrar son típicamente casos de familias "conjugadas", y usted puede encontrar más sobre eso buscando en Google, vea por ejemplo https://en.wikipedia.org/wiki/Conjugate_prior .
Como primer ejemplo, si su anterior
p
es uniforme[0, 1]
, dondep
es un parámetro de éxito en un experimento binomial simple, el posterior es igual a una distribución Beta. La integración, o suma, se puede hacer explícitamente en este caso.Si tiene muchas opciones de parámetros, o usa una aproximación de cuadrícula como en su ejemplo, una suma simple puede ser todo lo que necesita. Sin embargo, la cantidad de cálculos puede explotar rápidamente si tiene un par de variables y desea utilizar una grilla densa.
Existen varios algoritmos para el muestreo desde la parte posterior. El hamiltoniano Monte Carlo, específicamente la muestra NUTS, ahora es popular y se usa en ,
stan
yPyMC3
Metropolis Hastings es el clásico. La inferencia variacional es un recién llegado relativo, no un método de muestreo en realidad, sino una forma diferente de obtener una aproximación. Por el momento, ninguno de los métodos, incluidas las soluciones analíticas, son los mejores, todos funcionan bien en casos específicos.fuente
fuente
Los métodos de Monte Carlo son técnicas que hacen uso de números aleatorios. El objetivo es encontrar muestras que se distribuyan de acuerdo con y se supone que es complejo. Esto significa que no podemos evaluarlo directamente. Si este no es el caso, puede calcularlo analíticamente. Como en su ejemplo, esto sería .x P(x) P(x) P(D)
Lo que propone es esencialmente una búsqueda de cuadrícula a través del espacio de e . Esto puede ser muy exhaustiva si y son de alta dimensional y no factible si son continuas. Otro problema es que tienes que calcular el cdf en cada paso.x y x y
Los métodos MCMC intentan resolver esto proponiendo muestras candidatas y luego aceptándolas o rechazándolas dependiendo de alguna medida. En teoría, esto puede ser más rápido que pasar por todas las combinaciones posibles. así que básicamente encuentras muestras extraídas de la . Un problema teórico aquí es que este es solo el caso en el número límite de muestras extraídas, es decir, después de samples. Entonces no sabes cuándo detener la cadena de Markov.ci P(D) ∞
fuente