我想通过Poisson观察训练一个新的hmm模型,这是我所知道的唯一。 我使用mhsmm软件包进行R。
首先让我感到困惑的是模型的初始化,例如:
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是包含每个序列的观察计数的数组。 尽管如此,最初的模型是完全随机的,但我想这是它的意图,因为它将被重新估计,我是对的吗?
答案 0 :(得分:0)
初始化问题不仅对HMM和HSMM至关重要,而且对于基于期望最大化算法形式的所有学习方法都至关重要。 EM在模型和数据之间的可能性方面收敛到局部最优,但这并不总能保证达到全局最优。
答案 1 :(得分:0)
这一开始可能会让人感到困惑,但 EM算法需要一个点来启动优化。然后它进行一些计算,它可以让你更好地估计自己的初始猜测(如你所说,重新估计)。它无法在没有初始化的情况下自行找到最佳参数。
根据我的经验,没有通用的方法来初始化保证收敛到全局最优的参数,但它将更多地取决于手头的情况。这就是为什么初始化起着至关重要的作用(主要用于排放分配)。
在这种情况下,我过去常常将不同组中的训练数据(例如集合中某个参数的百分位数)分开,估计这些组的参数,然后将它们用作初始参数估计值。 EM算法。基本上,你必须尝试不同的方法,看看哪种方法效果最好。
如果用HMM解决了类似的问题,我建议搜索文献,并尝试初始化方法。