Скрытая модель Маркова, предсказывающая следующее наблюдение - PullRequest
8 голосов
/ 02 октября 2011

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

1 Ответ

11 голосов
/ 02 октября 2011
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)событий переходов с учетом предыдущего состояния путем ручной маркировки переходов на данных ДНК и вычисления частот)
...