machine-learning - ocultos - modelo de markov investigacion de operaciones
Modelo oculto de Markov para mĂșltiples variables observadas (5)
Descubrí que esto se puede lograr modelando el sistema como un clasificador dinámico de Bayes (NaB) dinámico , que es una ligera extensión de un HMM ordinario (variable única) que puede atender escenarios de observación múltiple como se muestra en la figura.
Se recomienda precaución ya que el DNB todavía tiene un estado oculto y, por lo tanto, no debe considerarse como una expansión secuencial directa del clasificador original Naive Bayes. El "ingenuo" en el nombre del algoritmo se origina en el hecho de que todas las variables observadas son independientes entre sí, dada la variable de estado oculta.
Al igual que en un HMM, las estimaciones de parámetros de este modelo se pueden lograr a través del algoritmo Baum Welch (o EM, cualquiera que sea su nombre). Dado que la distribución de las emisiones en cada paso del tiempo ahora es el producto de P (Yti | Xt) de cada variable observada Yti, las ecuaciones de las variables directa, posterior y conjunta deben modificarse ligeramente como se describe en la sección 3 de este paper de Aviles- Arriaga et al.
Estoy tratando de usar un modelo oculto de Markov (HMM) para un problema en el que tengo M diferentes variables observadas (Yti) y una única variable oculta (Xt) en cada punto de tiempo, t. Para mayor claridad, asumamos que todas las variables observadas (Yti) son categóricas, donde cada Yti transmite información diferente y, como tal, puede tener diferentes cardinalidades. Un ejemplo ilustrativo se da en la siguiente figura, donde M = 3.
Mi objetivo es entrenar la transición, la emisión y las probabilidades previas de un HMM, usando el algoritmo de Baum-Welch, de mis secuencias de variables observadas (Yti). Digamos, Xt inicialmente tendrá 2 estados ocultos.
He leído algunos tutoriales (incluido el famoso artículo de Rabiner) y revisé los códigos de algunos paquetes de software HMM, a saber, '' HMM Toolbox in MatLab '' y '' hmmpytk package en Python ''. En general, hice una extensa búsqueda en la web y todos los recursos, que pude encontrar, solo cubren el caso, donde solo hay una única variable observada (M = 1) en cada momento. Esto me hace pensar cada vez más que los HMM no son adecuados para situaciones con múltiples variables observadas.
- ¿Es posible modelar el problema representado en la figura como un HMM?
- Si es así, ¿cómo se puede modificar el algoritmo de Baum-Welch para atender el entrenamiento de los parámetros HMM según las probabilidades de observación (emisión) de múltiples variables?
- Si no, ¿conoce alguna metodología que sea más adecuada para la situación que se muestra en la figura?
Gracias.
Edición: en este paper , la situación representada en la figura se describe como un Dynamic Naive Bayes, que, en términos de los algoritmos de entrenamiento y estimación, requiere una ligera extensión de los algoritmos de Baum-Welch y Viterbi para una HMM de variable única.
La forma más sencilla de hacer esto, y que el modelo siga siendo generativo, es hacer que y_ sea condicionalmente independiente, dado que x_is
. Esto lleva a estimadores triviales y relativamente pocos parámetros, pero es un supuesto bastante restrictivo en algunos casos (es básicamente la forma HMM del clasificador Naive Bayes).
EDIT: lo que esto significa. Para cada paso de tiempo i, tiene una observación multivariable y_i = {y_i1...y_in}
. Usted trata el y_ij
como condicionalmente independiente dado x_i, de modo que:
p(y_i|x_i) = /prod_j p(y_ij | x_i)
entonces está aprendiendo efectivamente un clasificador de Bayes ingenuo para cada valor posible de la variable oculta x. (Condicionalmente, la independencia es importante aquí: hay dependencias en la distribución incondicional de los ys). Esto se puede aprender con el estándar EM para un HMM.
También podría, como dijo un comentarista, tratar la concatenación de los y_ijs
como una sola observación, pero si la dimensionalidad de cualquiera de las variables j es trivial, esto llevará a muchos parámetros y necesitará mucho más entrenamiento. datos.
¿Necesitas específicamente que el modelo sea generativo? Si solo está buscando inferencia en el x_is
, es probable que se le sirva mucho mejor con un campo aleatorio condicional , que a través de sus funciones de características puede tener observaciones mucho más complejas sin las mismas suposiciones restrictivas de independencia.
Lo que estás buscando se llama Perceptrón Estructurado. Eche un vistazo a la siguiente diapositiva en la página 42. http://www.cs.umd.edu/class/fall2015/cmsc723/slides/inclass_09.pdf
Puedes probar el modelo semi-Markov oculto que es una extensión de hmm. Permite que cada estado dure varios periodos de tiempo.
podría modelar el problema utilizando la estructura de tensores de un tensor utilizando las dos series de tiempo y luego identificar los parámetros HMM. "La identificación del modelo de Markov oculto mediante tensores" es una buena referencia para esto.
Matlab proporciona caja de herramientas tensorial.
Para tu información, estoy trabajando en un problema relacionado, así que no dudes en enviarme un correo electrónico si quieres hablar de manera más privada.