Comprender e implementar un modelo de proceso de Dirichlet


11

Estoy tratando de implementar y aprender un Proceso de Dirichlet para agrupar mis datos (o como la gente de aprendizaje automático habla, estimar la densidad).

Leí mucho papel sobre el tema y de alguna manera tuve la idea. Pero todavía estoy confundido; aquí hay una serie de preguntas,

1) ¿Cuál es la diferencia entre el modelo de restaurante chino y el DP? 2) ¿Cuál es la diferencia entre los modelos Infinite Mixture y DP?

Para comprender completamente todo, he implementado el modelo de restaurante chino, el modelo de urna de Polya y el rompimiento de palos; Pero parece que implementar DP desde cero es algo difícil de hacer. Puedo leer y escribir python, R, Matlab.

1) ¿Hay algún código que recomiende leer y mejorar para comprender / trabajar / desarrollar DP completamente? 2) Según mi investigación, los códigos para el Proceso de Dirichlet no fueron fáciles de leer. realmente largo, largo (probablemente porque la eficiencia era más importante que la claridad). 3) Sin embargo, hay más código en el modelo de mezcla infinita que en el proceso de Dirichlet. Si estos dos métodos no están lejos el uno del otro, ¿puedo usar IMM? Básicamente, quiero construir mi nuevo modelo, y no quiero reinventar una rueda.

Agradezco tus comentarios

  • ACTUALIZACIÓN ya que muchas personas han recomendado el tutorial de Edwin Chen sobre "Modelo de mezcla infinita con Bayes no paramétricos y el DP" ; Este tutorial tiene un título engañoso; Solo cubre diversas representaciones de DP, especificidad, RCP, rotura de palos, modelo de polia-urna; y al final está usando un modelo de mezcla de scikit y hace un par de histogramas en cada grupo;

No entiendo lo que es engañoso con el título de Chen. Él usa un DP-GMM de scikit, sí.
Anne van Rossum

La página de Yee Whye Teh: stats.ox.ac.uk/~teh/npbayes.html tiene varios buenos tutoriales además de una implementación matlab de una muestra de Gibbs contraída para el Modelo de Mezcla de Procesos Dirichlet (DPMM).
Vadim Smolyakov

Respuestas:


5

¿Cuál es la diferencia entre DP y CRP?

El proceso de restaurante chino (CRP) es una distribución sobre particiones de enteros . La conexión con el Proceso de Dirichlet (DP) existe gracias al teorema de De Finetti.

Teorema de De Finetti: supongamos que tenemos un proceso aleatorio que es infinitamente intercambiable , entonces la probabilidad conjunta tiene una representación como una mezcla:(θ1,,θN)p(θ1,,θN)

p(θ1,,θN)=dP(G)i=1NG(θi)

por alguna variable aleatoria .G

La propiedad de intercambiabilidad significa que no nos importan los índices de las tablas (no nombramos las tablas) y no nos importa el orden de los clientes en una tabla en particular. La partición de clientes en diferentes conjuntos es la única estructura en la que estamos interesados. Esto significa que, dada una partición , no necesitamos conocer las asignaciones particulares de clientes a las tablas, solo necesitamos saber el número de clientes en cada mesa.

Teorema de De Finetti no ayuda en la búsqueda de la distribución . Solo dice que debería existir.G

El proceso de Dirichlet es anterior a las distribuciones . Informalmente, arrojas una distribución de probabilidad y cuando tomas muestras de ella, obtendrás una distribución de probabilidad después de la distribución de probabilidad.

La conexión entre ambos puede establecerse demostrando que si se muestrea a partir de un Proceso de Dirichlet, la ecuación en el teorema de De Finetti se cumple para este particular .GG

Si

GDP(α,H)

entonces

p({θ(z=0)0,,θ(z=0)n0},,{θ(z=k)0,,θ(z=k)nk})=αkΓ(α)Γ(α+n)i=0kΓ(ni)

Tenga en cuenta que es descrito por un CRP a través de probabilidades para particiones particulares. Aquí denota un índice de tabla . Y es el número de clientes en la tabla . Para completar, recuerde que el es:p(θ1,,θN)z=iiniiDP

{G(A1),,G(Ak)}Dirichlet(αH(A1),,αH(Ak))

Creo que está claro de esta exposición es que la conexión está ahí, pero no debe considerarse trivial. Tenga en cuenta también que no describí el CRP en el sentido de una distribución condicional sobre los clientes individuales entrantes. Esto agregaría otro paso conceptual más entre el CRP y el DP. Mi consejo: siéntase libre de sentirse incómodo al comprender directamente su relación y comience a jugar con la descripción de distribuciones conjuntas y marginales hasta que reproduzca la conexión. La PCR se obtiene al marginar a del DP.G

Para la conexión entre la probabilidad conjunta y la descripción secuencial de la PCR, ver [1].

¿Qué pasa si la intercambiabilidad no es válida? Si la intercambiabilidad no se mantiene, ya no hablamos sobre el DP o el CRP, sino sobre el Proceso de Dirichlet dependiente y el Proceso de restaurante chino dependiente. ¡Y naturalmente, la conexión entre ellos se pierde!

Ver [2] para más detalles. El CRP dependiente describe qué cliente quiere sentarse con qué (único) otro cliente. Al agrupar todas las relaciones cliente-cliente podemos realizar una tarea sobre tablas. El CRP dependiente no es marginalmente invariable: la probabilidad de una partición al eliminar un cliente también depende de ese mismo cliente. Por el contrario, el DP dependiente a menudo se define por este muy marginal: . Aquí es, por ejemplo, una distribución de Dirichlet o cualquier distribución que hace que y estén relacionados.GtDP(α,H)HGtGt

Hay muchas otras generalizaciones posibles, algunas de ellas admitirán una representación sobre particiones y sobre distribuciones, como el proceso de restaurante chino con dos parámetros con el proceso Pitman-Yor, o el proceso buffet indio con el proceso beta [3] . Algunos de ellos no lo harán.

  • [1] : Un tutorial sobre modelos no paramétricos bayesianos (2011) Gershman y Blei
  • [2] : Procesos de restaurantes chinos dependientes de la distancia (2011) Blei y Frazier
  • [3] : Procesos beta jerárquicos y el proceso buffet indio (2007) Thibaux y Jordan

Podría explicar más sobre qué son y cómo esa ecuación se deriva? θ(z=yo)norteyoαkΓ(α)Γ(α+norte)yo=0 0kΓ(norteyo)
Daeyoung Lim

Esos son los parámetros del clúster . La derivación se puede encontrar en math.stackexchange.com/questions/709959/… y se puede obtener integrando la distribución compuesta N-categorical-dirichlet. Extensión a un proceso que puede leer en mi blog en annevanrossum.com/blog/2015/03/03/sampling-of-dirichlet-process . Utiliza el documento técnico de Neal y creo que es la derivación más detallada que podrá encontrar en línea. niyo
Anne van Rossum

2

1) ¿Cuál es la diferencia entre Chinese Restaurant Model y DP?

Ninguna. CRP es una representación particular de DP. Dependiendo de su problema, es posible que desee utilizar una representación sobre otra (CRP, Stick-breaking, etc.).

2) ¿Cuál es la diferencia entre los modelos Infinite Mixture y DP?

DP solo se usa como previo para el modelo de mezcla infinita. Esta es la razón por la cual los modelos de mezcla gaussiana infinita también se denominan DP-GMM. En realidad, el primer artículo sobre el tema es "El modelo de mezcla gaussiana infinita" (Rasmussen, 1999)

3) Implementaciones

De hecho, estoy tratando de implementar el artículo de Rasmussen para un caso multivariado en Python. (usa el muestreo de Gibbs, que es más simple que las aproximaciones de inferencia variacional). Mientras tanto, encontré:


1

Estoy luchando con lo mismo. A través de este foro encontré algunos consejos:

http://scikit-learn.org/stable/modules/generated/sklearn.mixture.DPGMM.html

http://statistical-research.com/dirichlet-process-infinite-mixture-models-and-clustering/

El primero es la implementación de scikit-learn de una mezcla infinita de gaussianos multivariados (no se desanime por el n_componentsparámetro, aunque no estoy seguro de por qué está allí en realidad ...).

Este último contiene algún código en R y modela las cosas de una manera K-significa (me da la impresión), pero sin especificar K (por supuesto ;-)).

Si encuentra otros paquetes / descripciones útiles, ¡publíquelos!

Tom


gracias por la respuesta Miré tu segundo enlace y para mí no ha usado DP en su ejemplo. Es una especie de k-significa, de todos modos. Mantengamos esta actualización de la publicación colocando paquetes / descripciones útiles.
user4581

Yo estaba pensando exactamente lo mismo. Sin embargo, en el código se refiere dirichletClusters, así que pensé que tal vez estaba equivocado. Pero tampoco veo el DP en él ...
Tom

Mira esta video conferencia del propio Teh: videolectures.net/mlss09uk_teh_nbm ¡ Aproximadamente en el minuto 43 hay algunas ecuaciones que creo que son realmente útiles!
Tom

para actualizarlo, hay un paquete R, llamado DIRECTO. tiene una implementación muy clara de DP! ¡Comencé a leer el código y a educarme! Le recomiendo que eche un vistazo
user4581

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.