hmmlearn:如何在给定完整观察序列 1:T 的情况下获得时间 T+1 的隐藏状态概率的预测

hmmlearn: how to get the prediction for the hidden state probability at time T+1, given a full observation sequence 1:T

我正在使用 hmmlearn 的 GaussianHMM 来训练具有高斯观测值的隐马尔可夫模型。每个隐藏状态 k 都有其对应的高斯参数:mu_k、Sigma_k。

训练模型后,我想计算以下数量:

P(z_{T+1} = j | x_{1:T}),

其中 j = 1, 2, ... K, K 是隐藏状态的数量。

以上概率基本上是前一步隐藏状态概率,给定完整的观察序列:x_1、x_2、...、x_T,其中x_i, i=1,...,T 用于训练HMM模型。

我阅读了 documentation,但找不到计算此概率的函数。有什么解决方法吗?

你要找的概率只是转移矩阵的一行。转移矩阵的第 n 行给出了在时间 t+1 知道系统在时间 t.

时转移到每个状态的概率

为了知道系统在时间 t 给定一系列观察值 x_1,...,x_t 的状态,可以使用维特比算法,这是该方法的默认设置 predicthmmlearn.

model = hmm.GaussianHMM(n_components=3, covariance_type="full", n_iter=100)  # Viterbi is set by default as the 'algorithm' optional parameter.
model.fit(data)
state_sequence = model.predict(data)
prob_next_step = model.transmat_[state_sequence[-1], :]

我建议你仔细看看这个显示具体使用示例的 documentation

训练好 HMM model 后,您可以获得 t+1 给定 1:t 观察值 X 的状态,如下所示:

import numpy as np
from sklearn.utils import check_random_state
sates = model.predict(X)
transmat_cdf = np.cumsum(model.transmat_, axis=1)
random_sate = check_random_state(model.random_state)
next_state = (transmat_cdf[states[-1]] > random_state.rand()).argmax()

t+1状态根据t状态和transmat_

状态生成