Hmm 训练与多个观察和 R 中的 mhsmm 包

Hmm training with multiple observations and mhsmm package in R

我想通过泊松观察来训练一个新的 hmm 模型,这是我唯一知道的。 我正在为 R 使用 mhsmm 包。

首先困扰我的是模型的初始化,在示例中是:

J<-3
initial <- rep(1/J,J)
P <- matrix(1/J, nrow = J, ncol = J)
b <- list(lambda=c(1,3,6))
model = hmmspec(init=initial, trans=P, parms.emission=b,dens.emission=dpois.hsmm)

在我的例子中,我没有排放分布参数的初始值,这就是我想要估计的。怎么样?

其次:如果我只有观察结果,我如何将它们传递给

h1 = hmmfit(list_of_observations, model ,mstep=mstep.pois)

为了获得训练好的模型? list_of_observations,在示例中,包含状态向量、观察值之一和观察序列长度之一,通常通过模型模拟获得:

list_of_observations = simulate(model, N, rand.emis = rpois.hsmm)

编辑:发现这个老问题的答案部分解决了我的问题: MHSMM package in R-Input Format? 这两行起到了作用:

train <- list(x = data.df$sequences, N = N)
class(train) <- "hsmm.data"

其中 data.df$sequences 是包含所有观察序列的数组,N 是包含每个序列的观察计数的数组。 尽管如此,初始模型是完全随机的,但我想这就是它的本意,因为它将被重新估计,对吗?

初始化问题不仅对于 HMM 和 HSMM 很关键,对于所有基于期望最大化算法形式的学习方法也是如此。 EM 在模型和数据之间的似然性方面收敛到局部最优值,但这并不总是保证达到全局最优值。

  • 目标:找到排放分布的估计值,但它也适用于初始概率转换矩阵
  • 算法:需要初始估计以从
  • 开始优化
  • : 必须提供初始"guess"参数

乍一看这似乎令人困惑,但 EM 算法需要一个点来开始 优化。然后它会进行一些计算,并让您更好地估计自己的初始猜测(如您所说,重新估计)。它无法在不初始化的情况下自行找到最佳参数。

根据我的经验,没有通用的方法来初始化保证收敛到全局最优的参数,但这更多地取决于手头的情况。这就是为什么初始化起着至关重要的作用(主要用于排放分布)。

我以前在这种情况下所做的是将训练数据分成不同的组(例如集合中某个参数的百分位数),估计这些组上的参数,然后将它们用作初始参数估计对于EM算法。基本上,你必须尝试不同的方法,看看哪种方法最有效。

如果类似的问题已经用 HMM 解决了,我建议搜索文献,并尝试他们的初始化方法。