2010-03-22 7 views
8

Supongamos que tengo un conjunto de muestras ponderadas, donde cada muestra tiene un peso correspondiente entre 0 y 1. Me gustaría estimar los parámetros de una distribución de mezcla gaussiana que está sesgado hacia las muestras con mayor peso. En el caso habitual no ponderado, la estimación de la mezcla gaussiana se realiza a través del algoritmo EM. ¿Alguien sabe una implementación (cualquier idioma está bien) que permita pasar pesas? Si no, ¿alguien sabe cómo modificar el algoritmo para tener en cuenta los pesos? Si no, ¿alguien me puede dar una pista sobre cómo incorporar los pesos en la fórmula inicial de la formulación de máxima probabilidad de logaritmo del problema?Estima la densidad gaussiana (mezcla) de un conjunto de muestras ponderadas

Gracias!

+0

Es "EM" minimización de errores, o algo completamente distinto? Además, hay * muchos * paquetes numéricos y de análisis que van desde lo básico y general hasta lo más especializado. Podría ser útil si dijese algo sobre el dominio del problema y el entorno preferido. Fortran? C++? ¿Java? ¿Pitón? ¿Estás bien aprendiendo una nueva herramienta importante como R o root? – dmckee

+0

Ok, entonces mi idioma preferido sería Python. Pero cualquiera de los idiomas anteriores, excepto root (nunca lo escuché), también estaría bien. EM significa Maximización de Estimación y es un esquema iterativo general que se puede usar para la estimación de los parámetros de un modelo de mezcla gaussiana a partir de los datos. – Christian

+0

No estoy familiarizado con ese método y no puedo hacer recomendaciones específicas. – dmckee

Respuesta

0

Sólo una sugerencia, ya que no se envían otras respuestas.

Puede usar el EM normal con GMM (OpenCV por ejemplo tiene muchos envoltorios para muchos idiomas) y poner algunos puntos dos veces en el clúster que desea tener "más peso". De esa forma, el EM consideraría esos puntos más importantes. Puede eliminar los puntos extra más adelante si es importante.

De lo contrario, creo que esto va bastante matemática extrema a menos que tenga una sólida base en las estadísticas avanzadas.

+0

Esto no funciona cuando tienes muchos puntos o intrínsecamente no enteros pesas Como me sucedió a mí tener ambos: un histograma de millones de puntos con pesos no enteros ... – ansgri

3

Puede calcular una función de verosimilitud logarítmica ponderada; simplemente multiplique cada punto con su peso. Tenga en cuenta que necesita usar la función log-Likelihood para esto.

Así que su problema se reduce a minimizar $ - \ ln L = \ sum_i w_i \ ln f (x_i | q) $ (vea the Wikipedia article para el formulario original).

4

Acabo de tener el mismo problema. Aunque la publicación es más antigua, podría ser interesante para otra persona. La respuesta de bocina es, en principio, correcta, simplemente no es inmediato para ver cómo afecta la implementación del algoritmo. Desde el artículo de Wikipedia para Expectation Maximization y un muy buen Tutorial, los cambios pueden derivarse fácilmente.

Si $ v_i $ es el peso de la i-ésima muestra, el algoritmo del tutorial (ver el final de la Sección 6.2.) Cambia para que $ gamma_ {ij} $ se multiplique por ese factor de ponderación. Para el cálculo de los nuevos pesos $ w_j $, $ n_j $ tiene que dividirse por la suma de los pesos $ \ sum_ {i = 1}^{n} v_i $ en lugar de solo n. Eso es todo ...

Cuestiones relacionadas