我对一只鸟的运动进行了 500 次观察。我想预测鸟的第 501 次动作是什么。我在网上搜索了一下,我想这可以通过使用 HMM 来完成,但是我在这方面没有任何经验。谁能解释一下用于解决这个问题的算法的步骤?
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 http://en.wikipedia.org/wiki/Forward-backward_algorithm)并且是这种特定类型的树(节点悬挂的简单链)上的和积算法(在贝叶斯网络树和马尔可夫网络树上)的特例。您可以忽略“向后”步骤,因为您不需要它,因为您只关心最后一个状态。
如果 HMM 中的转移概率未知,您必须:
- 执行学习算法,例如 EM(在 HMM 上执行时称为 Baum-Welch)
- 根据领域知识进行天真的猜测(例如,如果您的隐藏状态是 DNA,您可以通过手动标记 DNA 数据上的转换并计算频率来计算给定先前状态的转换事件的频率)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)