(interactuando) MCMC para multimodal posterior

9

Estoy tratando de muestrear desde un posterior que tiene muchos modos, particularmente lejos de los demás, usando MCMC. Parece que en la mayoría de los casos, solo uno de estos modos contiene el 95% de HP que estoy buscando. Traté de implementar soluciones basadas en simulación templada, pero esto no proporciona resultados satisfactorios, ya que en la práctica pasar de un "rango de captura" a otro es muy costoso.

Como consecuencia, me parece que una solución más eficiente sería ejecutar muchos MCMC simples desde diferentes puntos de partida y sumergirse en la solución dominante haciendo que los MCMC interactúen entre sí. ¿Sabes si hay alguna forma adecuada de implementar tal idea?

Nota: Encontré ese papel http://lccc.eecs.berkeley.edu/Papers/dmcmc_short.pdf (cadena distribuida de Markov Monte Carlo, Lawrence Murray) que se parece mucho a lo que estoy buscando pero realmente no entiendo el diseño de la función .Ri

[EDITAR]: la falta de respuestas parece indicar que no hay una solución obvia para mi problema inicial (haciendo que varias muestras de MCMC de la misma distribución objetivo desde un punto de partida diferente interactúen entre sí). Es eso cierto ? ¿Por qué es tan complicado? Gracias

peuhp
fuente
Suena como para lo que he usado anteriormente "Population MCMC". Ver "Estimación de los factores de Bayes a través de la integración termodinámica y MCMC de la población" por Calderhead y Girolami. Lo siento si llega un poco tarde, ¡pero tal vez otras personas apreciarán la referencia!
Sam Mason
Posiblemente lo mismo que Population MCMC es Sequential Monte Carlo.
Robert P. Goldman

Respuestas:

1

En primer lugar, recomendaría buscar un método mejor, o al menos un método con una descripción más detallada, ya que la "cadena distribuida de Markov Monte Carlo" del documento al que se refiere no parece estar claramente establecida. Las ventajas y desventajas no están bien exploradas. Hay un método, que apareció en arxiv recientemente llamado " Wormhole Hamiltonian Monte Carlo ", recomendaría comprobarlo.

Ri(θi)ith

[ACTUALIZACIÓN:] La interacción entre varias cadenas y la aplicación de esta idea a la muestra de distribución posterior se puede encontrar en métodos MCMC paralelos, por ejemplo aquí . Sin embargo, ejecutar varias cadenas y obligarlas a interactuar puede no encajar en la parte posterior multimodal: por ejemplo, si hay una región muy pronunciada donde se concentra la mayor parte de la distribución posterior, la interacción de las cadenas puede incluso empeorar las cosas al apegarse a ese específico región y no explorar otras regiones / modos menos pronunciados. Por lo tanto, recomendaría buscar MCMC diseñado específicamente para problemas multimodales. Y si desea crear otro / nuevo método, luego de saber lo que está disponible en el "mercado", puede crear un método más eficiente.

Tomás
fuente
Gracias por tu ayuda. Esto no es totalmente lo que esperaba, pero tal vez estoy buscando cosas inalcanzables. Actualmente estoy investigando (no estoy seguro de poder derivar todo lo que necesita un MCMC hamiltoniano), el llamado MC de lanzamiento rápido que encontré a través de sus referencias. Te doy la recompensa, gracias de nuevo por tus consejos.
peuhp
@peuhp, esto está estrechamente relacionado con los métodos hamiltonianos mencionados anteriormente, pero el Sampler Equi-Energy es un método MCMC que se factura específicamente como un método para distribuciones posteriores multimodales. Sé que funciona iniciando varias cadenas paralelas y permitiendo saltos entre cadenas, pero no tengo suficiente conocimiento o experiencia con el método para publicar una respuesta. Echa un vistazo al enlace. Espero que esto ayude.
Macro
1

Debe probar multinest: https://arxiv.org/pdf/0809.3437.pdf https://github.com/JohannesBuchner/MultiNest Es un motor de inferencia bayesiano que le dará muestras de parámetros para una distribución multimodal.

El enlace github contiene código fuente multinest que compila e instala según las instrucciones. También tiene un envoltorio de Python que es más fácil de usar. Los códigos de ejemplo tienen una sección anterior que sirve para restringir sus parámetros y una sección de probabilidad que contiene su probabilidad. el archivo de configuración contiene todas sus configuraciones y encadena la salida multinest de la carpeta después del ajuste. te dará muestras de tus parámetros

Eric Kamau
fuente
Bienvenido a CV y ​​gracias por tu gran respuesta. Tal vez pueda mejorar su respuesta resumiendo el Githublink.
Ferdi
1
El enlace github contiene código fuente multinest que compila e instala según las instrucciones. También tiene un envoltorio de Python que es más fácil de usar. Los códigos de ejemplo tienen una sección previa que sirve para restringir sus parámetros, y una sección de probabilidad que contiene su probabilidad. el archivo de configuración contiene todas sus configuraciones y encadena la salida multinest de la carpeta después del ajuste. le dará muestras de sus parámetros.
Eric Kamau
Guau. Eso es asombroso. Voté tu respuesta. En el futuro, puede incluir dicha descripción cada vez que comparta un enlace.
Ferdi
0

Esto parece ser un problema difícil y continuo en las estadísticas computacionales. Sin embargo, hay un par de métodos menos avanzados que deberían funcionar bien.

Digamos que ya ha encontrado varios modos distintos de la parte posterior y está contento de que estos sean los modos más importantes, y si la parte posterior alrededor de estos modos es razonablemente normal. Luego puede calcular el hessian en estos modos (por ejemplo, usando optim en R con hessian = T) y puede aproximar el posterior como una mezcla de normales (o distribuciones t). Ver p318-319 en Gelman et al. (2003) "Análisis de datos bayesianos" para más detalles. Luego, puede usar la aproximación normal / mezcla de t como la distribución de la propuesta en una muestra de independencia para obtener muestras de la parte posterior completa.

Otra idea que no he probado es el muestreo de importancia recocida (Radford Neal, 1998, enlace aquí ).

Estera
fuente
Otra cosa, si ya tiene un conjunto de cadenas que cada una parece haber "convergido" localmente, sería hacer algún tipo de muestreo de importancia de la combinación de todas sus cadenas. Aunque no estoy seguro de eso.
Mat
Bienvenido al foro Mat. No dude en editar su respuesta para agregar sus nuevas ideas en lugar de comentar su propia respuesta. No hay nada de malo en eso :)
brumar
0

¿Qué hay de probar un nuevo método MCMC para multimodalidad, un algoritmo Metropolis atractivo y repulsivo ( http://arxiv.org/abs/1601.05633 )? Este muestreador multimodal funciona con un solo parámetro de ajuste, como un algoritmo Metropolis, y es fácil de implementar.

RAM
fuente