4 votos

¿Cómo inicializar el algoritmo EM cuando se intenta ajustar los datos a un modelo de mezcla separable?

Como parte de mis estudios, estoy tratando de agrupar las co-ocurrencias de URLs y etiquetas en los datos de Delicious. Encontré un método prometedor para esto en un artículo llamado " Semántica emergente de las folcsonomías: Un estudio cuantitativo " (páginas 6-13). Se utilizó un Modelo de Mezcla Separable (SMM, descrito en el documento " Modelos estadísticos para datos de coocurrencia " páginas 2-4) para modelar los datos y un algoritmo EM adaptado para ajustar los datos conocidos al modelo.

He codificado el algoritmo con Java y lo he ejecutado con un poco de datos reales de Delicious. Por desgracia, los resultados no parecían correctos. Los resultados mostraron que cada etiqueta tenía igual (aunque variando de etiqueta a etiqueta) posibilidad de pertenecer a cada concepto.

Ahora bien, aunque este problema podría deberse a que simplemente codifiqué mal el algoritmo EM adaptado, también me gustaría descartar la posibilidad de que las variables se hayan inicializado incorrectamente. Esta vez, como no conocía ninguna forma mejor de hacerlo, simplemente inicialicé todas las $R_{r\alpha}$ (variables que denotan la posibilidad de co-ocurrencia $r$ de haber planteado desde el concepto $\alpha$ ) sean iguales, $1/K$ ( $K$ siendo el número de conceptos).

Mi pregunta es doble.
¿Podrían los resultados planos provenir de la inicialización de la variable plana?
¿Cómo debo inicializar las variables del algoritmo EM en este caso?

9voto

karatchov Puntos 230

Siempre que aplico un nuevo algoritmo, me hago con un conjunto de datos fácil de interpretar en el que pueda probarlo. Esto tiene varias ventajas, por ejemplo, el tiempo de ejecución (utilizar un conjunto de datos pequeño) o la visualización (hacer que las cosas que quieres graficar tengan dimensión 2 o 3).

Por supuesto, el comportamiento que se ve podría ser el resultado del conjunto de datos. Sin embargo, me parece poco probable. Sin embargo, una forma estándar de inicializar las variables es simplemente aleatorizarlas uniformemente en un intervalo como [-1, 1], [-0,1, 0,1] o algo así. También he visto la normal estándar.

No estoy seguro de que funcione para los SMM, pero para los modelos de mezcla gaussiana y las mezclas PCA, tiene sentido ejecutar unas cuantas iteraciones de K-Means antes de pasar a EM (y utilizar los centros como responsabilidades). Tal vez usted quiere probar eso.

0voto

Adrian Puntos 168

Para responder a la primera parte de mi pregunta, si una estimación inicial plana conduce a datos planos, la respuesta sería "sí". No sólo el hecho de tener una conjetura plana aplana el resultado, sino que también lo hace invariable (un hecho que pasé por alto gracias a un pequeño error en mi algoritmo).

He aquí una prueba:
Suponiendo que $\langle R_{r\alpha} \rangle^{(t)} = x$ para todos $r$ y $\alpha$ .
$\hat{\pi}_{\alpha}^{(t)} = \frac1{L}\sum_{r=1}^{L}\langle R_{r\alpha} \rangle^{(t)} = \frac{Lx}{L} = x$ para cada $\alpha$ .

$\hat{p}_{i|\alpha}^{(t)} = \frac1{L\hat{\pi}_\alpha^{(t)}} \sum_{r:i(r)=i} \langle R_{r\alpha} \rangle^{(t)} = \frac{n_ix}{Lx} = \frac{n_i}{L}$ para cada $\alpha$ , $n_i$ es el número de co-observaciones donde $r:i(r)=i$ es cierto.

$\hat{q}_{j|\alpha}^{(t)} = \frac1{L\hat{\pi}_\alpha^{(t)}} \sum_{r:j(r)=j} \langle R_{r\alpha} \rangle^{(t)} = \frac{n_jx}{Lx} = \frac{n_j}{L}$ para cada $\alpha$ , $n_j$ es el número de co-observaciones donde $r:j(r)=j$ es cierto.

A partir de ellas, podemos calcular
$\langle R_{r\alpha} \rangle^{(t+1)} = \frac{\pi_{\alpha}^{(t)}\hat{p}_{i(r)|\alpha}^{(t)}\hat{q}_{j(r)|\alpha}^{(t)}}{\sum_{v=1}^K\pi_{v}^{(t)}\hat{p}_{i(r)|v}^{(t)}\hat{q}_{j(r)|v}^{(t)}} = \frac{x(n_{i(r)}n_{j(r)})/L^2}{Kx(n_{i(r)}n_{j(r)})/L^2} = \frac1{K}$ para todos $r$ y $\alpha$ .

Y así, $R_{r\alpha}$ es de nuevo una constat para la siguiente ronda de iteración.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X