很好的讲解:http://www.hankcs.com/ml/hidden-markov-model.html
以前一直迷惑,这回理解了
java 源码:
python源码:
https://github.com/hmmlearn/hmmlearn
补充些代码有助于理解:
alpha:
def _forward(states, observations, A, B, Pi):
num_states = len(states)
num_observ = len(observations)
alpha = np.zeros((num_observ, num_states))
for i in range(num_states):
alpha[0, i] = Pi[i] * B[i, observations[0]]
for t in range(1, num_observ):
for i in range(num_states):
sum = 0.0
for j in range(num_states):
sum += alpha[t - 1, j] * A[j, i]
alpha[t, i] = sum * B[i, observations[t]]
return alpha
beta:
def _backward(states, observations, A, B):
num_states = len(states)
num_observ = len(observations)
beta = np.zeros((num_observ, num_states))
for i in range(num_states):
beta[num_observ - 1][i] = 1
for t in range(num_observ - 2, 0):
for i in range(num_states):
sum = 0.0
for j in range(num_states):
sum += beta[t + 1][j] * A[i][j] * B[j][observations[t + 1]]
beta[t][i] = sum
return beta
HMM应用讲解:http://www2.coe.pku.edu.cn/tpic/2012121843059445.pdf