2011-10-02 9 views
7

Tengo una secuencia de 500 observaciones de los movimientos de un pájaro. Quiero predecir cuál sería el 501º movimiento del pájaro. Busqué en la web y creo que esto se puede hacer usando HMM, sin embargo, no tengo ninguna experiencia en ese tema. ¿Alguien puede explicar los pasos de un algoritmo utilizado para resolver este problema?Modelo oculto de Markov que predice la siguiente observación

+0

Yo diría que algunos ya lo tienen. .. al fin ... http://en.wiki pedia.org/wiki/Hidden_Markov_model – Gleno

Respuesta

10
x1-x2-x3-x4-x5......x500-x501 
| | | | |  | 
y1 y2 y3 y4 y5  y500 

x - actual state 
y - observations 

P(y_i|x_i) - how you think the observation depends on the actual state 
P(x_i|x_(i-1)) - how you think the actual state evolves 

for i = 1,2,3...,501: 
    write down best-guess of x_i based on y_i* and x_(i-1)** 
you have your solution, since you only care about the last state 

* missing in step 1 
** missing in step 501 

Lo anterior se conoce como el algoritmo de avance-retroceso (http://en.wikipedia.org/wiki/Forward-backward_algorithm) y es un caso especial del algoritmo de suma-producto (en los árboles de la red bayesiana y árboles red de Markov) en este tipo particular de árbol (un simple cadena con los nodos colgando). Puede ignorar el paso "hacia atrás" porque no lo necesita, ya que solo le importa el último estado.

Si las probabilidades de transición en su HMM son desconocidas, debe:

  • realizar un algoritmo de aprendizaje, tales como EM (conocido como Baum-Welch cuando se realiza en HMM)
  • tomar una conjetura ingenua basado en el conocimiento del dominio (ej. si sus estados ocultos son ADN puede contar las frecuencias de eventos de transición dado el estado anterior marcando manualmente las transiciones en datos de ADN y calculando las frecuencias)
+0

lo siento, no pude entender tu respuesta. Solo tengo una secuencia de 500 números entre 0 y 8. (como 5, 4, 6, 6, ..., 0, 2) Y quiero obtener el 501 número más posible. – user975733

+0

primero piense en estas preguntas: ** 1) ** '" ¿Cuál es el rango de mis estados reales/ocultos? (Puede no ser 0-8, podría ser por ejemplo 0-100 o incluso no numérico como { 'alto', 'bajo'}) "' ** 2) ** '" Si observo un 5, ¿qué significa eso sobre el estado real/oculto? '' ** 3) ** '" Si el real estado en el tiempo = t es [algo], ¿qué creo que será el estado en el tiempo = t + 1? (Por ejemplo, si x500 = 'alto', qué tan probable es que el pájaro cambie a volar 'bajo' ?) "' – ninjagecko

Cuestiones relacionadas