2011-10-02 16 views
7

Mam sekwencję 500 obserwacji ruchów ptaka. Chcę przewidzieć, jaki będzie ruch 501 ptaka. Przeszukałem sieć i myślę, że można to zrobić za pomocą HMM, jednak nie mam żadnego doświadczenia w tym temacie. Czy ktoś może wyjaśnić kroki algorytmu zastosowanego do rozwiązania tego problemu?Ukryty model Markowa przewidywanie następnej obserwacji

+0

Twierdzę, że niektóre już mają. .. na długości ... http://en.wiki pedia.org/wiki/Hidden_Markov_model – Gleno

Odpowiedz

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 

Powyższy znany jest jako przód-tył algorytmu (http://en.wikipedia.org/wiki/Forward-backward_algorithm) i jest szczególnym przypadkiem algorytmu sumy produktów (na Bayesa drzew sieciowych i Markowa sieci drzew) na tym konkretnym rodzaju drzewa (prosty łańcuch z wiszącymi węzłami). Możesz zignorować krok "do tyłu", ponieważ go nie potrzebujesz, ponieważ zależy ci tylko na ostatnim stanie.

Jeśli prawdopodobieństwo przejścia w swojej HMM nie są znane, należy albo:

  • wykonać algorytm uczenia się, takich jak EM (znany jako Bauma-Welcha gdy wykonywane na HMMs)
  • wziąć naiwne przypuszczenie w oparciu o wiedzę o danej dziedzinie (np. jeśli twoje ukryte stany to DNA, możesz zliczać częstotliwości zdarzeń przejściowych z poprzednim stanem poprzez ręczne oznaczanie przejść na danych DNA i obliczanie częstotliwości)
+0

Przepraszam, nie mogłem zrozumieć twojej odpowiedzi. Mam tylko sekwencję 500 liczb od 0 do 8. (jak 5, 4, 6, 6, ..., 0, 2) i chcę uzyskać jak najwięcej 501. numeru. – user975733

+0

najpierw pomyśl o tych pytaniach: ** 1) ** '" Jaki jest zakres moich stanów rzeczywistych/ukrytych? (Może nie być 0-8, może to być na przykład 0-100 lub nawet nieliczbowy { "high", "low"}) "** ** 2) **" Jeśli obserwuję 5, co to znaczy o tym, co jest stanem rzeczywistym/ukrytym? "** ** 3) **" Jeśli prawdziwy stan w czasie = t jest [czymś], co myślę, że stanem w czasie = t + 1 będzie? (Na przykład, jeśli x500 = "wysoki", jak prawdopodobne jest, że ptak przełączy się na latanie "nisko" ?) " – ninjagecko

Powiązane problemy