Pomegranate: Pregunta: Muestreo de probabilidad condicional

Creado en 28 feb. 2016  ·  18Comentarios  ·  Fuente: jmschrei/pomegranate

Hola,
No sé si este es el lugar apropiado para preguntar esto, por favor dígame si no lo es.
Para mi tesis de maestría, me gustaría estimar probabilidades condicionales de múltiples variables aleatorias que pueden ser tanto discretas como continuas (mezcla de variables continuas y discretas). Creo que esto podría hacerse usando granada haciendo una estimación de densidad en esta mezcla y en la distribución conjunta de las variables de evidencia. El resultado sería una fracción de 2 mezcla de distribuciones, pero no una distribución de forma cerrada. Por lo tanto, para tomar muestras de la distribución condicional, tendría que recurrir al muestreo de rechazo (o un método MCMC optimizado). ¿Es esto correcto?

Comentario más útil

@jmschrei : ¡Claro! El método sample () sería increíble o una posibilidad de migrar el modelo de granada a PyMC para que el muestreo se pueda realizar allí. :)

Todos 18 comentarios

pomegranate actualmente no admite distribuciones condicionales que están condicionadas a distribuciones continuas, desafortunadamente. Sin embargo, es algo que quiero agregar pronto. Sin embargo, la idea suena plausible. Podría considerar PyMC, que es más completo en esta área.

Que, si se me permite, una sugerencia. PyMC también admite mezclas de distribución, HMM, etc. Pero no existen métodos de fábrica para crearlas. Sería genial si Pomegranate (que tiene una interfaz muy clara) pudiera integrarse con los métodos de muestreo (optimizados) de PyMC. Quizás, convirtiendo un modelo de granada en un modelo de PyMC.

Parece una idea razonable. Sin embargo, si tuviera tiempo para configurarlo, también tendría tiempo para implementarlo en granada. De hecho, hoy tendré algo de tiempo para trabajar en estos temas. Si puede proporcionar un fragmento de código de muestra que le gustaría que funcione, puedo ver si puedo implementarlo pronto.

Todavía no he usado granada, estoy en la fase de buscar la biblioteca más completa para mi problema. Pero con distribuciones condicionales lo tendría todo. Lo que sí tengo es mi código actual en el que hago exactamente lo que mencioné en mi primera publicación, pero solo usando una mezcla de gaussianos (para lo cual existe una derivación de forma cerrada).

editar: mostraré un fragmento de cómo lo uso ahora con sklearn GMM

weighted_fit es una versión extendida de sklearns fit () que maneja datos ponderados

gmm.weighted_fit (data, weight_data)

mis datos son vectores continuos tridimensionales [X, Y, Z]

z = 1,2

P (X = nan, X = nan | p = Z)

(con_mean, con_cov, con_weights) = utility.cond_dist_gmm (np.array ([np.nan, np.nan, z]), gmm.means_, gmm._get_covars (), gmm.weights_)

Pseudocódigo ilustrativo de lo que necesito agregar. Básicamente, si tienes algo como esto:

a = NormalDistribution( 5, 2 )
b = ConditionalGaussianDistribution( w=[5], w0=2, sigma=2 )

Eso especificaría una distribución principal que es normal y una distribución normal condicional centrada en una regresión lineal de los padres. Lo que sea más conveniente para ti.

No estoy seguro exactamente de lo que estás preguntando. Los GMM se implementan en granada (y creo que más rápido que sklearn). ¿Está buscando modelos de mezcla gaussiana condicional?

GMM condicionales que tengo.
Lo expresaré de manera diferente, dados los datos con variables tanto discretas como continuas, por ejemplo, d = [c1, c2, d1, d2].
Me gustaría poder hacer esto:

k modelo de mezcla de componentes, para modelar los datos continuos [d1, d2], el multivariado es bidimensional para modelar el vector [d1, d2]

gmm = MixtureDistribution (MultivariateGaussianDistribution1, MultivariateGaussianDistribution2, ..., MultivariateGaussianDistributionk)

distribución discreta

cat1 = DiscreteDistribution ([(0,0.1), (1,0.3), (2,0.6)])
cat2 = DiscreteDistribution ([(0,0.6), (1,0.4)])

El nuevo modelo define la distribución conjunta de datos tanto continuos como discretos -> p (d)

No creo que esto sea posible, todavía, en granada.

Creo que es quizás por eso que no estaba exactamente claro lo que pretendía, mezclé la mezcla de distribución con la distribución conjunta mixta ...

consulte Distribución conjunta del "caso mixto" en la parte inferior de la página para ver la formulación matemática

d_model = Distribución conjunta (gmm, cat1, cat2)

ajustar los parámetros del modelo con datos

d_model.from_sample (datos)

ahora, dado que conozco (aproximadamente) la probabilidad conjunta, me gustaría saber, por ejemplo, la probabilidad conjunta de [c1, c2] dado que d1 = 1 y d2 = 0

cond_d = ConditionalDistr (d_model, [np.nan, np.nan, 1,0])

Lo siento, todavía no entiendo perfectamente a qué te refieres. ¿Está diciendo que desea poder definir una distribución condicional para tener padres tanto continuos como discretos? Básicamente, ¿una red bayesiana con variables tanto discretas como continuas?

Sí, creo que sería eso. Pero investigué un poco más y evitaré cualquier forma de método de muestreo a favor de EM. Incluso si esto reduce la expresividad de mi modelo. Entonces, si implementara el modelo de mezcla gaussiana condicional (mi propia implementación no funciona correctamente), sería muy apreciado. Puedo proporcionar el papel que utilicé, pero probablemente tenga todos los recursos que necesita.

Claro, me gustaría mirar el periódico solo para asegurarme de que estamos en la misma página.

Hay 2 enfoques que he encontrado:
El que probé: Apéndice A en Procesos gaussianos para el aprendizaje automático
o el Capítulo 2 en Modelos de mezclas gaussianas condicionales para Mapeo de riesgos ambientales

¿Avanzaste hacia la distribución condicional?

Todavía no he tenido mucho tiempo para profundizar en algo como esto, los posibles días de visita de los estudiantes son esta semana. Volveré sobre este tema pronto.

Esto desapareció por completo de mi radar, ¡lo siento! Si trabajara en esto pronto, ¿sería útil para usted o completó su tesis?

No hay problema.
Y gracias por responderme, pero mi tesis está terminada.
Buena suerte con tu biblioteca.

El 1 de septiembre de 2016, a las 04:21, Jacob Schreiber [email protected] escribió:

Esto desapareció por completo de mi radar, ¡lo siento! Si trabajara en esto pronto, ¿sería útil para usted o completó su tesis?

-
Estás recibiendo esto porque eres el autor del hilo.
Responda a este correo electrónico directamente, véalo en GitHub https://github.com/jmschrei/pomegranate/issues/86#issuecomment -243958007, o silencie el hilo https://github.com/notifications/unsubscribe-auth/AG5qEFMbUPk0uoKA4JTxdt8CaxTfPX4HGX5ql.

Estimado @jmschrei, ¿cuál es su proceso sobre este tema? También estaría muy interesado. ¡Gracias!

Hola @jaSunny. ¿Puede describir exactamente qué es lo que le gustaría implementar?

@jmschrei : ¡Claro! El método sample () sería increíble o una posibilidad de migrar el modelo de granada a PyMC para que el muestreo se pueda realizar allí. :)

¿Fue útil esta página
0 / 5 - 0 calificaciones