¿Cuál es una explicación intuitiva del algoritmo Metropolis-Hastings?

El algoritmo Metropolis-Hastings genera una secuencia de muestras aleatorias a partir de una distribución probabilística para la cual el muestreo directo a menudo es difícil.

Se basa en la teoría de la cadena de Markov. La idea clave es construir una cadena de Markov que converja a la distribución dada como su distribución estacionaria. Se pueden aproximar muestras de la distribución estacionaria de una cadena de Markov simulando la cadena de Markov.

Sea [math] \ pi (x) [/ math] la función de masa de probabilidad de la distribución deseada. El desafío es construir una cadena de Markov con probabilidad de transición [matemática] p (x, y) [/ matemática], de modo que [matemática] \ pi (x) [/ matemática] sea su distribución estacionaria.

[matemática] p (x, y) [/ matemática] es la probabilidad de transición al estado [matemática] y [/ matemática], dado que el estado actual es [matemática] x [/ matemática].

En general esto requiere
[matemáticas] \ pi (y) = \ sum_x \ pi (x) p (x, y) [/ matemáticas]
Pero aquí usamos una condición más fuerte (llamada reversibilidad de tiempo)
[matemáticas] \ pi (y) p (y, x) = \ pi (x) p (x, y) \ quad \ quad (*) [/ matemáticas]
La segunda condición implica la primera, porque por definición de probabilidad de transición, [matemática] \ sum_x p (y, x) = 1 [/ matemática].

Para encontrar [matemática] p (x, y) [/ matemática] satisfactoria (*), primero proponemos una probabilidad arbitraria de “salto” [matemática] q (x, y) [/ matemática], y luego obtenemos [matemática] p ( x, y) [/ math] al aceptar solo el “salto” con probabilidad [math] \ alpha (x, y) [/ math]. Cuando se rechaza un “salto”, el estado permanece: [matemática] y = x [/ matemática]. Esta idea de “aceptación” no es exclusiva del algoritmo Metropolis-Hastings. Google “muestra de rechazo” para más ejemplos.

Si [math] y = x [/ math], la condición deseada (*) siempre se cumple. Si [math] y \ neq x [/ math], tenemos [math] p (x, y) = q (x, y) \ alpha (x, y) [/ math], y (*) se convierte en:
[matemáticas] \ pi (y) q (y, x) \ alpha (y, x) = \ pi (x) q (x, y) \ alpha (x, y) [/ matemáticas]
es decir,
[matemáticas] \ frac {\ alpha (x, y)} {\ alpha (y, x)} = \ frac {\ pi (y) q (y, x)} {\ pi (x) q (x, y )}[/mates]

Teniendo en cuenta que [math] \ alpha [/ math] toma valores en [0,1], podemos verificar fácilmente que
[matemáticas] \ alpha (x, y) = \ min (\ frac {\ pi (y) q (y, x)} {\ pi (x) q (x, y)}, 1) [/ matemáticas]
Satisface la ecuación anterior. Esto nos da exactamente la probabilidad de aceptación utilizada en el algoritmo Metropolis-Hastings.

(La derivación anterior no pretende ser una prueba. Más bien tiene como objetivo proporcionar una intuición para el algoritmo de Metropolis-Hastings. La discusión asume un espacio de estado discreto, pero la intuición también debe aplicarse al espacio de estado continuo).

Cito una respuesta del sitio Stack Exchange, ya que esta fue la mejor explicación intuitiva que pude encontrar:

Creo que se puede obtener una intuición agradable y simple del algoritmo Metropolis-Hastings (cadena de independencia).

Primero, ¿cuál es el objetivo? El objetivo de MCMC es extraer muestras de alguna distribución de probabilidad sin tener que conocer su altura exacta en ningún punto (no necesitamos saber C). La forma en que MCMC logra esto es “deambular” en esa distribución de tal manera que la cantidad de tiempo que pasa en cada ubicación sea proporcional a la altura de la distribución . Si el proceso de “deambular” está configurado correctamente, puede asegurarse de que se logre esta proporcionalidad (entre el tiempo empleado y la altura de la distribución).

Intuitivamente, lo que queremos hacer es caminar por alguna superficie (grumosa) de tal manera que la cantidad de tiempo que pasamos (o # muestras extraídas) en cada ubicación sea proporcional a la altura de la superficie en esa ubicación. Entonces, por ejemplo, nos gustaría pasar el doble de tiempo en una colina que está a una altitud de 100m que en una colina cercana que está a una altitud de 50m. Lo bueno es que podemos hacer esto incluso si no conocemos las alturas absolutas de los puntos en la superficie: todo lo que tenemos que saber son las alturas relativas. por ejemplo, si una colina A es dos veces más alta que B, entonces nos gustaría pasar el doble de tiempo en A que en B.

La variante más simple del algoritmo Metropolis-Hastings (muestreo de la cadena de independencia) logra esto de la siguiente manera: supongamos que en cada paso de tiempo (discreto), elegimos una nueva ubicación “propuesta” aleatoria (seleccionada de manera uniforme en toda la superficie). Si la ubicación propuesta es más alta que donde estamos ahora, muévase a ella. Si la ubicación propuesta es más baja, muévase a la nueva ubicación con probabilidad p, donde p es la relación entre la altura de ese punto y la altura de la ubicación actual. (es decir, lanzar una moneda con una probabilidad p de obtener cara; si sale cara, muévase a la nueva ubicación; si sale cruz, quédese donde estamos). Mantenga una lista de las ubicaciones en las que ha estado en cada paso del tiempo, y esa lista tendrá (asintóticamente) la proporción correcta de tiempo en cada parte de la superficie. (Y para las colinas A y B descritas anteriormente, terminarás con el doble de probabilidades de moverte de B a A que de moverte de A a B).

Existen esquemas más complicados para proponer nuevas ubicaciones y las reglas para aceptarlas, pero la idea básica sigue siendo: (1) elegir una nueva ubicación “propuesta”; (2) calcule cuánto más alto o más bajo se compara esa ubicación con su ubicación actual; (3) es probable que permanezca donde está o muévase a esa ubicación de manera que respete el objetivo general de pasar un tiempo proporcional a la altura de la ubicación.

También puedes leer los detalles en mi blog en:

My Tryst With MCMC Algorithms

Contempla el poder de MCMC

Desea que se mantenga la condición de saldo detallado, esta es la condición que

P (A) K (A-> B) = P (B) K (B-> A)

Donde P es la distribución de probabilidad que desea obtener como su distribución estacionaria, y K es la amplitud de transición, y A y B son dos estados del sistema. Para comprender esto, vea aquí: ¿Cuál es una explicación intuitiva de la condición de reversibilidad (también conocido como equilibrio detallado) en una cadena de Markov? .

Sabes P (A) y P (B). Digamos que P (A) es más grande. Luego elige K (B-> A) = 1, y elige K (A-> B) = P (B) / P (A), y funciona.

Esto funciona sin importar cómo elija los pares de estados, siempre que elija las transiciones de cualquier manera, y asegúrese de que cuando lo elija, la transición inversa sea menos probable por la relación P (B) / P (A) en comparación con la transición hacia adelante.

Agregué esta respuesta porque la otra respuesta es innecesariamente formal para algo tan simple.

Uno de los mejores documentos que he encontrado en internet es:

Página en adelaide.edu.au

Incluye una explicación simple, con un ejemplo escrito en Matlab. Explica el Algoritmo de Metrópolis con una distribución de propuesta gaussiana que satisface el requisito de simetría y un procedimiento de “recorrido aleatorio” donde la distribución de la propuesta se vuelve a centrar después de cada paso en el último valor generado por la cadena de Markov. Encontré que varía simple de entender

More Interesting

¿Qué estructura de datos debo usar si estoy diseñando un algoritmo que clasifica las páginas por relevancia de acuerdo con la cantidad de veces que se ven?

¿Qué viene después de aprender la biblioteca de plantillas estándar, las estructuras de datos y los algoritmos en C ++?

¿Qué algoritmos usa Quora para restringir que el contenido de ciertos escritores se transmita tanto como otros?

Si factoro números grandes en [matemáticas] O (n ^ 2) [/ matemáticas] ¿puedo ganar dinero con eso?

¿Por qué una elección de K es mejor que otras en el algoritmo K-means?

¿Qué tipo de algoritmo es efectivo (95-100%) para detectar hasta 15 dentro de una habitación?

Para (I = 0; I <3; I ++) fork (), ¿cómo puedo hacer un algoritmo para contar el número de procesos y mostrarlo solo una vez?

¿Cuál es la técnica para crear una solución DP iterativa a partir de su solución recursiva?

¿Cuál es el algoritmo detrás de la creación de una nueva fuente que solo muestra publicaciones de tus seguidores?

¿Por qué la notación O grande no se parece más a O (c) y O (cn) en lugar de a O (1) y O (n), esto último no tiene sentido?

¿Cómo ordena Quora los elementos que aparecen en la secuencia de un usuario?

¿Cuáles son los ejemplos prácticos de algoritmos de clasificación? He oído hablar de la clasificación de burbujas, la clasificación rápida y la clasificación por inserción. ¿Cuáles son los ejemplos prácticos de estos algoritmos? ¿Para qué se usan y dónde son necesarios en los sistemas de software?

¿Qué algoritmos de máquina requieren escala / normalización de datos?

¿Dónde puedo encontrar problemas difíciles de algoritmo / estructura de datos?

¿Cuál es el mejor algoritmo de eliminación para un árbol de búsqueda binario sin usar un nodo padre adicional?