2011-10-02 8 views
7

Ho una sequenza di 500 osservazioni dei movimenti di un uccello. Voglio pronosticare quale sarebbe il movimento 501st dell'uccello. Ho cercato sul web e immagino che questo possa essere fatto usando HMM, tuttavia non ho alcuna esperienza in merito. Qualcuno può spiegare i passaggi di un algoritmo utilizzato per risolvere questo problema?Modello di Markov nascosto che preannuncia l'osservazione successiva

+0

Direi che alcuni hanno già. .. alla fine ... http://en.wiki pedia.org/wiki/Hidden_Markov_model – Gleno

risposta

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 

che questo è noto come algoritmo avanti-indietro (http://en.wikipedia.org/wiki/Forward-backward_algorithm) ed è un caso speciale dell'algoritmo somma-prodotto (su alberi rete Bayesiano ed alberi rete Markov) su questo particolare tipo di albero (un semplice catena con nodi pendenti). Puoi ignorare il passaggio "indietro" perché non ne hai bisogno, dal momento che ti interessa solo l'ultimo stato.

Se le probabilità di transizione nel HMM sono sconosciuti, è necessario:

  • eseguire un algoritmo di apprendimento, come ad esempio EM (conosciuto come Baum-Welch quando eseguita su HMM)
  • prendere una supposizione naif basato sulla conoscenza del dominio (ad esempio se i tuoi stati nascosti sono DNA puoi contare le frequenze degli eventi di transizione dati lo stato precedente etichettando manualmente le transizioni sui dati del DNA e calcolando le frequenze)
+0

scusa non ho potuto capire la tua risposta. Ho solo una sequenza di 500 numeri tra 0 e 8. (come 5, 4, 6, 6, ..., 0, 2) E voglio ottenere il massimo numero 501st. – user975733

+0

pensa prima a queste domande: ** 1) ** '" Qual è l'intervallo dei miei stati reali/nascosti? (Potrebbe non essere 0-8, potrebbe essere per esempio 0-100 o anche non numerico come { 'alto', 'basso'}) "' ** 2) ** '" Se osservo un 5, cosa significa ciò che è lo stato reale/nascosto? "" ** 3) ** "" Se il vero allo stato = t è [qualcosa], cosa penso che lo stato al tempo = t + 1 sarà? (Ad esempio, se x500 = "alto", quanto è probabile che l'uccello passerà al volo "basso" ?) "' – ninjagecko