Скрытая модель Маркова, предсказывающая следующее наблюдение

У меня есть последовательность из 500 наблюдений за движениями птицы. Я хочу предсказать, каким будет 501-е движение птицы. Я искал в Интернете, и я думаю, что это можно сделать с помощью HMM, однако у меня нет никакого опыта в этом вопросе. Может ли кто-нибудь объяснить шаги алгоритма, используемого для решения этой проблемы?


person user975733    schedule 02.10.2011    source источник
comment
Я бы сказал, что у некоторых уже есть... подробно... en.wikipedia.org/wiki/Hidden_Markov_model   -  person Gleno    schedule 02.10.2011


Ответы (1)


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

Вышеизложенное известно как алгоритм прямого-обратного действия ( http://en.wikipedia.org/wiki/Forward-backward_algorithm ) и является частным случаем алгоритма суммы-произведения (на деревьях байесовских сетей и деревьях марковских сетей) на этом конкретном типе дерева (простая цепь с висящими узлами). Вы можете игнорировать шаг «назад», потому что он вам не нужен, так как вас интересует только последнее состояние.

Если вероятности перехода в вашем HMM неизвестны, вы должны:

  • выполнить алгоритм обучения, такой как EM (известный как Baum-Welch при выполнении на HMM)
  • сделать наивное предположение, основанное на знании предметной области (например, если вашими скрытыми состояниями является ДНК, вы можете подсчитать частоты событий перехода, учитывая предыдущее состояние, вручную пометив переходы в данных ДНК и вычислив частоты)
person ninjagecko    schedule 02.10.2011
comment
извините, я не мог понять ваш ответ. У меня есть только последовательность из 500 чисел от 0 до 8. (например, 5, 4, 6, 6, ..., 0, 2) И я хочу получить максимально возможное 501-е число. - person user975733; 02.10.2011
comment
сначала подумайте над этими вопросами: 1) "What is the range of my real/hidden states? (It may not be 0-8, it could be for example 0-100 or even non-numeric like {'high','low'})" 2) "If I observe a 5, what does that mean about what the real/hidden state?" 3) "If the real state at time=t is [something], what do I think the state at time=t+1 will be? (For example, if x500='high', how probable is it that the bird will switch to flying 'low'?)" - person ninjagecko; 03.10.2011