隐马尔可夫模型预测下一次观察

use*_*733 8 hidden markov prediction hidden-markov-models

我对鸟的运动进行了500次观察.我想预测这只鸟的第501次运动是什么.我在网上搜索,我想这可以通过使用HMM完成,但我没有任何关于该主题的经验.任何人都可以解释用于解决此问题的算法的步骤吗?

nin*_*cko 12

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
Run Code Online (Sandbox Code Playgroud)

以上称为前向后向算法(http://en.wikipedia.org/wiki/Forward-backward_algorithm),是和产品算法(贝叶斯网络树和马尔可夫网络树)的特例.特殊种类的树(一个挂着节点的简单链).您可以忽略"向后"步骤,因为您不需要它,因为您只关心最后一个状态.

如果HMM中的转换概率未知,则必须:

  • 执行学习算法,例如EM(在HMM上执行时称为Baum-Welch)
  • 根据领域知识做一个天真的猜测(例如,如果您的隐藏状态是DNA,您可以通过手动标记DNA数据的转换和计算频率来计算先前状态下的转换事件的频率)